openapi: 3.0.0 info: version: '2025-01-01' title: Cashfree Payment Gateway APIs Authorize Simulation API license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html contact: email: developers@cashfree.com name: API Support url: https://discord.com/invite/QdZkNSxXsB description: Cashfree's Payment Gateway APIs provide developers with a streamlined pathway to integrate advanced payment processing capabilities into their applications, platforms and websites. servers: - url: https://sandbox.cashfree.com/pg description: Sandbox server - url: https://api.cashfree.com/pg description: Production server tags: - name: Simulation description: Collection of APIs to handle simulation. paths: /simulate: post: summary: Simulate Payment x-mcp: enabled: true description: Use this API to simulate payment. To use this API you should first create an order using the Create Order API. Also, you need to create a payment with the same order. tags: - Simulation operationId: PGSimulatePayment deprecated: false security: - XClientID: [] XClientSecret: [] - XClientID: [] XPartnerAPIKey: [] - XClientID: [] XClientSignatureHeader: [] - XPartnerMerchantID: [] XPartnerAPIKey: [] parameters: - $ref: '#/components/parameters/apiVersionHeader' - $ref: '#/components/parameters/xRequestIDHeader' - $ref: '#/components/parameters/xIdempotencyKeyHeader' requestBody: $ref: '#/components/requestBodies/SimulateRequest' responses: '200': description: Payment Simulated Response content: application/json: schema: $ref: '#/components/schemas/SimulationResponse' headers: x-api-version: $ref: '#/components/headers/x-api-version' x-ratelimit-limit: $ref: '#/components/headers/x-ratelimit-limit' x-ratelimit-remaining: $ref: '#/components/headers/x-ratelimit-remaining' x-ratelimit-retry: $ref: '#/components/headers/x-ratelimit-retry' x-ratelimit-type: $ref: '#/components/headers/x-ratelimit-type' x-request-id: $ref: '#/components/headers/x-request-id' '400': $ref: '#/components/responses/Response400' '401': $ref: '#/components/responses/Response401' '404': $ref: '#/components/responses/Response404' '429': $ref: '#/components/responses/Response429' '500': $ref: '#/components/responses/Response500' /simulate/{simulation_id}: get: summary: Fetch Simulation x-mcp: enabled: true description: Use this API to fetch simulated payment details. tags: - Simulation operationId: PGFetchSimulation deprecated: false security: - XClientID: [] XClientSecret: [] - XClientID: [] XPartnerAPIKey: [] - XClientID: [] XClientSignatureHeader: [] - XPartnerMerchantID: [] XPartnerAPIKey: [] parameters: - $ref: '#/components/parameters/apiVersionHeader' - $ref: '#/components/parameters/xRequestIDHeader' - $ref: '#/components/parameters/xIdempotencyKeyHeader' - in: path name: simulation_id example: sim_2900842gV18Lhh7owswLj5XF0uHHUn1CX required: true description: Provide the SimulationId for which the details have to be fetched. schema: type: string responses: '200': description: Fetched Simulated Response content: application/json: schema: $ref: '#/components/schemas/SimulationResponse' headers: x-api-version: $ref: '#/components/headers/x-api-version' x-ratelimit-limit: $ref: '#/components/headers/x-ratelimit-limit' x-ratelimit-remaining: $ref: '#/components/headers/x-ratelimit-remaining' x-ratelimit-retry: $ref: '#/components/headers/x-ratelimit-retry' x-ratelimit-type: $ref: '#/components/headers/x-ratelimit-type' x-request-id: $ref: '#/components/headers/x-request-id' '400': $ref: '#/components/responses/Response400' '401': $ref: '#/components/responses/Response401' '404': $ref: '#/components/responses/Response404' '429': $ref: '#/components/responses/Response429' '500': $ref: '#/components/responses/Response500' components: schemas: BadRequestError: title: BadRequestError description: Invalid request received from client example: message: bad URL, please check API documentation code: request_failed type: invalid_request_error type: object properties: message: type: string code: type: string help: type: string type: type: string enum: - invalid_request_error RateLimitError: title: RateLimitError description: Error when rate limit is breached for your api example: message: Too many requests from IP. Check headers code: request_failed type: rate_limit_error type: object properties: message: type: string code: type: string type: type: string enum: - rate_limit_error description: rate_limit_error SimulationResponse: title: SimulationResponse description: Simulation response object type: object example: simulation_id: sim_2900842gV18Lhh7owswLj5XF0uHHUn1CX entity: PAYMENTS entity_id: '14934289844' entity_simulation: payment_status: FAILED payment_error_code: ISSUER_NOT_AVAILABLE properties: simulation_id: type: string entity: type: string entity_id: type: string entity_simulation: $ref: '#/components/schemas/EntitySimulationResponse' AuthenticationError: title: AuthenticationError description: Error if api keys are wrong example: message: authentication Failed code: request_failed type: authentication_error type: object properties: message: type: string code: type: string type: type: string description: authentication_error EntitySimulationRequest: title: entity_simulation description: Entity Simulation it contains payment_status and payment_error_code type: object example: payment_status: FAILED payment_error_code: ISSUER_NOT_AVAILABLE properties: payment_status: type: string enum: - SUCCESS - FAILED - PENDING - USER_DROPPED description: Payment Status payment_error_code: type: string description: Payment Error Code required: - payment_status SimulateRequest: title: SimulateRequest description: simulate payment request object type: object properties: entity: type: string enum: - PAYMENTS - SUBS_PAYMENTS description: Entity type should be PAYMENTS or SUBS_PAYMENTS only. entity_id: type: string description: If the entity type is PAYMENTS, the entity_id will be the transactionId. If the entity type is SUBS_PAYMENTS, the entity_id will be the merchantTxnId entity_simulation: $ref: '#/components/schemas/EntitySimulationRequest' required: - entity - entity_id - entity_simulation ApiError404: title: ApiError404 description: Error when resource requested is not found example: message: something is not found code: somethind_not_found type: invalid_request_error type: object properties: message: type: string code: type: string help: type: string type: type: string enum: - invalid_request_error description: invalid_request_error ApiError: title: ApiError description: Error at cashfree's server example: message: internal Server Error code: internal_error type: api_error type: object properties: message: type: string code: type: string help: type: string type: type: string enum: - api_error description: api_error EntitySimulationResponse: title: entity_simulation description: Entity Simulation it contains payment_status and payment_error_code type: object example: payment_status: FAILED payment_error_code: ISSUER_NOT_AVAILABLE properties: payment_status: type: string description: Payment Status payment_error_code: type: string description: Payment Error Code required: - payment_status headers: x-ratelimit-limit: schema: type: integer example: 200 description: Ratelimit set for your account for this API per minute x-idempotency-key: schema: type: string example: some-idem-id description: An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. x-ratelimit-retry: schema: type: integer example: 4 description: 'Contains number of seconds to wait if rate limit is breached - Is 0 if withing the limit - Is between 1 and 59 if breached ' x-ratelimit-type: schema: type: string enum: - app_id - ip example: ip description: 'either ip or app_id - `ip` if making a call from the browser. True for api where you don''t need `x-client-id` and `x-client-secret` - `app_id` for authenticated api calls i.e using `x-client-id` and `x-client-secret` ' x-ratelimit-remaining: schema: type: integer example: 2 description: Rate limit remaning for your account for this API in the next minute. Uses sliding window x-api-version: schema: type: string format: YYYY-MM-DD enum: - '2022-09-01' description: This header has the version of the API. The current version is `2022-09-01`. x-idempotency-replayed: schema: type: string format: boolean example: 'true' description: 'In conjunction with `x-idempotency-key` this means - `true` if the response was replayed - `false` if the response has not been replayed' x-request-id: schema: type: string example: some-req-id description: Request id for your api call. Is blank or null if no `x-request-id` is sent during the request responses: Response400: description: Bad request error content: application/json: schema: $ref: '#/components/schemas/BadRequestError' headers: x-api-version: $ref: '#/components/headers/x-api-version' x-ratelimit-limit: $ref: '#/components/headers/x-ratelimit-limit' x-ratelimit-remaining: $ref: '#/components/headers/x-ratelimit-remaining' x-ratelimit-retry: $ref: '#/components/headers/x-ratelimit-retry' x-ratelimit-type: $ref: '#/components/headers/x-ratelimit-type' x-request-id: $ref: '#/components/headers/x-request-id' x-idempotency-key: $ref: '#/components/headers/x-idempotency-key' x-idempotency-replayed: $ref: '#/components/headers/x-idempotency-replayed' Response429: description: Rate Limit Error content: application/json: schema: $ref: '#/components/schemas/RateLimitError' headers: x-api-version: $ref: '#/components/headers/x-api-version' x-ratelimit-limit: $ref: '#/components/headers/x-ratelimit-limit' x-ratelimit-remaining: $ref: '#/components/headers/x-ratelimit-remaining' x-ratelimit-retry: $ref: '#/components/headers/x-ratelimit-retry' x-ratelimit-type: $ref: '#/components/headers/x-ratelimit-type' x-request-id: $ref: '#/components/headers/x-request-id' x-idempotency-key: $ref: '#/components/headers/x-idempotency-key' x-idempotency-replayed: $ref: '#/components/headers/x-idempotency-replayed' Response401: description: Authentication Error content: application/json: schema: $ref: '#/components/schemas/AuthenticationError' headers: x-api-version: $ref: '#/components/headers/x-api-version' x-ratelimit-limit: $ref: '#/components/headers/x-ratelimit-limit' x-ratelimit-remaining: $ref: '#/components/headers/x-ratelimit-remaining' x-ratelimit-retry: $ref: '#/components/headers/x-ratelimit-retry' x-ratelimit-type: $ref: '#/components/headers/x-ratelimit-type' x-request-id: $ref: '#/components/headers/x-request-id' x-idempotency-key: $ref: '#/components/headers/x-idempotency-key' x-idempotency-replayed: $ref: '#/components/headers/x-idempotency-replayed' Response404: description: Resource Not found content: application/json: schema: $ref: '#/components/schemas/ApiError404' headers: x-api-version: $ref: '#/components/headers/x-api-version' x-ratelimit-limit: $ref: '#/components/headers/x-ratelimit-limit' x-ratelimit-remaining: $ref: '#/components/headers/x-ratelimit-remaining' x-ratelimit-retry: $ref: '#/components/headers/x-ratelimit-retry' x-ratelimit-type: $ref: '#/components/headers/x-ratelimit-type' x-request-id: $ref: '#/components/headers/x-request-id' x-idempotency-key: $ref: '#/components/headers/x-idempotency-key' x-idempotency-replayed: $ref: '#/components/headers/x-idempotency-replayed' Response500: description: API related Error content: application/json: schema: $ref: '#/components/schemas/ApiError' headers: x-api-version: $ref: '#/components/headers/x-api-version' x-ratelimit-limit: $ref: '#/components/headers/x-ratelimit-limit' x-ratelimit-remaining: $ref: '#/components/headers/x-ratelimit-remaining' x-ratelimit-retry: $ref: '#/components/headers/x-ratelimit-retry' x-ratelimit-type: $ref: '#/components/headers/x-ratelimit-type' x-request-id: $ref: '#/components/headers/x-request-id' x-idempotency-key: $ref: '#/components/headers/x-idempotency-key' x-idempotency-replayed: $ref: '#/components/headers/x-idempotency-replayed' requestBodies: SimulateRequest: description: Request Body to Make Simulation required: true content: application/json: schema: $ref: '#/components/schemas/SimulateRequest' examples: payment_failure_simulation: value: entity: PAYMENTS entity_id: '14934289844' entity_simulation: payment_status: FAILED payment_error_code: ISSUER_NOT_AVAILABLE subscription_payment_success_simulation: value: entity: SUBS_PAYMENTS entity_id: '9881282748' entity_simulation: payment_status: SUCCESS payment_error_code: '' parameters: xRequestIDHeader: in: header name: x-request-id description: Request ID for the API call. It can be used to resolve technical issues. Include this in your tech-related queries to Cashfree. required: false schema: type: string example: 4dfb9780-46fe-11ee-be56-0242ac120002 xIdempotencyKeyHeader: in: header name: x-idempotency-key required: false description: 'An idempotency key is a unique identifier in your API call. If the request fails or times out, you can retry it with the same key to prevent duplicate actions. ' schema: type: string format: UUID example: 47bf8872-46fe-11ee-be56-0242ac120002 apiVersionHeader: in: header name: x-api-version description: API version to be used. Format is in YYYY-MM-DD schema: type: string description: API version to be used default: '2025-01-01' example: '2025-01-01' x-ignore: true securitySchemes: XClientID: type: apiKey in: header name: x-client-id description: Client app ID. You can find your app id in the [merchant dashboard](https://merchant.cashfree.com/merchants/pg/developers/api-keys?env=prod"). XClientSecret: type: apiKey in: header name: x-client-secret description: Client secret key. You can find your secret in the [merchant dashboard](https://merchant.cashfree.com/merchants/pg/developers/api-keys?env=prod"). XClientSignatureHeader: type: apiKey in: header name: x-client-signature description: Use this if you do not want to pass the secret key and instead want to use the signature. XPartnerAPIKey: type: apiKey in: header name: x-partner-apikey description: If you are partner and you are making an api call on behalf of a merchant XPartnerMerchantID: type: apiKey in: header name: x-partner-merchantid description: If you are partner use this to specify the merchant id if you don't have the merchant client app id externalDocs: url: https://api.cashfree.com/pg description: This url will have the information of all the APIs. x-readme: explorer-enabled: true proxy-enabled: true samples-enabled: true samples-languages: - shell