---
title: "Create a new Payment Link"
method: POST
path: "/api/v1/payin"
tags: ["Payment Links"]
---

# Create a new Payment Link

`POST /api/v1/payin`

## Request

- Base URL: `https://api.crossborder.jiopay.co.in`
- URL: `https://api.crossborder.jiopay.co.in/api/v1/payin`
- Auth: HTTP bearer

Create a shareable URL for a hosted payment page in one of two ways:

- **Payment link without quote** — specify the amount, currency, expiry and payment methods inline (`PaymentLink`).
- **Payment link with quote** — pass a `quote_id` from `POST /quotes` (with `resource: payin`) to bind the payment link to a quote. When supplied, the quote is the single source of truth for amount, currency, payment method and expiry; the locked fields (`amount`, `currency`, `expires_at`, `price_id`, `payment_methods`) must not be sent (`CreatePaymentLinkWithQuoteRequest`). When a `quote_id` is supplied, the payment link's expiry is set to the quote's expiry.

The request variant is selected by the presence of `quote_id`.

## Request body

- union
  - PaymentLink: Payment link without a quote. Amount, currency, expiry and payment methods are specified inline.
    - `customer_id` string, required: The unique identifier of customer linked to payment_link.
    - `document_id` string: The unique identifier of document linked to payment_link. This document entity should contain the required documents to process incoming payments. Refer to the Document entity for more details.
    - `payment_methods` PaymentMethod[]: Array of payment methods that should be available for the customer on the checkout page. This field allows you to control which payment options your customers can use to complete the payment. You can specify one or multiple payment methods in the array.
    - `currency` string, required: The currency code in ISO 4217 format. Supported currencies: USD, EUR and GBP.
    - `amount` number, required: The amount you want to receive, a positive integer representing the smallest currency unit. For example, if the amount is $299.00, then pass 29900 in this field. In the case of three decimal currencies, such as KWD, BHD and OMR, to represent an amount of 295.991, pass the value as 295990. And in the case of zero decimal currencies such as JPY, for amount ¥295, pass the value as 295.
    - `purpose_code` string, required: Purpose code for why you want to receive this payment
    - `invoice_number` string: Number/Id of the invoice submitted with payment_link.
    - `invoice_description` string: Description about the invoice submitted with payment_link
    - `reference_number` string: Optional identifier to be sent for reconciliations
    - `expires_at` string, required: Date when the payment_link will expire. Expiry can not be less than or equal to current date and can be upto 6 months in future.
    - `invoice_amount` number: The amount in cents for which invoice was generated. It can be more than the amount requested in this payment_link
    - `notify_customer` boolean: Whether to notify the customer via email when the payment link is created. Defaults to true. Set to false to suppress the notification email.
    - `reminder_frequency` number: The frequency at which you want to remind customers, valid values are 1 (remind everyday), 2 (remind every alternate day), 7 (remind every week), 14 (remind every alternate week).
    - `price_id` string: The unique identifier of 'Price' entity linked to the payment link. This is the referral fee for this payment link. Note: price_id is only applicable for platform businesses.
    - `product` Product: Details of the product that the payment is related to.
      - `name` string, required: Name of the product
      - `description` string: Description of the product
    - `notes` Notes, nullable: Optional key-value pairs for attaching custom metadata (e.g. invoice references, project codes). Keys must be strings and cannot collide with reserved field names. If your business has custom field rules configured (e.g. enum constraints), values are validated against those rules. Each key appears as a separate column in CSV report exports, with corresponding values populating the rows.
    - `bank_account_details` BankAccountDetailsRequest: Optional bank account details to associate with the customer for this payment link. When provided, the bank account will be linked to the customer and associated with this payment link. Either bic_primary or bic_secondary must be provided when including this field.
      - `account_number` string, required: The bank account number
      - `bic_primary` string: SWIFT code for the bank account. Will be null if not provided in the request.
      - `bic_secondary` string: Local routing code for the bank account like IFSC. Will be null if not provided in the request.
      - `bank_customer_id` string: Optional bank customer identifier provided by the bank
  - CreatePaymentLinkWithQuoteRequest: Payment link bound to a quote. The quote is the single source of truth for amount, currency, payment method and expiry — do not send amount, currency, expires_at, price_id or payment_methods.
    - `quote_id` string, required: ID of a quote (from POST /quotes with resource: "payin") to bind this payment link to. When supplied, the quote is the single source of truth for amount, currency, payment method, and expiry.
    - `customer_id` string, required: The unique identifier of customer linked to payment_link.
    - `purpose_code` string, required: Purpose code for why you want to receive this payment.
    - `document_id` string: The unique identifier of document linked to payment_link. This document entity should contain the required documents to process incoming payments. Refer to the Document entity for more details.
    - `invoice_number` string: Number/Id of the invoice submitted with payment_link.
    - `invoice_description` string: Description about the invoice submitted with payment_link.
    - `invoice_amount` number: The amount in cents for which invoice was generated. It can be more than the amount requested in this payment_link.
    - `reference_number` string: Optional identifier to be sent for reconciliations.
    - `notify_customer` boolean: Whether to notify the customer via email when the payment link is created. Defaults to true. Set to false to suppress the notification email.
    - `reminder_frequency` number: The frequency at which you want to remind customers, valid values are 1 (remind everyday), 2 (remind every alternate day), 7 (remind every week), 14 (remind every alternate week).
    - `product` Product: Details of the product that the payment is related to.
      - `name` string, required: Name of the product
      - `description` string: Description of the product
    - `notes` Notes, nullable: Optional key-value pairs for attaching custom metadata (e.g. invoice references, project codes). Keys must be strings and cannot collide with reserved field names. If your business has custom field rules configured (e.g. enum constraints), values are validated against those rules. Each key appears as a separate column in CSV report exports, with corresponding values populating the rows.
    - `bank_account_details` BankAccountDetailsRequest: Optional bank account details to associate with the customer for this payment link. When provided, the bank account will be linked to the customer and associated with this payment link. Either bic_primary or bic_secondary must be provided when including this field.
      - `account_number` string, required: The bank account number
      - `bic_primary` string: SWIFT code for the bank account. Will be null if not provided in the request.
      - `bic_secondary` string: Local routing code for the bank account like IFSC. Will be null if not provided in the request.
      - `bank_customer_id` string: Optional bank customer identifier provided by the bank

