> ## Documentation Index
> Fetch the complete documentation index at: https://razorpay-881012b3.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Collect a Payment

> Collect a payment using the Razorpay API.

<div style={{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"0.35rem 0.9rem",border:"1px solid rgba(128,128,128,0.28)",borderRadius:"0.5rem",padding:"0.45rem 0.75rem",margin:"0 0 1.25rem",fontSize:"0.875rem"}}>
  <span style={{fontWeight:600}}>Available in</span>
  <span>🇮🇳 India</span>
</div>

UPI allows a customer or a payee to request a payment from another person or entity. This API is the same as the make payments API. The type of payment changes to collect and no credentials are required to be captured by the customer requesting the payment. Use this endpoint to collect a payment.

<RequestExample>
  ```bash Curl theme={null}
  curl -X POST 'api.rzp.<bank>.com/v1/payments/collect' \
       -u [YOUR_KEY_ID]:[YOUR_SECRET] \
  -H "Content-type: application/json" \
  -H "x-device-fingerprint: <device_fingerprint>" \
  -H "x-device-fingerprint-timestamp: 1496918882000" \
  -H "x-customer-reference: customer-id-from-customer" \
  -d '{
    "reference_id": "RSKwpINfSkdEvtdxf",
    "upi_initiation_mode": "00",
    "upi_purpose_code": "00",
    "upi_reference_url": "https://www.test.com",
    "upi_reference_category": "00",
    "device": {
      "geocode": "1234.1213",
      "ip": "198.1.1.1"
    },
    "currency": "INR",
    "amount": 100,
    "description": "UPI transaction",
    "payer": {
      "vpa": "7262093972.stage@rzp"
    },
    "payees": [
      {
        "vpa": "9560137963.stage@rzp"
      }
    ],
    "expire_at": 150603365
  }'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "entity":"upi.payment",
    "upi_transaction_id":"RZPc2ed455b797e4add8392110cfc528acc",
    "reference_id":"ord_somfv432nsa",
    "upi_customer_reference_number":"804813039157",
    "upi_reference_url":"https://www.test.com",
    "upi_reference_category":"00",
    "upi_initiation_mode":"00",
    "upi_purpose_code":"00",
    "currency":"INR",
    "amount":10024,
    "type":"pay | collect",
    "description":"flight tickets",
    "payer":{
      "vpa":"gaurav.kumar@exampleupi",
      "fundsource":{
        "ifsc":"AXIS0000058",
        "masked_account_number":"XXXXXXXXXXX3000"
      },
      "name":"Gaurav Kumar",
      "mcc":"0000",
      "upi_response_code":"00",
      "upi_reversal_response_code":"string"
    },
    "payees":[
      {
        "vpa":"acme.corp@rzp",
        "fundsource":{
          "ifsc":"HDFC0000058",
          "masked_account_number":"XXXXXXXXXXX6000"
        },
        "name":"AcmeCorp Pvt. Ltd.",
        "mcc":"6765",
        "upi_response_code":"00",
        "upi_reversal_response_code":"string"
      }
    ],
    "status":"initiated| success | failed",
    "created_at":"1722317078",
    "expire_at":"1722317078"
  }
  ```
</ResponseExample>

## Request Parameters

<ParamField body="reference_id" type="string">
  Indicates the transaction ID used by merchants for their reference. It is used at the business level and not in the UPI ecosystem. This value should be alphanumeric and between 1 and 35 characters.
</ParamField>

<ParamField body="upi_initiation_mode" type="enum">
  Indicates the 2-digit code defined by NPCI present in the intent URL or QR codes. Possible values:

  * `00`: Default - When no specific code is assigned or for general default scenarios.
  * `01`: QR Code - For making payments by scanning a standard QR code.
  * `02`: Secure QR Code - For payments that require additional security with QR codes.
  * `03`: Bharat QR Code - For interoperable payments across various payment networks using Bharat QR.
  * `04`: Intent - For payments initiated by an intent from an application or browser.
  * `05`: Secure Intent - For payments initiated by a secure intent from an app or browser.
  * `06`: NFC (Near Field Communication) - For contactless payments using NFC technology.
  * `07`: BLE (Bluetooth) - For payments made through Bluetooth Low Energy technology.
  * `08`: UHF (Ultra High Frequency) - For payments made using UHF technology, typically for toll payments.
  * `09`: Aadhaar - For payments authenticated using an Aadhaar number and biometric verification.
  * `10`: SDK (Software Development Kit) - For payments initiated through an SDK embedded in an app.
  * `11`: UPI-Mandate - For setting up recurring payments or mandates using UPI.
  * `12`: FIR (Foreign Inward Remittance) - For receiving remittances from foreign countries.
  * `13`: QR Mandate - For setting up recurring payments using a QR code.
  * `14`: BBPS - For making bill payments through the Bharat Bill Payment System.
</ParamField>

<ParamField body="upi_purpose_code" type="enum">
  The 2-digit code defined by NPCI present in the intent URL or QR codes. Possible values:

  * `01`: SEBI
  * `02`: AMC
  * `03`: Travel
  * `04`: Hospitality
  * `05`: Hospital
  * `06`: Telecom
  * `07`: Insurance
  * `08`: Education
  * `09`: Gifting
  * `10`: BBPS
  * `11`: Global UPI
  * `12`: Metro ATM QR
  * `13`: Non-metro ATM QR
  * `14`: Standing Instruction
  * `15`: Corporate disbursement
