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 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.
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
Could not validate payment capture request due to: amount: cannot be blank.
Error Status: 400
The amount field was omitted from the capture request body.
Solution
Could not validate payment capture request due to: amount: required key is missing.
Error Status: 400
The capture request body is empty or missing the amount key.
Solution
Capture request currency must be same as payment currency.
Error Status: 400
The currency passed in the capture request does not match the currency of the underlying payment.
Solution
The payment has already been either captured or voided.
Error Status: 400
A capture was attempted on a payment that has already moved out of the authorized state. It is either already captured or has been voided.
Solution
Payment is not in authorized state.
Error Status: 400
Capture can only be performed on payments in the authorized state. The payment is currently in a different state (failed, created, refunded or already captured).
Solution
Only payments which have been authorized and not yet captured can be captured.
Error Status: 400
The payment is not in a captureable state. This message surfaces for payments that have already settled, been voided or failed.
Solution
Payment is pending authorization from approver.
Error Status: 400
For corporate-card payments and other approval-flow gateways, the payment is waiting for an internal approver and is not yet authorised.
Solution
Payment amount is greater than the amount due for order.
Error Status: 400
The capture amount exceeds the order's outstanding amount_due. This typically happens when partial payments have already been captured on the order.
Solution
Payment already done for this order.
Error Status: 400
The order linked to this payment is already in the paid state. Another payment has already been captured against it.
Solution
Request failed because another payment operation is in progress.
Error Status: 400
A concurrent operation (another capture or a refund) is already running for this payment.
Solution
The payment has already been processed.
Error Status: 400
The payment has already moved to a final state (such as captured or refunded) and cannot be processed again.
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 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.
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
Could not validate payment capture request due to: amount: cannot be blank.
Error Status: 400
The amount field was omitted from the capture request body.
Solution
Could not validate payment capture request due to: amount: required key is missing.
Error Status: 400
The capture request body is empty or missing the amount key.
Solution
Capture request currency must be same as payment currency.
Error Status: 400
The currency passed in the capture request does not match the currency of the underlying payment.
Solution
The payment has already been either captured or voided.
Error Status: 400
A capture was attempted on a payment that has already moved out of the authorized state. It is either already captured or has been voided.
Solution
Payment is not in authorized state.
Error Status: 400
Capture can only be performed on payments in the authorized state. The payment is currently in a different state (failed, created, refunded or already captured).
Solution
Only payments which have been authorized and not yet captured can be captured.
Error Status: 400
The payment is not in a captureable state. This message surfaces for payments that have already settled, been voided or failed.
Solution
Payment is pending authorization from approver.
Error Status: 400
For corporate-card payments and other approval-flow gateways, the payment is waiting for an internal approver and is not yet authorised.
Solution
Payment amount is greater than the amount due for order.
Error Status: 400
The capture amount exceeds the order's outstanding amount_due. This typically happens when partial payments have already been captured on the order.
Solution
Payment already done for this order.
Error Status: 400
The order linked to this payment is already in the paid state. Another payment has already been captured against it.
Solution
Request failed because another payment operation is in progress.
Error Status: 400
A concurrent operation (another capture or a refund) is already running for this payment.
Solution
The payment has already been processed.
Error Status: 400
The payment has already moved to a final state (such as captured or refunded) and cannot be processed again.
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}