Skip to main content
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 configure automatic capture of payments on the Dashboard.

Request

Curl

Response

Success

Parameters

id mandatory : string Unique identifier of the payment to be captured.

Parameters

amount mandatory : integer The amount to be captured (should be equal to 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. currency mandatory : string ISO code of the currency in which the payment was made. Refer to the list of supported currencies.
Handy Tips
Razorpay has added support for zero decimal currencies, such as JPY, and three decimal currencies, such as KWD, BHD, and OMR, allowing businesses to accept international payments in these currencies. Know more about Currency Conversion (May 2024).

Parameters

id : string Unique identifier of the payment. entity : string Indicates the type of entity. amount : integer The payment amount in currency subunits. For example, for an amount of 1 enter 100. currency : string The currency in which the payment is made. Refer to the list of international currencies that we support. status : string The status of the payment. Possible values:
  • created
  • authorized
  • captured
  • refunded
  • failed
method : string The payment method used for making the payment. Possible values:
  • card
  • netbanking
  • wallet
  • emi
  • upi
order_id : string Order id, if provided. Know more about Orders. description : string Description of the payment, if any. international : boolean Indicates 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_status : string The refund status of the payment. Possible values:
  • null
  • partial
  • full
amount_refunded : integer The amount refunded in currency subunits. For example, if amount_refunded = 100, it is equal to 1. captured : boolean Indicates if the payment is captured. Possible values:
  • true: Payment has been captured.
  • false: Payment has not been captured.
email : string Customer email address used for the payment. contact : string Customer contact number used for the payment. fee : integer Fee (including GST) charged by Razorpay. tax : integer GST charged for the payment. error_code : string Error that occurred during payment. For example, BAD_REQUEST_ERROR. error_description : string Description of the error that occurred during payment. For example, Payment processing failed because of incorrect OTP. error_source : string The point of failure. For example, customer. error_step : string 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_reason : string The exact error reason. For example, incorrect_otp. notes : json object Contains user-defined fields, stored for reference purposes. created_at : integer Timestamp, in UNIX format, on which the payment was created. card_id : string The unique identifier of the card used by the customer to make the payment. card : object Details of the card used to make the payment. id : string The unique identifier of the card used by the customer to make the payment. entity : string The name of the entity. Here, it is card. name : string Name of the cardholder. last4 : integer The last 4 digits of the card number. network : string The card network. Possible values:
  • American Express
  • Diners Club
  • Maestro
  • MasterCard
  • RuPay
  • Unknown
  • Visa
type : string The card type. Possible values:
  • credit
  • debit
  • prepaid
  • unknown
issuer : string The card issuer. The 4-character code denotes the issuing bank. This attribute will not be set for the card issued by a foreign bank. emi : boolean Indicates whether the card can be used for EMI payment method. Possible values:
  • true: Card can be used for EMI payments.
  • false: Card cannot be used for EMI payments.
sub_type : string The sub-type of the customer’s card. Possible values:
  • customer
  • business
Know how to accept payments made by customers using corporate cards. upi : object Details of the UPI payment received. Only applicable if method is upi. payer_account_type : string The payment method used for making the payment. Possible values:
  • bank_account
  • credit_card
  • wallet
  • credit_line
vpa : string The customer’s VPA (Virtual Payment Address) or UPI id used to make the payment. For example, gauravkumar@exampleupi. flow : string The type of UPI flow. Possible values:
  • intent: When a UPI app is selected and user is redirected to it.
  • collect: The user enters their UPI ID and receives a notification from the UPI app. They open the app and complete the payment.
  • in_app In case of Turbo UPI Payments.
bank : string The 4-character bank code which the customer’s account is associated with. For example, UTIB for Axis Bank. vpa : string The customer’s VPA (Virtual Payment Address) or UPI id used to make the payment. For example, gauravkumar@exampleupi. wallet : string The name of the wallet used by the customer to make the payment. For example, payzapp. acquirer_data : array A dynamic array consisting of a unique reference numbers. rrn : string A unique bank reference number provided by the banking partner when a refund is processed. This reference number can be used by the customer to track the status of the refund with the bank. authentication_reference_number : string A unique reference number generated for RuPay card payments. bank_transaction_id : string A unique reference number provided by the banking partner in case of netbanking payments.

Errors

The API “ provided is invalid.
  • code: 4xx
  • description: The API credentials passed in the API call differ from the ones generated on the Dashboard.
  • solution: The API keys must be active and entered correctly with no whitespace before or after.
Capture amount must be equal to the amount authorized.
  • code: 400
  • description: - The capture amount is incorrect.
  • The amount you are trying to capture differs from the authorised amount .
  • solution: - Enter the correct capture amount.
  • Ensure that the amount to be captured is equal to the authorised amount.
Your payment has been declined as the order is already paid. Please initiate the payment with a new order.
  • code: 400
  • description: This payment has already been captured.
  • solution: Ensure that the payment is in the authorized state to capture it successfully.
The id provided does not exist
  • code: 400
  • description: The payment_id provided is incorrect.
  • solution: Enter the correct payment_id.
The requested URL was not found on the server.
  • code: 400
  • description: The URL is incorrect.
  • solution: Use the correct URL.
The amount must be an integer
  • code: 400
  • description: The amount specified is incorrect.
  • solution: Enter the correct amount without any decimal points.