</ParamField>

<ParamField body="upi_reference_url" type="string">
  Indicates a URL that, upon clicking, provides the customer with further transaction details such as bill details, bill copy, order copy, ticket details, and so on. When used, this URL should be related to the particular transaction and not be used to send unsolicited information irrelevant to the transaction.
</ParamField>

<ParamField body="upi_reference_category" type="string" required>
  The 2-digit code defined by NPCI present in the intent URL or QR codes. Possible values:

  * `00`: NULL
  * `01`: Advertisement
  * `02`: Invoice
</ParamField>

<ParamField body="device" type="object" required>
  The device details.
</ParamField>

<ParamField body="geocode" type="string">
  The location coordinates of the device.
</ParamField>

<ParamField body="ip" type="string">
  The IP address of the device.
</ParamField>

<ParamField body="currency" type="string" required>
  The currency of the amount. Here, it is `INR`.
</ParamField>

<ParamField body="amount" type="integer" required>
  The amount in paise.
</ParamField>

<ParamField body="description" type="string">
  The description of the payment.
</ParamField>

<ParamField body="payer" type="object" required>
  The payer details.
</ParamField>

<ParamField body="vpa" type="string">
  The VPA of the payer.
</ParamField>

<ParamField body="payees" type="array" required>
  The payee details.
</ParamField>

<ParamField body="vpa" type="string">
  The VPA of the payee.
</ParamField>

## Response Parameters

<ResponseField name="entity" type="string">
  The entity type. Here, it is `upi.payment`.
</ResponseField>

<ResponseField name="reference_id" type="string">
  Indicates the transaction ID used by merchants for their reference. It is used at the business level and not in the UPI ecosystem. This value should be alphanumeric and between 1 and 35 characters.
</ResponseField>

<ResponseField name="upi_reference_url" type="string">
  Indicates a URL that, upon clicking, provides the customer with further transaction details such as bill details, bill copy, order copy, ticket details, and so on. When used, this URL should be related to the particular transaction and not be used to send unsolicited information irrelevant to the transaction.
</ResponseField>

<ResponseField name="upi_reference_category" type="string">
  The 2-digit code defined by NPCI present in the intent URL or QR codes. Possible values:

  * `00`: NULL
  * `01`: Advertisement
  * `02`: Invoice
</ResponseField>

<ResponseField name="upi_initiation_mode" type="enum">
  Indicates the 2-digit code defined by NPCI present in the intent URL or QR codes. Possible values:

  * `00`: Default - When no specific code is assigned or for general default scenarios.
  * `01`: QR Code - For making payments by scanning a standard QR code.
  * `02`: Secure QR Code - For payments that require additional security with QR codes.
  * `03`: Bharat QR Code - For interoperable payments across various payment networks using Bharat QR.
  * `04`: Intent - For payments initiated by an intent from an application or browser.
  * `05`: Secure Intent - For payments initiated by a secure intent from an app or browser.
  * `06`: NFC (Near Field Communication) - For contactless payments using NFC technology.
  * `07`: BLE (Bluetooth) - For payments made through Bluetooth Low Energy technology.
  * `08`: UHF (Ultra High Frequency) - For payments made using UHF technology, typically for toll payments.
  * `09`: Aadhaar - For payments authenticated using an Aadhaar number and biometric verification.
  * `10`: SDK (Software Development Kit) - For payments initiated through an SDK embedded in an app.
  * `11`: UPI-Mandate - For setting up recurring payments or mandates using UPI.
  * `12`: FIR (Foreign Inward Remittance) - For receiving remittances from foreign countries.
  * `13`: QR Mandate - For setting up recurring payments using a QR code.
  * `14`: BBPS - For making bill payments through the Bharat Bill Payment System.
</ResponseField>

<ResponseField name="upi_purpose_code" type="enum">
  The 2-digit code defined by NPCI present in the intent URL or QR codes. Possible values:

  * `01`: SEBI
  * `02`: AMC
  * `03`: Travel
  * `04`: Hospitality
  * `05`: Hospital
  * `06`: Telecom
  * `07`: Insurance
  * `08`: Education
  * `09`: Gifting
  * `10`: BBPS
  * `11`: Global UPI
  * `12`: Metro ATM QR
  * `13`: Non-metro ATM QR
  * `14`: Standing Instruction
  * `15`: Corporate disbursement
</ResponseField>

<ResponseField name="device" type="object">
  The device details.
</ResponseField>

<ResponseField name="geocode" type="string">
  The location coordinates of the device.
</ResponseField>

<ResponseField name="ip" type="string">
  The IP address of the device.
</ResponseField>

<ResponseField name="currency" type="string">
  The currency of the amount. Here, it is `INR`.
</ResponseField>

<ResponseField name="amount" type="integer">
  The amount in paise.
</ResponseField>

<ResponseField name="type" type="string">
  The type of the payment. Possible values:

  * `pay`
  * `collect`
</ResponseField>

<ResponseField name="description" type="string">
  The description of the payment.
</ResponseField>

<ResponseField name="payer" type="object">
  The payer details.
</ResponseField>

<ResponseField name="vpa" type="string">
  The VPA of the payer.
</ResponseField>

<ResponseField name="payees" type="object">
  The payee details.
</ResponseField>

<ResponseField name="vpa" type="string">
  The VPA of the payee.
</ResponseField>

<ResponseField name="expire_at" type="integer">
  The UNIX timestamp of the collect request.
</ResponseField>
