# Create Payment Link

**Method:** `POST`

**Path:** `/api/pay/v1/paymentlink`

**Category:** Payment Links

**Authentication:** Required

## Description

Create a payment link for collecting payments. Ensure that your Merchant ID
is configured for Pay by Link, split payments, and pre-authorization before
creating a payment link.


## Request Body

Content-Type: `application/json`

- `amount` (`object`) **required** — Monetary amount with currency.
  - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
  - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

- `description` (`string`) — Description corresponding to the payment.
- `expire_by` (`string`) — The desired expiration timestamp for the payment link (ISO 8601 UTC). Must be set within a maximum of 180 days from the current date. 
- `allowed_payment_methods` (`string[]`) — The type of payment methods you want to offer your customers.
- `pre_auth` (`string`) — The pre-authorization type. Possible values: "false" (default), "true". 
- `is_mcc_transaction` (`string`) — Identifies the Payment Link type. "true": The payment link is processed for a MCC transaction. "false" (default): The payment link is processed for a regular transaction. 
- `failure_callback_url` (`string`) — URL specifically used to redirect customers to a failure page. If not provided, customers will be redirected to the callback_url for both successful and failed transactions. 
- `merchant_payment_link_reference` (`string`) **required** — **Idempotency Key.** Unique identifier for the payment link request. Duplicate requests with the same `merchant_payment_link_reference` will return the existing payment link instead of creating a new one.
- `customer` (`object`) — Customer information for payment link.
  - `email_id` (`string`) — Customer's email address.
  - `first_name` (`string`) — Customer's first name.
  - `last_name` (`string`) — Customer's last name.
  - `customer_id` (`string`) — Unique identifier of the customer in the Pine Labs Online database.
  - `mobile_number` (`string`) — Customer's mobile number.
  - `country_code` (`string`) — Country code of the mobile number.
  - `billing_address` (`object`) — Address details for payment link.
    - `address1` (`string`) — Address line 1.
    - `address2` (`string`) — Address line 2.
    - `address3` (`string`) — Address line 3.
    - `pincode` (`string`) — Pincode of the address.
    - `city` (`string`) — City of the address.
    - `state` (`string`) — State of the address.
    - `country` (`string`) — Country of the address.

  - `shipping_address` (`object`) — Address details for payment link.
    - `address1` (`string`) — Address line 1.
    - `address2` (`string`) — Address line 2.
    - `address3` (`string`) — Address line 3.
    - `pincode` (`string`) — Pincode of the address.
    - `city` (`string`) — City of the address.
    - `state` (`string`) — State of the address.
    - `country` (`string`) — Country of the address.

  - `merchant_customer_reference` (`string`) — Unique identifier of the customer for the request.
  - `gstin` (`string`) — Customer's GSTIN.

- `product_details` (`PaymentLinkProductDetail[]`) — An array of objects that contains the list of products associated with the payment.
  - `product_code` (`string`) — Unique product identifier.
  - `product_amount` (`object`) — Monetary amount with currency.
    - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
    - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

  - `product_coupon_discount_amount` (`object`) — Monetary amount with currency.
    - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
    - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.


- `cart_coupon_discount_amount` (`object`) — Monetary amount with currency.
  - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
  - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

- `merchant_metadata` (`object`) — Arbitrary key-value pairs for merchant use. Maximum 10 pairs, 256 characters each.
- `split_info` (`object`) — Split settlement information.
  - `split_type` (`string`) — Type of split.
  - `split_details` (`PaymentLinkSplitDetail[]`) — An array of objects that contains the split details.
    - `split_merchant_id` (`string`) — Unique identifier of your partner merchant in the Pine Labs Online database.
    - `merchant_settlement_reference` (`string`) — Unique identifier entered while creating an order in split.
    - `split_settlement_id` (`string`) — Unique identifier of the split settlement in the Pine Labs Online database.
    - `amount` (`object`) — Monetary amount with currency.
      - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
      - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.

    - `on_hold` (`boolean`) — Indicate whether the settlement is on hold for future release. true: The settlement is placed on hold. false: The settlement is processed immediately. 
    - `status` (`RELEASED | HOLD`) — Split Settlement status.
    - `updated_at` (`string`) — ISO 8601 UTC Timestamp when the split order was created.


- `account_details` (`object`) — Customer's bank account details.
  - `bank_details` (`object`) — Bank details for the customer.
    - `account_number` (`string`) — Customer's bank account number.
    - `ifsc_code` (`string`) — Customer's bank IFSC code.
    - `bank_name` (`string`) — Customer's account holding bank name.


