Skip to main content
Cashfree’s RESTful Payment Gateway API provides a robust and flexible interface for integrating payment solutions into your applications. The API uses predictable resource-oriented URLs, accepts JSON request bodies, returns JSON-encoded responses, and supports standard HTTP response codes and authentication. SDKs in popular programming languages help you integrate faster with pre-built handling for authentication, request or response formatting, and error handling.
We strongly recommend using SDKs to streamline the integration process and ensure optimal performance and security.

What’s new in v2026-01-01

Cashfree Payments API v2026-01-01 is now available. This release includes the following changes:
  • A new Order Pay Authorise Only endpoint for authorising card payments without immediate capture.
  • A new controlled subscription payment flow for UPI mandates, with six dedicated APIs for pre-debit notification and charge execution.
  • New fields and parameters on Create Order, Order Pay, Create Payment Link, and Get All Settlements.
  • A restructured Create Subscription request body, two new fields, and one removed field.
  • Breaking response schema changes to settlement endpoints and a removed field on Create Order. Review your integration before upgrading.
  • A new NuGet package ID for the .NET SDK: cashfree-dotnet-pg from v6.0.7. The previous cashfree_pg package is no longer updated.
Expand the sections below for more details:
A new endpoint, Order Pay Authorise Only, is available for merchants with the AUTHORIZE_ONLY flag enabled on their account. Use it to authorise a card payment without capturing it immediately.The request requires a payment_session_id and an authorization_data object containing the following 3DS authentication fields:The endpoint returns a PaymentEntity on success and requires no authentication (security: []).
v2026-01-01 introduces a controlled payment flow for UPI mandate subscriptions, giving you explicit control over when your customers are notified and when the debit is executed. This is a significant change if you need to comply with NPCI pre-debit notification rules.
The controlled flow supports UPI mandates only. eNACH and Physical NACH (PNACH) mandates are not supported. Card support is planned for a future release.
How it worksThe controlled flow replaces the automatic charge trigger with a two-step process you drive:
  1. Send a pre-debit notification: notify your customer of the upcoming charge amount before the debit window opens.
  2. Execute the charge: trigger the mandate debit after the compliance window elapses. The debit amount must exactly match the notified amount; a mismatch causes the issuing bank to decline the transaction.
APIs
Client environment headers: Order Pay and Get Eligible Payment MethodsOrder Pay and Get Eligible Payment Methods now formally accept four optional device-context headers required for NPCI compliance. These headers were required in practice; they are now part of the spec with full validation.
Offer filters and UPI app priority: Create OrderTwo new optional fields are available on order_meta in Create Order:
  • offer_filters: explicitly allow or deny specific offers for an order. Set action to ALLOW or DENY and provide a list of up to 25 offer values.
  • upi_app_priority: control the display order of UPI apps on your checkout page. Accepted values: gpay, phonepe, paytm, navi, cred, supermoney, amazonpay, bhim, mobikwik, airtel, popclub, kiwi.

Settlement status filter: Get All SettlementsGet All Settlements now accepts a new optional filter field filters.settlement_status. Pass an array of one or more of the following values to retrieve settlements by processing state:
  • SUCCESS
  • PENDING
  • PENDING_WITH_CASHFREE
  • PENDING_WITH_BANK
  • FAILED

