Authentication failed
Authentication failed
- Test credentials are used in the production environment or vice versa.
- Client ID and Client Secret are passed in the request body instead of as headers.
- Use test credentials in the test environment and production credentials in the live environment.
- Pass the Client ID and Client Secret as headers, not in the request body.
S2S_enabled_not_approved or POST/orders/pay is not enabled or approved
S2S_enabled_not_approved or POST/orders/pay is not enabled or approved
- The prerequisite for S2S is that it requires PCI DSS compliance.
- To enable it, contact your Account Manager or fill in the Support Form. Once your account is reviewed and approved, this feature will be enabled.
Payment mode not enabled for merchant
Payment mode not enabled for merchant
- Log in to the Merchant Dashboard and go to Settings > Payment Methods to enable the mode.
- Alternatively, contact your Account Manager or fill in the Support Form.
Unable to delink existing AmazonPay wallet and add a new one
Unable to delink existing AmazonPay wallet and add a new one
- The user needs to log out of the Amazon account from that system, clear the browser cache and try once again.
Null objects in Get Order / Payment API response
Null objects in Get Order / Payment API response
- When no payment is associated with the order yet. ie a payment has not yet been attempted against the Order.
- If there’s a delay in the payment being recorded due to bank or network delays.
- You are hitting the Get payments for an order API before your end customer has tried to pay.
- Please Configure webhooks to receive real-time payment updates.
- Use the Get Payments for Order API, as the Get Order Status API will only return the order’s current state and not the payment specifics.
Why does the Get Payments for an Order API return an empty array?
Why does the Get Payments for an Order API return an empty array?
GET /pg/orders/{order_id}/payments) returns an empty array ([]) when no payment attempt exists for the order. This happens if the customer opens checkout and then exits, closes the page, or goes back without selecting a payment method such as UPI, card, or netbanking. Cashfree creates a payment object only after the customer selects a method and starts an attempt.Handle the response as follows:- Empty array (
[]): no payment attempt. Do not treat this asUSER_DROPPED.USER_DROPPEDappears on a payment object after the customer selected a method and then left the flow. - One or more payment objects: use
payment_statuson each object. Possible values areSUCCESS,FAILED,PENDING,NOT_ATTEMPTED,USER_DROPPED,VOID, andCANCELLED.
Which headers does the Get Payments for an Order API require?
Which headers does the Get Payments for an Order API require?
x-api-version: the API version you integrate with. Latest is2026-01-01.x-client-id: your App ID.x-client-secret: your Secret Key.
x-partner-apikey and x-partner-merchantid instead of x-client-id and x-client-secret. See API authentication.How do I avoid storing payment instrument details during checkout?
How do I avoid storing payment instrument details during checkout?
9999999999 in the customer_phone field of your Create Order API request to avoid storing payment instrument details such as cards or UPI handles. Cashfree does not store instrument details against this dummy number.Order Amount Invalid
Order Amount Invalid
- More than two decimal places have been provided for the ‘order_amount’ field. Eg: 10.123
- Order Amount is 0 or negative.
- You have exceeded the maximum amount limit set for your MID.
- Please configure order_amount with only two decimal places maximum.
- A minimum amount of one rupee is required.
- Kindly get the maximum amount limit raised for your Merchant ID. Please contact your Account Manager or fill in the Support Form
UPI Intent not visible on checkout
UPI Intent not visible on checkout