Capture a Payment
POST/v1/payments/:id/captureClick to copy
Use this endpoint to change the payment status from authorized to captured. Attempting to capture a payment whose status is not authorized will produce an error.
- After the customer's bank authorises the payment, you must verify if the authorised amount deducted from the customer's account is the same as the amount paid by the customer on your website or app.
- You can of payments on the Dashboard.
Is this page helpful?
Curl
change language
change language
1curl -u [YOUR_KEY_ID]:[YOUR_KEY_SECRET] \2-H 'content-type: application/json' \3-X POST https://api.razorpay.com/v1/payments/pay_29QQoUBi66xm2f/capture \4-d '{5"amount": 1000,6"currency": ""7}'
Success
Failure
1{2"id": "pay_LPpN6ssnoEVNv0",3"entity": "payment",4"amount": 1000,5"currency": "",6"status": "captured",7"order_id": null,8"invoice_id": null,9"international": false,10"method": "card",11"amount_refunded": 0,12"refund_status": null,13"captured": true,14"description": "Test Transaction",15"card_id": "card_LPpN6ubeosLH4g",16"card": {17"id": "card_LPpN6ubeosLH4g",18"entity": "card",19"name": "",20"last4": "0153",21"network": "Visa",22"type": "debit",23"issuer": null,24"international": false,25"sub_type": "consumer",26"token_iin": null27},28"bank": null,29"wallet": null,30"email": "nur.aisyah@example.com",31"contact": "+60123456789",32"notes": {33"address": "Corporate Office"34},35"fee": 100,36"tax": 0,37"error_code": null,38"error_description": null,39"error_source": null,40"error_step": null,41"error_reason": null,42"acquirer_data": {43"auth_code": "878694"44},45"created_at": 167845263546}
Path Parameters
id *
stringUnique identifier of the payment to be captured.
Request Parameters
amount *
integer The amount to be captured (should be equal to or less than the order amount, in the smallest unit of the currency). While creating a capture request, in the amount field, enter only the amount associated with the order that is stored in your database.
Handy Tips
If the payment amount is less than the authorised total order amount (partial capture), please contact our
for assistance.Partial capture is available only for card payment and on manual payment capture mode.
currency *
stringISO code of the currency in which the payment was made.
Response Parameters
idstringUnique identifier of the payment.
entitystringIndicates the type of entity.
amountintegerThe payment amount in currency subunits. For example, for an amount of RMÂ 1.00 enter 100.
currencystringThe currency in which the payment is made.
statusstringThe status of the payment. Possible values:
createdauthorizedcapturedrefundedfailed
methodstringThe payment method used for making the payment. Possible values:
cardfpxwallet
order_idstringOrder id, if provided. Know more about
.descriptionstringDescription of the payment, if any.
internationalbooleanIndicates whether the payment is done via an international card or a domestic one. Possible values:
true: Payment made using international card.false: Payment not made using international card.
refund_statusstringThe refund status of the payment. Possible values:
nullpartialfull
amount_refundedinteger The amount refunded in currency subunits. For example, if amount_refunded = 100, it is equal to RMÂ 1.00.
capturedbooleanIndicates if the payment is captured. Possible values:
true: Payment has been captured.false: Payment has not been captured.
emailstringCustomer email address used for the payment.
contactstringCustomer contact number used for the payment.
feeintegerFee (including tax) charged by Razorpay Curlec.
taxintegerTax charged for the payment.
error_codestring Error that occurred during payment. For example, BAD_REQUEST_ERROR.
error_descriptionstring Description of the error that occurred during payment. For example, Payment processing failed because of incorrect OTP.
error_sourcestring The point of failure. For example, customer.
error_stepstring The stage where the transaction failure occurred. The stages can vary depending on the payment method used to complete the transaction. For example, payment_authentication.
error_reasonstring The exact error reason. For example, incorrect_otp.
notesjson objectContains user-defined fields, stored for reference purposes.
created_atintegerTimestamp, in UNIX format, on which the payment was created.
card_idstringThe unique identifier of the card used by the customer to make the payment.
Show child parameters (3)
upiobject Details of the UPI payment received. Only applicable if method is upi.
Show child parameters (3)
bankstring The 4-character bank code which the customer's account is associated with. For example, UTIB for Axis Bank.
vpastring The customer's VPA (Virtual Payment Address) or UPI id used to make the payment. For example, gauravkumar@exampleupi.
walletstring The name of the wallet used by the customer to make the payment. For example, payzapp.
acquirer_dataarrayA dynamic array consisting of a unique reference numbers.
Show child parameters (3)
cardobjectDetails of the card used to make the payment.
Show child parameters (8)
bankstringThe 4-character bank code which the customer's account is associated with.
walletstring The name of the wallet used by the customer to make the payment. For example, grabpay.
acquirer_dataarrayA dynamic array consisting of a unique reference number.
Show child parameters (2)
Errors
The API <key/secret> provided is invalid.
Error Status: 4xx
The API credentials passed in the API call differ from the ones generated on the Dashboard.
Solution
Capture amount must be equal to the amount authorized.
Error Status: 400
- The capture amount is incorrect.
- The amount you are trying to capture differs from the authorised amount .
Solution
Your payment has been declined as the order is already paid. Please initiate the payment with a new order.
Error Status: 400
This payment has already been captured.
Solution
The id provided does not exist
Error Status: 400
The payment_id provided is incorrect.
Solution
The requested URL was not found on the server.
Error Status: 400
The URL is incorrect.
Solution
The amount must be an integer
Error Status: 400
The amount specified is incorrect.
Solution
Capture a Payment
POST/v1/payments/:id/captureClick to copy
Use this endpoint to change the payment status from authorized to captured. Attempting to capture a payment whose status is not authorized will produce an error.
- After the customer's bank authorises the payment, you must verify if the authorised amount deducted from the customer's account is the same as the amount paid by the customer on your website or app.
- You can of payments on the Dashboard.
Is this page helpful?
Path Parameters
id *
stringUnique identifier of the payment to be captured.
Request Parameters
amount *
integer The amount to be captured (should be equal to or less than the order amount, in the smallest unit of the currency). While creating a capture request, in the amount field, enter only the amount associated with the order that is stored in your database.
Handy Tips
If the payment amount is less than the authorised total order amount (partial capture), please contact our
for assistance.Partial capture is available only for card payment and on manual payment capture mode.
currency *
stringISO code of the currency in which the payment was made.
Response Parameters
idstringUnique identifier of the payment.
entitystringIndicates the type of entity.
amountintegerThe payment amount in currency subunits. For example, for an amount of RMÂ 1.00 enter 100.
currencystringThe currency in which the payment is made.
statusstringThe status of the payment. Possible values:
createdauthorizedcapturedrefundedfailed
methodstringThe payment method used for making the payment. Possible values:
cardfpxwallet
order_idstringOrder id, if provided. Know more about
.descriptionstringDescription of the payment, if any.
internationalbooleanIndicates whether the payment is done via an international card or a domestic one. Possible values:
true: Payment made using international card.false: Payment not made using international card.
refund_statusstringThe refund status of the payment. Possible values:
nullpartialfull
amount_refundedinteger The amount refunded in currency subunits. For example, if amount_refunded = 100, it is equal to RMÂ 1.00.
capturedbooleanIndicates if the payment is captured. Possible values:
true: Payment has been captured.false: Payment has not been captured.
emailstringCustomer email address used for the payment.
contactstringCustomer contact number used for the payment.
feeintegerFee (including tax) charged by Razorpay Curlec.
taxintegerTax charged for the payment.
error_codestring Error that occurred during payment. For example, BAD_REQUEST_ERROR.
error_descriptionstring Description of the error that occurred during payment. For example, Payment processing failed because of incorrect OTP.
error_sourcestring The point of failure. For example, customer.
error_stepstring The stage where the transaction failure occurred. The stages can vary depending on the payment method used to complete the transaction. For example, payment_authentication.
error_reasonstring The exact error reason. For example, incorrect_otp.
notesjson objectContains user-defined fields, stored for reference purposes.
created_atintegerTimestamp, in UNIX format, on which the payment was created.
card_idstringThe unique identifier of the card used by the customer to make the payment.
Show child parameters (3)
upiobject Details of the UPI payment received. Only applicable if method is upi.
Show child parameters (3)
bankstring The 4-character bank code which the customer's account is associated with. For example, UTIB for Axis Bank.
vpastring The customer's VPA (Virtual Payment Address) or UPI id used to make the payment. For example, gauravkumar@exampleupi.
walletstring The name of the wallet used by the customer to make the payment. For example, payzapp.
acquirer_dataarrayA dynamic array consisting of a unique reference numbers.
Show child parameters (3)
cardobjectDetails of the card used to make the payment.
Show child parameters (8)
bankstringThe 4-character bank code which the customer's account is associated with.
walletstring The name of the wallet used by the customer to make the payment. For example, grabpay.
acquirer_dataarrayA dynamic array consisting of a unique reference number.
Show child parameters (2)
Errors
The API <key/secret> provided is invalid.
Error Status: 4xx
The API credentials passed in the API call differ from the ones generated on the Dashboard.
Solution
Capture amount must be equal to the amount authorized.
Error Status: 400
- The capture amount is incorrect.
- The amount you are trying to capture differs from the authorised amount .
Solution
Your payment has been declined as the order is already paid. Please initiate the payment with a new order.
Error Status: 400
This payment has already been captured.
Solution
The id provided does not exist
Error Status: 400
The payment_id provided is incorrect.
Solution
The requested URL was not found on the server.
Error Status: 400
The URL is incorrect.
Solution
The amount must be an integer
Error Status: 400
The amount specified is incorrect.
Solution
Curl
change language
change language
1curl -u [YOUR_KEY_ID]:[YOUR_KEY_SECRET] \2-H 'content-type: application/json' \3-X POST https://api.razorpay.com/v1/payments/pay_29QQoUBi66xm2f/capture \4-d '{5"amount": 1000,6"currency": ""7}'
Success
Failure
1{2"id": "pay_LPpN6ssnoEVNv0",3"entity": "payment",4"amount": 1000,5"currency": "",6"status": "captured",7"order_id": null,8"invoice_id": null,9"international": false,10"method": "card",11"amount_refunded": 0,12"refund_status": null,13"captured": true,14"description": "Test Transaction",15"card_id": "card_LPpN6ubeosLH4g",16"card": {17"id": "card_LPpN6ubeosLH4g",18"entity": "card",19"name": "",20"last4": "0153",21"network": "Visa",22"type": "debit",23"issuer": null,24"international": false,25"sub_type": "consumer",26"token_iin": null27},28"bank": null,29"wallet": null,30"email": "nur.aisyah@example.com",31"contact": "+60123456789",32"notes": {33"address": "Corporate Office"34},35"fee": 100,36"tax": 0,37"error_code": null,38"error_description": null,39"error_source": null,40"error_step": null,41"error_reason": null,42"acquirer_data": {43"auth_code": "878694"44},45"created_at": 167845263546}