Cashfree Payments Simulation API

Collection of APIs to handle simulation.

OpenAPI Specification

cashfree-simulation-api-openapi.yml Raw ↑
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