Subscription support: Payment LinksCreate Payment Link now accepts an optional subscription field to create recurring payment links backed by a plan. The plan is defined inline with the following fields:Additional subscription-level fields: authorization_amount, authorization_amount_refund (boolean), subscription_expiry_time, and subscription_first_charge_time.
PAR field: card paymentsPayOrderRequest.payment_method.card now accepts a par field (Payment Account Reference received from the card network). This is relevant for token-based and network-tokenised card flows.
The following endpoints return a different response schema in v2026-01-01. Review and update your integration before switching to this version.
These are breaking changes. Existing code that reads from the previous response structure will fail silently or throw errors after upgrading to x-api-version: 2026-01-01.
Get Settlements by Order ID: nested response objectPreviously returned a flat SettlementEntity object. Now returns OrderSettlementEntity, a nested object structured as follows:Update any code that reads cf_payment_id, service_charge, settlement_amount, or other fields directly from the response root.
Get All Settlements: paginated responsePreviously returned a single flat settlement record. Now returns a paginated GetAllSettlementsResponse:
Update any code that reads from the flat settlement response to iterate over data and handle pagination using cursor.
Mark Order for Settlement: HTTP status code and response body changedPreviously returned HTTP 202 with an empty {} body. Now returns HTTP 200 with the following body:
Update any code that checks for a 202 status or expects an empty response body.
Get Order Extended: offer renamed to offers (array)The offer field (a single object of type OfferExtendedDetails) in OrderExtendedDataEntity is now offers (an array of OfferExtendedDetails objects). Update field references from offer to offers and handle the array structure.
The following fields have been removed in v2026-01-01. Requests that include these fields will either be ignored or return a validation error.
The .NET SDK is now published under a new NuGet package ID starting from version 6.0.7.Install the new package:
No code changes are required beyond updating the package reference. All future .NET SDK releases will be published only under cashfree-dotnet-pg. For the full version history, see the .NET SDK changelog.
The Subscription APIs in v2026-01-01 include a restructured request body, two new request fields, and one removed field on Create Subscription.Restructured request bodyThe CreateSubscriptionRequest previously used a flat structure where all fields were at the top level. In v2026-01-01, fields are grouped into four nested objects for clarity and consistency:
This is a breaking change. Update your Create Subscription integration to use the new nested structure before switching to x-api-version: 2026-01-01.

New field: subscription_tagsCreateSubscriptionRequest now accepts subscription_tags, a free-form object for attaching up to 10 custom key-value string entries to a subscription. A commonly used key is psp_note, which sets the note displayed to the customer in their payment service provider app or on their bank statement. When using psp_note, the value must be between 1 and 255 characters.
New field: subscription_payment_splitsCreateSubscriptionRequest now accepts subscription_payment_splits, an array of vendor split items. Each item specifies a vendor_id and a percentage, allowing subscription charges to be distributed across multiple vendors at the time of collection.
Removed field: customer_bank_account_holder_nameThe customer_bank_account_holder_name field has been removed from CreateSubscriptionRequest. This field is no longer accepted in v2026-01-01.
New: webhook signature verificationA dedicated Signature Verification page is now available for subscription webhooks, covering how to validate the x-webhook-signature header to confirm event authenticity before processing.For the controlled subscription payment flow, see the New: controlled subscription payment flow section above.
To use this version, set x-api-version: 2026-01-01 in all request headers. If you are using the previous version, see the v2025-01-01 API reference.

Orders

Create Order

Create an order to collect payments from your customers.


Get Order

Get status and details of an order.


Terminate Order

Terminate an order that’s no longer needed.


Get Order Extended

Fetch extended data for an order.


Update Order Extended

Update extended data for an order.


Customers

Create Customer

Create a customer for Token Vault and saved instruments.

Payments

Pay

Initiate a payment for an order using the chosen payment method.


Authenticate

Submit or resend OTP in the native OTP flow for card payments.


Authorise

Capture or void a pre-authorised transaction.


Get Payment

Get status and details of a single payment.


Get Payments for Order

Get status and details of all payments for an order.

The videos below walk through testing Payment Gateway APIs in Postman and using this API reference.

Testing APIs in Postman

Documentation Walkthrough

Getting started

Use the following resources to begin implementing Payment Gateway APIs:

Payment SDK

Integrate the Payment Gateway with web, mobile, and server SDKs for orders, checkout, and tokenisation

API rate limits

View default limits per minute, monitor usage on the dashboard, and request higher limits when needed