- `callback_url` (`string`) — URL to which your customers are redirected based on the order or product details, leading them to either a success or failure page. 
- `part_payment` (`boolean`) — Indicates whether the order is for part payments or full. true: The order created is for a part payment. false: The order is created for a full payment. 
- `cart_details` (`object`) — Cart details. If provided, cart information will be displayed during checkout.
  - `items` (`PaymentLinkCartItem[]`) — Array of cart items.
    - `product_code` (`string`) — Unique product identifier.
    - `product_amount` (`object`) — Monetary amount with currency.
      - `value` (`integer`) **required** — Amount in the smallest currency unit (e.g., paisa for INR).
      - `currency` (`string`) **required** — Three-letter ISO 4217 currency code.




### Example Request

```json
{
  "amount": {
    "value": 50000,
    "currency": "INR"
  },
  "description": "Payment for Order1",
  "expire_by": "2024-10-28T13:26:06.909140Z",
  "allowed_payment_methods": [
    "CARD",
    "UPI"
  ],
  "pre_auth": "false",
  "is_mcc_transaction": "false",
  "failure_callback_url": "https://sample-failure-callback-url",
  "merchant_payment_link_reference": "1234567890",
  "customer": {
    "email_id": "kevin.bob@example.com",
    "first_name": "Kevin",
    "last_name": "Bob",
    "customer_id": "123456",
    "mobile_number": "9876543210",
    "country_code": "91",
    "billing_address": {
      "address1": "10 Downing Street Westminster London",
      "address2": "Oxford Street Westminster London",
      "address3": "Baker Street Westminster London",
      "pincode": "51524036",
      "city": "Westminster",
      "state": "Westminster",
      "country": "London"
    },
    "shipping_address": {
      "address1": "10 Downing Street Westminster London",
      "address2": "Oxford Street Westminster London",
      "address3": "Baker Street Westminster London",
      "pincode": "51524036",
      "city": "Westminster",
      "state": "Westminster",
      "country": "London"
    },
    "merchant_customer_reference": "customer_reference",
    "gstin": "27AAEPM1234C1Z5"
  },
  "product_details": [
    {
      "product_code": "redmi_10",
      "product_amount": {
        "value": 50000,
        "currency": "INR"
      },
      "product_coupon_discount_amount": {
        "value": 50000,
        "currency": "INR"
      }
    }
  ],
  "cart_coupon_discount_amount": {
    "value": 50000,
    "currency": "INR"
  },
  "merchant_metadata": {
    "clientId": "DD",
    "transactionReferenceNo": "pine-1223",
    "merchantId": "1234",
    "tid": "9000990",
    "acquirerName": "HDFC_FSS",
    "isOfferDisplayRequired": "true",
    "OfferData": "UHJvZHVjdF9Db2RlPSIgIiZQcm9kdWN0X05hbWU9IiImUGF5bWVudF9Nb2RlPUJhbmsgRU1JJkNhcmRfVHlwZT1EZWJpdCBDYXJkJkJhbmtfTmFtZT1IREZDIERlYml0JkVNSV9UZW51cmU9NiZJbnRlcmVzdF9SYXRlPTkuMCZJbnRlcmVzdF9BbW91bnQ9MTM4MTQwJk1vbnRobHlfSW5zdGFsbG1lbnQ9ODk0NjkwJkF1dGhvcml6YXRpb25fQW1vdW50PTEwMCZMb2FuX2Jvb2tpbmdfQW1vdW50PTUyMzAwMDAmSW50ZXJlc3RfQ2FzaGJhY2tfQW1vdW50PTAmSW50ZXJlc3RfQ2FzaGJhY2tfVHlwZT1EZWZlcnJlZCZBZGRpdGlvbmFsX0Nhc2hiYWNrPSIiJkFkZGl0aW9uYWxfQ2FzaGJhY2tfVHlwZT0iIiZEZXNjcmlwdGlvbj1CYW5rIEVNSSZQcm9kdWN0X1ZhbHVlPTUyMzAwMDA",
    "tenant_id": "PGATPOS",
    "is_offer_validation_required": "true"
  },
  "split_info": {
    "split_type": "AMOUNT",
    "split_details": [
      {
        "split_merchant_id": "111302",
        "merchant_settlement_reference": "5206071124-aa-mpLhF3-cc-l",
        "split_settlement_id": "71124-aa-mpLhF3-cc-l",
        "amount": {
          "value": 50000,
          "currency": "INR"
        },
        "on_hold": true,
        "status": "RELEASED",
        "updated_at": "2024-07-09T07:57:08.022Z"
      }
    ]
  },
  "account_details": {
    "bank_details": {
      "account_number": "500000004545",
      "ifsc_code": "BANK0000123",
      "bank_name": "Example Bank"
    }
  },
  "callback_url": "https://sample-callback-url",
  "part_payment": true,
  "cart_details": {
    "items": [
      {
        "product_code": "xyz",
        "product_amount": {
          "value": 50000,
          "currency": "INR"
        }
      }
    ]
  }
}
```

## Responses

- `201` — Payment link created successfully.
- `500` — 

---

Reference: https://localhost:3000/api/payment-links/create-payment-link