## Response `201`

Created

- PaymentLinkResponse
  - `id` string: The unique identifier for the payment link.
  - `customer_id` string: The unique identifier of customer linked to payment_link.
  - `document_id` string: The unique identifier of document linked to payment_link. This document entity should contain the required documents to process incoming payments. Refer to the Document entity for more details.
  - `status` 'active' | 'paid' | 'failed' | 'action_required' | 'cancelled' | 'partially_paid' | 'under_review' | 'expired': The status of the payment_link.
  - `payment_methods` PaymentMethod[]: Array of payment methods available for the customer on the checkout page.
  - `currency` string: The currency code in ISO 4217 format. Supported currencies: USD, EUR and GBP.
  - `amount` number: The amount you want to receive, a positive integer representing the smallest currency unit. For example, if the amount is $299.00, then pass 29900 in this field. In the case of three decimal currencies, such as KWD, BHD and OMR, to represent an amount of 295.991, pass the value as 295990. And in the case of zero decimal currencies such as JPY, for amount ¥295, pass the value as 295.
  - `purpose_code` string: Purpose code for why you want to receive this payment
  - `invoice_number` string: Number/Id of the invoice submitted with payment_link.
  - `invoice_description` string: Description about the invoice submitted with payment_link
  - `reference_number` string: Optional identifier to be sent for reconciliations
  - `expires_at` string: Date when the payment_link will expire. Expiry can not be less than or equal to current date and can be upto 6 months in future.
  - `last_reminder_sent_at` string: Last time when the customer was reminded to complete the payment by visiting the link
  - `invoice_amount` number: The amount in cents for which invoice was generated. It can be more than the amount requested in this payment_link
  - `payment_link` string: Sharable link which should be shared with the customer you want to receive money from. This link gets generated only after the payin has been reviewed and moved to in_progress
  - `notify_customer` boolean: Whether to notify the customer via email when the payment link is created. Defaults to true. Set to false to suppress the notification email.
  - `reminder_frequency` number: The frequency at which you want to remind customers, valid values are 1 (remind everyday), 2 (remind every alternate day), 7 (remind every week), 14 (remind every alternate week).
  - `price_id` string: The unique identifier of 'Price' entity linked to the payment link. This is the referral fee for this payment link. Note: price_id is only applicable for platform businesses.
  - `product` Product: Details of the product that the payment is related to.
    - `name` string, required: Name of the product
    - `description` string: Description of the product
  - `created_at` string: Timestamp representing when the payment_link was created
  - `updated_at` string: Timestamp representing when the payment_link was last updated
  - `notes` Notes, nullable: Optional key-value pairs for attaching custom metadata (e.g. invoice references, project codes). Keys must be strings and cannot collide with reserved field names. If your business has custom field rules configured (e.g. enum constraints), values are validated against those rules. Each key appears as a separate column in CSV report exports, with corresponding values populating the rows.
  - `bank_account_details` BankAccountDetailsResponse: Bank account details associated with the customer for this payment link.
    - `account_number` string, required: The bank account number
    - `bic_primary` string, nullable: SWIFT code for the bank account. Will be null if not provided in the request.
    - `bic_secondary` string, nullable: Local routing code for the bank account like IFSC. Will be null if not provided in the request.
    - `bank_customer_id` string, nullable: Optional bank customer identifier provided by the bank
  - `rfi_documents` RfiDocument[]: List of required documents for RFI (Request for Information). This field is only present when the payment link status is 'action_required', indicating that sanction screening has been triggered and additional documents are required to proceed with the payment link.
    - `rfi_doc_id` string, required: Unique identifier for the required RFI document
    - `name` string, required: Name/type of the required document

## Other responses

- `400`: Bad Request

---

[API](https://skmtc.dev/jiopay/apis/cross-border.md) - [All operations](https://skmtc.dev/jiopay/apis/cross-border/llms.txt) - [OpenAPI document](https://skmtc.dev/jiopay/apis/cross-border/revisions/b3e97f5918d4?raw)
