{
  "openapi": "3.0.3",
  "x-mcp": {
    "enabled": true
  },
  "info": {
    "title": "TensorRail API",
    "version": "1.0",
    "description": "The TensorRail API for accepting and managing payments.\n\n**Generated from the running service.** Endpoints appear here only if their resource family is on an explicit publication allowlist AND the edge serves the path; administrative and internal routes satisfy neither, and a set of never-publish families is asserted at build time.\n\n## What's enabled on your account\n\n**Live now.**\n\n- **UPI** \u2014 India's real-time payments rail. India (INR). Automatic capture, with payment events delivered to your webhook endpoint.\n\n**Ready to switch on** \u2014 the integration is built and the rail is part of the platform; what is left is commercial and account configuration rather than a new integration. Bank transfer / mobile money and Crypto are configured against provider sandboxes today, so going live also takes live credentials and endpoints for your account. Ask your account manager.\n\n- **Bank transfer / mobile money** \u2014 Local bank and mobile-wallet transfers. Kenya, Ghana, Tanzania and Uganda (KES, GHS, TZS, UGX). Automatic capture, with payment events delivered to your webhook endpoint.\n- **Crypto** \u2014 Digital-asset acceptance with fiat settlement. Currencies: EUR, USD, GBP. Automatic capture, with payment events delivered to your webhook endpoint once that endpoint is registered in your own account with the provider.\n\n**In test mode, on every account.** The TensorRail Test Simulator answers UPI and crypto payments deterministically, with refunds on UPI, so you can build and assert those paths before a live rail is switched on. Card intake is tokenized in every mode, so cards are the one thing test keys alone cannot drive \u2014 see [Testing and sandbox](https://docs.tensorrail.com/docs/testing-and-sandbox/).\n\nThe rest of this document is the same API on whichever rail your account is on, ordered so that what your account can use comes first. An endpoint that depends on a rail feature carries a one-line note naming the condition and where that stands today; it switches on with the rail. Nothing is left out of this reference because your account cannot reach it yet.\n\n## Errors\n\nEvery error response has the same shape: a single `error` object carrying a `type`, a human-readable `message` and a stable `code` from the `ERR_NNNN` catalog. Branch on `code`; the message wording is not part of the contract.\n\n```json\n{ \"error\": { \"type\": \"invalid_request\", \"message\": \"Missing required param: api_key\", \"code\": \"ERR_2001\", \"field_name\": \"api_key\" } }\n```\n\n## Rail support\n\nEvery endpoint below is part of the API and documented in full. Nothing here is withdrawn, deprecated or held back: an endpoint your account cannot use today is documented as completely as one it can, because an undocumented endpoint is still discoverable by trying it, and the refusal then arrives with no explanation. What varies between accounts is the rail behind an endpoint, so anything that depends on a rail feature carries its condition in the title and a one-line note saying where that stands today \u2014 including what already works on test keys.\n\n**How this document is ordered.** By what your account can use, rather than alphabetically or by resource. Everything that works on every rail enabled today comes first, then the groups closest to switching on, and the ones needing the most setup last. So an unmarked endpoint is one you can call now, and the further down a section sits, the more has to be arranged before it answers.\n\n- unmarked \u2014 available on every rail enabled today\n- `[available on rails that support refunds]` \u2014 exercisable on test keys today; switches on live with a refund-capable rail\n- `[available on rails that accept metadata updates]` \u2014 switches on with a rail that can carry a metadata change to a payment already sent\n- `[available on rails that support recurring]` \u2014 switches on with a rail that can store an instrument and charge it again\n- `[available with a billing processor]` \u2014 switches on when a billing processor is connected to your account; independent of your payment rail\n- `[available on rails with manual capture]` \u2014 switches on with a rail that authorizes now and captures later\n- `[available on rails that report disputes]` \u2014 switches on with a rail that raises dispute events\n- `[available on card rails]` \u2014 switches on with a card acquirer enabled for your account\n"
  },
  "servers": [
    {
      "url": "https://api.tensorrail.com"
    }
  ],
  "paths": {
    "/payments": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Payments - Create",
        "description": "Creates a payment resource, which represents a customer's intent to pay.\nThis endpoint is the starting point for various payment flows:\n",
        "operationId": "Create a Payment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCreateRequest"
              },
              "examples": {
                "01. Create a payment with minimal fields": {
                  "value": {
                    "amount": 6540,
                    "currency": "USD"
                  }
                },
                "02. Create a payment with customer details and metadata": {
                  "value": {
                    "amount": 6540,
                    "currency": "USD",
                    "customer": {
                      "email": "john@example.com",
                      "id": "cus_abcdefgh",
                      "name": "John Dough",
                      "phone": "9123456789"
                    },
                    "description": "Its my first payment request",
                    "metadata": {
                      "udf1": "some-value",
                      "udf2": "some-value"
                    },
                    "statement_descriptor_name": "joseph",
                    "statement_descriptor_suffix": "JS"
                  }
                },
                "03. Create and confirm a UPI payment (INR)": {
                  "value": {
                    "amount": 200000,
                    "capture_method": "automatic",
                    "confirm": true,
                    "currency": "INR",
                    "customer_id": "cus_abcdefgh",
                    "description": "Order 1042",
                    "payment_method": "upi",
                    "payment_method_data": {
                      "upi": {
                        "upi_intent": {}
                      }
                    },
                    "payment_method_type": "upi_intent"
                  }
                },
                "04. Create and confirm a crypto payment": {
                  "value": {
                    "amount": 5000,
                    "capture_method": "automatic",
                    "confirm": true,
                    "currency": "USD",
                    "customer_id": "cus_abcdefgh",
                    "payment_method": "crypto",
                    "payment_method_data": {
                      "crypto": {
                        "network": "tron",
                        "pay_currency": "USDT"
                      }
                    },
                    "payment_method_type": "crypto_currency",
                    "return_url": "https://example.com/checkout/result"
                  }
                },
                "05. Create a payment with billing details": {
                  "value": {
                    "amount": 6540,
                    "billing": {
                      "address": {
                        "city": "San Fransico",
                        "country": "US",
                        "first_name": "joseph",
                        "last_name": "Doe",
                        "line1": "1467",
                        "line2": "Harrison Street",
                        "line3": "Harrison Street",
                        "state": "California",
                        "zip": "94122"
                      },
                      "phone": {
                        "country_code": "+91",
                        "number": "9123456789"
                      }
                    },
                    "currency": "USD",
                    "customer": {
                      "id": "cus_abcdefgh"
                    }
                  }
                },
                "06. Create and confirm a card payment with a secure-fields token": {
                  "value": {
                    "amount": 6540,
                    "confirm": true,
                    "currency": "USD",
                    "customer_id": "cus_abcdefgh",
                    "payment_method": "card",
                    "payment_method_data": {
                      "psp_token": {
                        "card_holder_name": "John Test",
                        "token": "tok_EXAMPLE_FROM_SECURE_FIELDS"
                      }
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payment created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsCreateResponseOpenApi"
                },
                "examples": {
                  "01. Response for minimal payment creation (requires payment method)": {
                    "value": {
                      "amount": 6540,
                      "amount_capturable": 6540,
                      "client_secret": "pay_syxxxxxxxxxxxx_secret_szzzzzzzzzzz",
                      "created": "2023-10-26T10:00:00Z",
                      "currency": "USD",
                      "expires_on": "2023-10-26T10:15:00Z",
                      "payment_id": "pay_syxxxxxxxxxxxx",
                      "status": "requires_payment_method"
                    }
                  },
                  "02. Response for payment with customer details (requires payment method)": {
                    "value": {
                      "amount": 6540,
                      "client_secret": "pay_custmeta_xxxxxxxxxxxx_secret_szzzzzzzzzzz",
                      "created": "2023-10-26T10:05:00Z",
                      "currency": "USD",
                      "customer": {
                        "email": "john@example.com",
                        "id": "cus_abcdefgh",
                        "name": "John Dough",
                        "phone": "9123456789"
                      },
                      "customer_id": "cus_abcdefgh",
                      "description": "Its my first payment request",
                      "expires_on": "2023-10-26T10:20:00Z",
                      "metadata": {
                        "udf1": "some-value",
                        "udf2": "some-value"
                      },
                      "payment_id": "pay_custmeta_xxxxxxxxxxxx",
                      "status": "requires_payment_method"
                    }
                  },
                  "03. Response for a UPI payment \u2014 hand next_action to the payer": {
                    "value": {
                      "amount": 200000,
                      "amount_capturable": 200000,
                      "capture_method": "automatic",
                      "client_secret": "pay_upixxxxxxxxxxxx_secret_szzzzzzzzzzz",
                      "created": "2023-10-26T10:10:00Z",
                      "currency": "INR",
                      "customer_id": "cus_abcdefgh",
                      "description": "Order 1042",
                      "expires_on": "2023-10-26T10:20:00Z",
                      "next_action": {
                        "display_from_timestamp": 1698314400,
                        "display_to_timestamp": 1698315000,
                        "image_data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...",
                        "poll_config": {
                          "delay_in_secs": 2,
                          "frequency": 30
                        },
                        "sdk_uri": "upi://pay?pa=payee@bank&pn=TensorRail&am=2000.00&cu=INR&tr=pay_upixxxxxxxxxxxx",
                        "type": "invoke_upi_intent_sdk"
                      },
                      "payment_id": "pay_upixxxxxxxxxxxx",
                      "payment_method": "upi",
                      "payment_method_type": "upi_intent",
                      "status": "requires_customer_action"
                    }
                  },
                  "04. Response for a crypto payment \u2014 address, asset and chain": {
                    "value": {
                      "amount": 5000,
                      "amount_capturable": 5000,
                      "capture_method": "automatic",
                      "client_secret": "pay_cryptoxxxxxxxxxxxx_secret_szzzzzzzzzzz",
                      "created": "2023-10-26T10:15:00Z",
                      "currency": "USD",
                      "customer_id": "cus_abcdefgh",
                      "expires_on": "2023-10-26T10:25:00Z",
                      "next_action": {
                        "display_to_timestamp": 1698315000,
                        "image_data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...",
                        "pay_amount": "50.000000",
                        "pay_currency": "USDT",
                        "pay_network": "tron",
                        "raw_qr_data": "TExampleTronAddressxxxxxxxxxxxxxxx",
                        "type": "qr_code_information"
                      },
                      "payment_id": "pay_cryptoxxxxxxxxxxxx",
                      "payment_method": "crypto",
                      "payment_method_type": "crypto_currency",
                      "return_url": "https://example.com/checkout/result",
                      "status": "requires_customer_action"
                    }
                  },
                  "05. Response for payment with billing details (billing is not echoed back)": {
                    "value": {
                      "amount": 6540,
                      "client_secret": "pay_manualbill_xxxxxxxxxxxx_secret_szzzzzzzzzzz",
                      "created": "2023-10-26T10:30:00Z",
                      "currency": "USD",
                      "customer": {
                        "email": "john@example.com",
                        "id": "cus_abcdefgh",
                        "name": "John Dough",
                        "phone": "9123456789"
                      },
                      "customer_id": "cus_abcdefgh",
                      "expires_on": "2023-10-26T10:45:00Z",
                      "payment_id": "pay_manualbill_xxxxxxxxxxxx",
                      "status": "requires_payment_method"
                    }
                  },
                  "06. Response for a card payment confirmed with a secure-fields token": {
                    "value": {
                      "amount": 6540,
                      "amount_capturable": 0,
                      "amount_received": 6540,
                      "client_secret": "pay_cardtokxxxxxxxxxxxx_secret_szzzzzzzzzzz",
                      "created": "2023-10-26T10:35:00Z",
                      "currency": "USD",
                      "customer_id": "cus_abcdefgh",
                      "payment_id": "pay_cardtokxxxxxxxxxxxx",
                      "payment_method": "card",
                      "status": "succeeded"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing Mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/payments/list": {
      "get": {
        "tags": [
          "Payments"
        ],
        "summary": "Payments - List",
        "description": "To list the *payments*",
        "operationId": "List all Payments",
        "parameters": [
          {
            "name": "customer_id",
            "in": "query",
            "description": "The identifier for the customer",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "starting_after",
            "in": "query",
            "description": "A cursor for use in pagination, fetch the next list after some object",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "ending_before",
            "in": "query",
            "description": "A cursor for use in pagination, fetch the previous list before some object",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit on the number of objects to return",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          {
            "name": "created",
            "in": "query",
            "description": "The time at which payment is created",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "created.lt",
            "in": "query",
            "description": "Time less than the payment created time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "created.gt",
            "in": "query",
            "description": "Time greater than the payment created time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "created.lte",
            "in": "query",
            "description": "Time less than or equals to the payment created time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "created.gte",
            "in": "query",
            "description": "Time greater than or equals to the payment created time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved a payment list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentListResponse"
                }
              }
            }
          },
          "404": {
            "description": "No payments found"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/payments/{payment_id}": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Payments - Update",
        "description": "To update the properties of a *PaymentIntent* object. This may include attaching a payment method, or attaching customer object or metadata fields after the Payment is created",
        "operationId": "Update a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsUpdateRequest"
              },
              "examples": {
                "Update the payment amount": {
                  "value": {
                    "amount": 7654
                  }
                },
                "Update the shipping address": {
                  "value": {
                    "shipping": {
                      "address": {
                        "city": "San Fransico",
                        "country": "US",
                        "first_name": "joseph",
                        "last_name": "Doe",
                        "line1": "1467",
                        "line2": "Harrison Street",
                        "line3": "Harrison Street",
                        "state": "California",
                        "zip": "94122"
                      },
                      "phone": {
                        "country_code": "+91",
                        "number": "9123456789"
                      }
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payment updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsCreateResponseOpenApi"
                }
              }
            }
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          },
          {
            "publishable_key": []
          }
        ]
      },
      "get": {
        "tags": [
          "Payments"
        ],
        "summary": "Payments - Retrieve",
        "description": "Retrieves a Payment. This API can also be used to get the status of a previously initiated payment or next action for an ongoing payment",
        "operationId": "Retrieve a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "force_sync",
            "in": "query",
            "description": "Decider to enable or disable the connector call for retrieve request",
            "required": false,
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "client_secret",
            "in": "query",
            "description": "This is a token which expires after 15 minutes, used from the client to authenticate and create sessions from the SDK",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "expand_attempts",
            "in": "query",
            "description": "If enabled provides list of attempts linked to payment intent",
            "required": false,
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "expand_captures",
            "in": "query",
            "description": "If enabled provides list of captures linked to latest attempt",
            "required": false,
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Gets the payment with final status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsResponse"
                }
              }
            }
          },
          "404": {
            "description": "No payment found"
          }
        },
        "security": [
          {
            "api_key": []
          },
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/payments/{payment_id}/cancel": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Payments - Cancel",
        "description": "A Payment could can be cancelled when it is in one of these statuses: `requires_payment_method`, `requires_capture`, `requires_confirmation`, `requires_customer_action`.",
        "operationId": "Cancel a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCancelRequest"
              },
              "examples": {
                "Cancel the payment with cancellation reason": {
                  "value": {
                    "cancellation_reason": "requested_by_customer"
                  }
                },
                "Cancel the payment with minimal fields": {
                  "value": {}
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payment canceled"
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/payments/{payment_id}/confirm": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Payments - Confirm",
        "description": "Confirms a payment intent that was previously created with `confirm: false`. This action attempts to authorize the payment with the payment processor.\n\nExpected status transitions after confirmation:\n- `succeeded`: If authorization is successful and `capture_method` is `automatic`.\n- `requires_capture`: If authorization is successful and `capture_method` is `manual`.\n- `failed`: If authorization fails.",
        "operationId": "Confirm a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsConfirmRequest"
              },
              "examples": {
                "Confirm a payment with payment method data": {
                  "value": {
                    "customer_acceptance": {
                      "acceptance_type": "online",
                      "accepted_at": "1963-05-03T04:07:52.723Z",
                      "online": {
                        "ip_address": "127.0.0.1",
                        "user_agent": "amet irure esse"
                      }
                    },
                    "payment_method": "card",
                    "payment_method_data": {
                      "card": {
                        "card_cvc": "123",
                        "card_exp_month": "10",
                        "card_exp_year": "25",
                        "card_holder_name": "joseph Doe",
                        "card_number": "4242424242424242"
                      }
                    },
                    "payment_method_type": "credit"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payment confirmed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsCreateResponseOpenApi"
                }
              }
            }
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          },
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/payments/{payment_id}/eligibility": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Payments - Submit Eligibility Data",
        "operationId": "Submit Eligibility data for a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsEligibilityRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Eligibility submit is successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsEligibilityResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/poll/status/{poll_id}": {
      "get": {
        "tags": [
          "Payments"
        ],
        "summary": "Poll - Retrieve Poll Status",
        "operationId": "Retrieve Poll Status",
        "parameters": [
          {
            "name": "poll_id",
            "in": "path",
            "description": "The identifier for poll",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The poll status was retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PollResponse"
                }
              }
            }
          },
          "404": {
            "description": "Poll not found"
          }
        },
        "security": [
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/customers": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Customers - Create",
        "description": "Creates a customer object and stores the customer details to be reused for future payments.\nIncase the customer already exists in the system, this API will respond with the customer details.",
        "operationId": "Create a Customer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRequest"
              },
              "examples": {
                "Update name and email of a customer": {
                  "value": {
                    "email": "guest@example.com",
                    "name": "John Doe"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Customer Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid data"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/customers/list": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Customers - List",
        "description": "Lists all the customers for a particular merchant id.",
        "operationId": "List all Customers for a Merchant",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true,
              "minimum": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true,
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Customers retrieved",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid Data"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/customers/{customer_id}": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Customers - Retrieve",
        "description": "Retrieves a customer's details.",
        "operationId": "Retrieve a Customer",
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "description": "The unique identifier for the Customer",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Customer Retrieved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerResponse"
                }
              }
            }
          },
          "404": {
            "description": "Customer was not found"
          }
        },
        "security": [
          {
            "api_key": []
          },
          {
            "ephemeral_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Customers - Update",
        "description": "Updates the customer's details in a customer object.",
        "operationId": "Update a Customer",
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "description": "The unique identifier for the Customer",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerUpdateRequest"
              },
              "examples": {
                "Update name and email of a customer": {
                  "value": {
                    "email": "guest@example.com",
                    "name": "John Doe"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Customer was Updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerResponse"
                }
              }
            }
          },
          "404": {
            "description": "Customer was not found"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Customers"
        ],
        "summary": "Customers - Delete",
        "description": "Delete a customer record.",
        "operationId": "Delete a Customer",
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "description": "The unique identifier for the Customer",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Customer was Deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDeleteResponse"
                }
              }
            }
          },
          "404": {
            "description": "Customer was not found"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/account/payment_methods": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "List payment methods for a Merchant",
        "description": "Lists the applicable payment methods for a particular Merchant ID.\nUse the client secret and publishable key authorization to list all relevant payment methods of the merchant for the payment corresponding to the client secret.",
        "operationId": "List all Payment Methods for a Merchant",
        "parameters": [
          {
            "name": "client_secret",
            "in": "query",
            "description": "This is a token which expires after 15 minutes, used from the client to authenticate and create sessions from the SDK",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "accepted_countries",
            "in": "query",
            "description": "The two-letter ISO currency code",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/CountryAlpha2"
              },
              "nullable": true
            }
          },
          {
            "name": "accepted_currencies",
            "in": "query",
            "description": "The three-letter ISO currency code",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Currency"
              },
              "nullable": true
            }
          },
          {
            "name": "amount",
            "in": "query",
            "description": "The amount accepted for processing by the particular payment method.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          {
            "name": "recurring_enabled",
            "in": "query",
            "description": "Indicates whether the payment method is eligible for recurring payments",
            "required": false,
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "installment_payment_enabled",
            "in": "query",
            "description": "Indicates whether the payment method is eligible for installment payments",
            "required": false,
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Indicates the limit of last used payment methods",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          {
            "name": "card_networks",
            "in": "query",
            "description": "Indicates whether the payment method is eligible for card netwotks",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/CardNetwork"
              },
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payment Methods retrieved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentMethodListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Data"
          },
          "404": {
            "description": "Payment Methods does not exist in records"
          }
        },
        "security": [
          {
            "api_key": []
          },
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/payment_link/list": {
      "post": {
        "tags": [
          "Payment links"
        ],
        "summary": "Payments Link - List",
        "description": "Lists the payment links you have created. Note this is a POST: the filters travel in the body,\nnot the query string.",
        "operationId": "List Payment Links",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentLinkListConstraints"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The payment link list was retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RetrievePaymentLinkResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/payment_link/{payment_link_id}": {
      "get": {
        "tags": [
          "Payment links"
        ],
        "summary": "Payments Link - Retrieve",
        "description": "To retrieve the properties of a Payment Link. This may be used to get the status of a previously initiated payment or next action for an ongoing payment",
        "operationId": "Retrieve a Payment Link",
        "parameters": [
          {
            "name": "payment_link_id",
            "in": "path",
            "description": "The identifier for payment link",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "client_secret",
            "in": "query",
            "description": "This is a token which expires after 15 minutes, used from the client to authenticate and create sessions from the SDK",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Gets details regarding payment link",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RetrievePaymentLinkResponse"
                }
              }
            }
          },
          "404": {
            "description": "No payment link found"
          }
        },
        "security": [
          {
            "api_key": []
          },
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/refunds": {
      "post": {
        "tags": [
          "Refunds"
        ],
        "summary": "Refunds - Create  [available on rails that support refunds]",
        "description": "> **Available on rails that support refunds.** In **test mode** these endpoints work end to end today: the TensorRail Test Simulator \u2014 the rail behind test-mode UPI payments \u2014 supports refunds, so the whole refund path, including a partial refund and an over-amount attempt, is exercisable before you go live. Refunding a **live** payment needs a refund-capable rail; no rail enabled today declares one, so a live refund is arranged outside TensorRail until such a rail is switched on for your account. See [Testing and sandbox](https://docs.tensorrail.com/docs/testing-and-sandbox/).\n\nCreates a refund against an already processed payment. In case of some processors, you can even opt to refund only a partial amount multiple times until the original charge amount has been refunded",
        "operationId": "Create a Refund",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundRequest"
              },
              "examples": {
                "Create an instant refund to refund partial amount": {
                  "value": {
                    "amount": 654,
                    "payment_id": "{{payment_id}}",
                    "refund_type": "instant"
                  }
                },
                "Create an instant refund to refund the whole amount": {
                  "value": {
                    "payment_id": "{{payment_id}}",
                    "refund_type": "instant"
                  }
                },
                "Create an instant refund with reason": {
                  "value": {
                    "amount": 6540,
                    "payment_id": "{{payment_id}}",
                    "reason": "Customer returned product",
                    "refund_type": "instant"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Refund created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing Mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/refunds/list": {
      "post": {
        "tags": [
          "Refunds"
        ],
        "summary": "Refunds - List  [available on rails that support refunds]",
        "description": "> **Available on rails that support refunds.** In **test mode** these endpoints work end to end today: the TensorRail Test Simulator \u2014 the rail behind test-mode UPI payments \u2014 supports refunds, so the whole refund path, including a partial refund and an over-amount attempt, is exercisable before you go live. Refunding a **live** payment needs a refund-capable rail; no rail enabled today declares one, so a live refund is arranged outside TensorRail until such a rail is switched on for your account. See [Testing and sandbox](https://docs.tensorrail.com/docs/testing-and-sandbox/).\n\nLists all the refunds associated with the merchant, or for a specific payment if payment_id is provided",
        "operationId": "List all Refunds",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "List of refunds",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundListResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/refunds/{refund_id}": {
      "get": {
        "tags": [
          "Refunds"
        ],
        "summary": "Refunds - Retrieve  [available on rails that support refunds]",
        "description": "> **Available on rails that support refunds.** In **test mode** these endpoints work end to end today: the TensorRail Test Simulator \u2014 the rail behind test-mode UPI payments \u2014 supports refunds, so the whole refund path, including a partial refund and an over-amount attempt, is exercisable before you go live. Refunding a **live** payment needs a refund-capable rail; no rail enabled today declares one, so a live refund is arranged outside TensorRail until such a rail is switched on for your account. See [Testing and sandbox](https://docs.tensorrail.com/docs/testing-and-sandbox/).\n\nRetrieves a Refund. This may be used to get the status of a previously initiated refund",
        "operationId": "Retrieve a Refund",
        "parameters": [
          {
            "name": "refund_id",
            "in": "path",
            "description": "The identifier for refund",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Refund retrieved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundResponse"
                }
              }
            }
          },
          "404": {
            "description": "Refund does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "Refunds"
        ],
        "summary": "Refunds - Update  [available on rails that support refunds]",
        "description": "> **Available on rails that support refunds.** In **test mode** these endpoints work end to end today: the TensorRail Test Simulator \u2014 the rail behind test-mode UPI payments \u2014 supports refunds, so the whole refund path, including a partial refund and an over-amount attempt, is exercisable before you go live. Refunding a **live** payment needs a refund-capable rail; no rail enabled today declares one, so a live refund is arranged outside TensorRail until such a rail is switched on for your account. See [Testing and sandbox](https://docs.tensorrail.com/docs/testing-and-sandbox/).\n\nUpdates the properties of a Refund object. This API can be used to attach a reason for the refund or metadata fields",
        "operationId": "Update a Refund",
        "parameters": [
          {
            "name": "refund_id",
            "in": "path",
            "description": "The identifier for refund",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundUpdateRequest"
              },
              "examples": {
                "Update refund reason": {
                  "value": {
                    "reason": "Paid by mistake"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Refund updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefundResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing Mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/payments/{payment_id}/update_metadata": {
      "post": {
        "tags": [
          "Metadata updates"
        ],
        "summary": "Payments - Update Metadata  [available on rails that accept metadata updates]",
        "operationId": "Update Metadata for a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsUpdateMetadataRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Metadata updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsUpdateMetadataResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "description": "> **Available on rails that accept metadata updates** \u2014 one that can carry a metadata change to the payment after it has been sent. No rail enabled today implements that flow, so this endpoint answers `ERR_4094` and the stored metadata is unchanged. Metadata set on the create call, or on `POST /payments/{payment_id}` while the payment is still modifiable, is stored and returned with the payment on every rail \u2014 that is the route to use.\n\n"
      }
    },
    "/customers/payment_methods": {
      "get": {
        "tags": [
          "Payment methods"
        ],
        "summary": "List customer saved payment methods for a Payment  [available on rails that support recurring]",
        "description": "> **Available on rails that support recurring** \u2014 one that can store an instrument and charge it again. No rail enabled today both declares mandate support and implements it, so no MANDATE is created: `setup_future_usage`, an explicit `mandate_data` block and a zero-amount setup each complete with `200 succeeded` and return `mandate_id: null`, and the later off-session charge is then refused with `ERR_4088`. The payment-method endpoints themselves respond normally and a token row is written \u2014 what is missing is the mandate behind it, so the token cannot be charged. Treat the absence of a `mandate_id` on the first payment as the signal, not the status of that payment. Confirm the rail with your account manager before building against a stored instrument.\n\nLists all the applicable payment methods for a particular payment tied to the `client_secret`.",
        "operationId": "List Customer Payment Methods via Client Secret",
        "parameters": [
          {
            "name": "client_secret",
            "in": "query",
            "description": "This is a token which expires after 15 minutes, used from the client to authenticate and create sessions from the SDK",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "accepted_countries",
            "in": "query",
            "description": "The two-letter ISO currency code",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/CountryAlpha2"
              },
              "nullable": true
            }
          },
          {
            "name": "accepted_currencies",
            "in": "query",
            "description": "The three-letter ISO currency code",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Currency"
              },
              "nullable": true
            }
          },
          {
            "name": "amount",
            "in": "query",
            "description": "The amount accepted for processing by the particular payment method.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          {
            "name": "recurring_enabled",
            "in": "query",
            "description": "Indicates whether the payment method is eligible for recurring payments",
            "required": false,
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "installment_payment_enabled",
            "in": "query",
            "description": "Indicates whether the payment method is eligible for installment payments",
            "required": false,
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Indicates the limit of last used payment methods",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          {
            "name": "card_networks",
            "in": "query",
            "description": "Indicates whether the payment method is eligible for card netwotks",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/CardNetwork"
              },
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payment Methods retrieved for customer tied to its respective client-secret passed in the param",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerPaymentMethodsListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Data"
          },
          "404": {
            "description": "Payment Methods does not exist in records"
          }
        },
        "security": [
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/customers/{customer_id}/payment_methods": {
      "get": {
        "tags": [
          "Payment methods"
        ],
        "summary": "List payment methods for a Customer  [available on rails that support recurring]",
        "description": "> **Available on rails that support recurring** \u2014 one that can store an instrument and charge it again. No rail enabled today both declares mandate support and implements it, so no MANDATE is created: `setup_future_usage`, an explicit `mandate_data` block and a zero-amount setup each complete with `200 succeeded` and return `mandate_id: null`, and the later off-session charge is then refused with `ERR_4088`. The payment-method endpoints themselves respond normally and a token row is written \u2014 what is missing is the mandate behind it, so the token cannot be charged. Treat the absence of a `mandate_id` on the first payment as the signal, not the status of that payment. Confirm the rail with your account manager before building against a stored instrument.\n\nLists all the applicable payment methods for a particular Customer ID.",
        "operationId": "List all Payment Methods for a Customer",
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "description": "The unique identifier for the customer account",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "client_secret",
            "in": "query",
            "description": "This is a token which expires after 15 minutes, used from the client to authenticate and create sessions from the SDK",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "accepted_countries",
            "in": "query",
            "description": "The two-letter ISO currency code",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/CountryAlpha2"
              },
              "nullable": true
            }
          },
          {
            "name": "accepted_currencies",
            "in": "query",
            "description": "The three-letter ISO currency code",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/Currency"
              },
              "nullable": true
            }
          },
          {
            "name": "amount",
            "in": "query",
            "description": "The amount accepted for processing by the particular payment method.",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          {
            "name": "recurring_enabled",
            "in": "query",
            "description": "Indicates whether the payment method is eligible for recurring payments",
            "required": false,
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "installment_payment_enabled",
            "in": "query",
            "description": "Indicates whether the payment method is eligible for installment payments",
            "required": false,
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Indicates the limit of last used payment methods",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          {
            "name": "card_networks",
            "in": "query",
            "description": "Indicates whether the payment method is eligible for card netwotks",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/CardNetwork"
              },
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payment Methods retrieved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerPaymentMethodsListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Data"
          },
          "404": {
            "description": "Payment Methods does not exist in records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/customers/{customer_id}/payment_methods/{payment_method_id}/default": {
      "post": {
        "tags": [
          "Payment methods"
        ],
        "summary": "Payment Method - Set Default Payment Method for Customer  [available on rails that support recurring]",
        "description": "> **Available on rails that support recurring** \u2014 one that can store an instrument and charge it again. No rail enabled today both declares mandate support and implements it, so no MANDATE is created: `setup_future_usage`, an explicit `mandate_data` block and a zero-amount setup each complete with `200 succeeded` and return `mandate_id: null`, and the later off-session charge is then refused with `ERR_4088`. The payment-method endpoints themselves respond normally and a token row is written \u2014 what is missing is the mandate behind it, so the token cannot be charged. Treat the absence of a `mandate_id` on the first payment as the signal, not the status of that payment. Confirm the rail with your account manager before building against a stored instrument.\n\nSet the Payment Method as Default for the Customer.",
        "operationId": "Set the Payment Method as Default",
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "description": "The unique identifier for the Customer",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "payment_method_id",
            "in": "path",
            "description": "The unique identifier for the Payment Method",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payment Method has been set as default",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDefaultPaymentMethodResponse"
                }
              }
            }
          },
          "400": {
            "description": "Payment Method has already been set as default for that customer"
          },
          "404": {
            "description": "Payment Method not found for the customer"
          }
        },
        "security": [
          {
            "ephemeral_key": []
          }
        ]
      }
    },
    "/payment_methods": {
      "post": {
        "tags": [
          "Payment methods"
        ],
        "summary": "PaymentMethods - Create  [available on rails that support recurring]",
        "description": "> **Available on rails that support recurring** \u2014 one that can store an instrument and charge it again. No rail enabled today both declares mandate support and implements it, so no MANDATE is created: `setup_future_usage`, an explicit `mandate_data` block and a zero-amount setup each complete with `200 succeeded` and return `mandate_id: null`, and the later off-session charge is then refused with `ERR_4088`. The payment-method endpoints themselves respond normally and a token row is written \u2014 what is missing is the mandate behind it, so the token cannot be charged. Treat the absence of a `mandate_id` on the first payment as the signal, not the status of that payment. Confirm the rail with your account manager before building against a stored instrument.\n\nCreates and stores a payment method against a customer.\nIn case of cards, this API should be used only by PCI compliant merchants.",
        "operationId": "Create a Payment Method",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentMethodCreate"
              },
              "examples": {
                "Save a card": {
                  "value": {
                    "card": {
                      "card_exp_month": "11",
                      "card_exp_year": "30",
                      "card_holder_name": "John Doe",
                      "card_number": "4242424242424242"
                    },
                    "customer_id": "{{customer_id}}",
                    "payment_method": "card",
                    "payment_method_issuer": "Visa",
                    "payment_method_type": "credit"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payment Method Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentMethodResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Data"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/payment_methods/{method_id}": {
      "get": {
        "tags": [
          "Payment methods"
        ],
        "summary": "Payment Method - Retrieve  [available on rails that support recurring]",
        "description": "> **Available on rails that support recurring** \u2014 one that can store an instrument and charge it again. No rail enabled today both declares mandate support and implements it, so no MANDATE is created: `setup_future_usage`, an explicit `mandate_data` block and a zero-amount setup each complete with `200 succeeded` and return `mandate_id: null`, and the later off-session charge is then refused with `ERR_4088`. The payment-method endpoints themselves respond normally and a token row is written \u2014 what is missing is the mandate behind it, so the token cannot be charged. Treat the absence of a `mandate_id` on the first payment as the signal, not the status of that payment. Confirm the rail with your account manager before building against a stored instrument.\n\nRetrieves a payment method of a customer.",
        "operationId": "Retrieve a Payment method",
        "parameters": [
          {
            "name": "method_id",
            "in": "path",
            "description": "The unique identifier for the Payment Method",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payment Method retrieved",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentMethodResponse"
                }
              }
            }
          },
          "404": {
            "description": "Payment Method does not exist in records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Payment methods"
        ],
        "summary": "Payment Method - Delete  [available on rails that support recurring]",
        "description": "> **Available on rails that support recurring** \u2014 one that can store an instrument and charge it again. No rail enabled today both declares mandate support and implements it, so no MANDATE is created: `setup_future_usage`, an explicit `mandate_data` block and a zero-amount setup each complete with `200 succeeded` and return `mandate_id: null`, and the later off-session charge is then refused with `ERR_4088`. The payment-method endpoints themselves respond normally and a token row is written \u2014 what is missing is the mandate behind it, so the token cannot be charged. Treat the absence of a `mandate_id` on the first payment as the signal, not the status of that payment. Confirm the rail with your account manager before building against a stored instrument.\n\nDeletes a payment method of a customer.",
        "operationId": "Delete a Payment method",
        "parameters": [
          {
            "name": "method_id",
            "in": "path",
            "description": "The unique identifier for the Payment Method",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Payment Method deleted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentMethodDeleteResponse"
                }
              }
            }
          },
          "404": {
            "description": "Payment Method does not exist in records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/payment_methods/{method_id}/update": {
      "post": {
        "tags": [
          "Payment methods"
        ],
        "summary": "Payment Method - Update  [available on rails that support recurring]",
        "description": "> **Available on rails that support recurring** \u2014 one that can store an instrument and charge it again. No rail enabled today both declares mandate support and implements it, so no MANDATE is created: `setup_future_usage`, an explicit `mandate_data` block and a zero-amount setup each complete with `200 succeeded` and return `mandate_id: null`, and the later off-session charge is then refused with `ERR_4088`. The payment-method endpoints themselves respond normally and a token row is written \u2014 what is missing is the mandate behind it, so the token cannot be charged. Treat the absence of a `mandate_id` on the first payment as the signal, not the status of that payment. Confirm the rail with your account manager before building against a stored instrument.\n\nUpdate an existing payment method of a customer.\n\nThis is a partial update: every field you omit keeps the value already stored. The card\nnumber itself cannot be changed here. Send a new expiry to carry a saved card past its\nexpiry date and keep a recurring series running, and save a new payment method to replace\nthe number.",
        "operationId": "Update a Payment method",
        "parameters": [
          {
            "name": "method_id",
            "in": "path",
            "description": "The unique identifier for the Payment Method",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentMethodUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payment Method updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentMethodResponse"
                }
              }
            }
          },
          "404": {
            "description": "Payment Method does not exist in records"
          }
        },
        "security": [
          {
            "api_key": []
          },
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/customers/{customer_id}/mandates": {
      "get": {
        "tags": [
          "Mandates"
        ],
        "summary": "Mandates - Customer Mandates List  [available on rails that support recurring]",
        "description": "> **Available on rails that support recurring** \u2014 one that can store an instrument and charge it again. No rail enabled today both declares mandate support and implements it, so no MANDATE is created: `setup_future_usage`, an explicit `mandate_data` block and a zero-amount setup each complete with `200 succeeded` and return `mandate_id: null`, and the later off-session charge is then refused with `ERR_4088`. The payment-method endpoints themselves respond normally and a token row is written \u2014 what is missing is the mandate behind it, so the token cannot be charged. Treat the absence of a `mandate_id` on the first payment as the signal, not the status of that payment. Confirm the rail with your account manager before building against a stored instrument.\n\nLists all the mandates for a particular customer id.",
        "operationId": "List Mandates for a Customer",
        "parameters": [
          {
            "name": "customer_id",
            "in": "path",
            "description": "The unique identifier for the customer",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of retrieved mandates for a customer",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MandateResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid Data"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/mandates/list": {
      "get": {
        "tags": [
          "Mandates"
        ],
        "summary": "Mandates - List Mandates  [available on rails that support recurring]",
        "description": "> **Available on rails that support recurring** \u2014 one that can store an instrument and charge it again. No rail enabled today both declares mandate support and implements it, so no MANDATE is created: `setup_future_usage`, an explicit `mandate_data` block and a zero-amount setup each complete with `200 succeeded` and return `mandate_id: null`, and the later off-session charge is then refused with `ERR_4088`. The payment-method endpoints themselves respond normally and a token row is written \u2014 what is missing is the mandate behind it, so the token cannot be charged. Treat the absence of a `mandate_id` on the first payment as the signal, not the status of that payment. Confirm the rail with your account manager before building against a stored instrument.\n\nLists the mandates on your account.",
        "operationId": "List Mandates",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of Mandate Objects to include in the response",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The starting point within the list of objects",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          {
            "name": "mandate_status",
            "in": "query",
            "description": "The status of mandate",
            "required": false,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/MandateStatus"
                }
              ],
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The mandate list was retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MandateResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/mandates/revoke/{mandate_id}": {
      "post": {
        "tags": [
          "Mandates"
        ],
        "summary": "Mandates - Revoke Mandate  [available on rails that support recurring]",
        "description": "> **Available on rails that support recurring** \u2014 one that can store an instrument and charge it again. No rail enabled today both declares mandate support and implements it, so no MANDATE is created: `setup_future_usage`, an explicit `mandate_data` block and a zero-amount setup each complete with `200 succeeded` and return `mandate_id: null`, and the later off-session charge is then refused with `ERR_4088`. The payment-method endpoints themselves respond normally and a token row is written \u2014 what is missing is the mandate behind it, so the token cannot be charged. Treat the absence of a `mandate_id` on the first payment as the signal, not the status of that payment. Confirm the rail with your account manager before building against a stored instrument.\n\nRevokes a mandate created using the Payments/Create API",
        "operationId": "Revoke a Mandate",
        "parameters": [
          {
            "name": "mandate_id",
            "in": "path",
            "description": "The identifier for a mandate",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The mandate was revoked successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MandateRevokedResponse"
                }
              }
            }
          },
          "400": {
            "description": "Mandate does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/mandates/{mandate_id}": {
      "get": {
        "tags": [
          "Mandates"
        ],
        "summary": "Mandates - Retrieve Mandate  [available on rails that support recurring]",
        "description": "> **Available on rails that support recurring** \u2014 one that can store an instrument and charge it again. No rail enabled today both declares mandate support and implements it, so no MANDATE is created: `setup_future_usage`, an explicit `mandate_data` block and a zero-amount setup each complete with `200 succeeded` and return `mandate_id: null`, and the later off-session charge is then refused with `ERR_4088`. The payment-method endpoints themselves respond normally and a token row is written \u2014 what is missing is the mandate behind it, so the token cannot be charged. Treat the absence of a `mandate_id` on the first payment as the signal, not the status of that payment. Confirm the rail with your account manager before building against a stored instrument.\n\nRetrieves a mandate created using the Payments/Create API",
        "operationId": "Retrieve a Mandate",
        "parameters": [
          {
            "name": "mandate_id",
            "in": "path",
            "description": "The identifier for mandate",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The mandate was retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MandateResponse"
                }
              }
            }
          },
          "404": {
            "description": "Mandate does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/subscriptions": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Subscription - Create and Confirm  [available with a billing processor]",
        "description": "> **Available with a billing processor connected.** Subscriptions are billed by a billing processor \u2014 a connector class separate from the rails that move the money \u2014 and `billing_processor_id` is required on every subscription. No billing processor is connected today, so a subscription cannot be created and the call is refused for the missing `billing_processor_id`. This is independent of your payment rail: connecting one is an account configuration step rather than a rail feature, so it is not unlocked by a card or mandate-capable rail. Ask your account manager.\n\nCreates and confirms a subscription in a single request.",
        "operationId": "Create and Confirm Subscription",
        "parameters": [
          {
            "name": "X-Profile-Id",
            "in": "header",
            "description": "Profile ID for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAndConfirmSubscriptionRequest"
              },
              "examples": {
                "Create and confirm subscription": {
                  "value": {
                    "billing": {
                      "address": {
                        "city": "San Fransico",
                        "country": "US",
                        "first_name": "joseph",
                        "last_name": "Doe",
                        "line1": "1467",
                        "line2": "Harrison Street",
                        "line3": "Harrison Street",
                        "state": "California",
                        "zip": "94122"
                      },
                      "phone": {
                        "country_code": "+1",
                        "number": "123456789"
                      }
                    },
                    "customer_id": "cust_123456789",
                    "description": "Hello this is description",
                    "item_price_id": "standard-plan-USD-Monthly",
                    "merchant_reference_id": "mer_ref_123456789",
                    "payment_details": {
                      "authentication_type": "no_three_ds",
                      "capture_method": "automatic",
                      "customer_acceptance": {
                        "acceptance_type": "online",
                        "accepted_at": "1963-05-03T04:07:52.723Z",
                        "online": {
                          "ip_address": "127.0.0.1",
                          "user_agent": "amet irure esse"
                        }
                      },
                      "payment_method": "card",
                      "payment_method_data": {
                        "card": {
                          "card_cvc": "737",
                          "card_exp_month": "03",
                          "card_exp_year": "2030",
                          "card_holder_name": "CLBRW dffdg",
                          "card_number": "4000000000000002"
                        }
                      },
                      "payment_method_type": "credit",
                      "payment_type": "setup_mandate",
                      "return_url": "https://google.com",
                      "setup_future_usage": "off_session"
                    },
                    "shipping": {
                      "address": {
                        "city": "Banglore",
                        "country": "US",
                        "first_name": "joseph",
                        "last_name": "doe",
                        "line1": "sdsdfsdf",
                        "line2": "hsgdbhd",
                        "line3": "alsksoe",
                        "state": "zsaasdas",
                        "zip": "571201"
                      },
                      "phone": {
                        "country_code": "+1",
                        "number": "123456789"
                      }
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Subscription created and confirmed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid subscription data"
          },
          "404": {
            "description": "Customer or plan not found"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/subscriptions/create": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Subscription - Create  [available with a billing processor]",
        "description": "> **Available with a billing processor connected.** Subscriptions are billed by a billing processor \u2014 a connector class separate from the rails that move the money \u2014 and `billing_processor_id` is required on every subscription. No billing processor is connected today, so a subscription cannot be created and the call is refused for the missing `billing_processor_id`. This is independent of your payment rail: connecting one is an account configuration step rather than a rail feature, so it is not unlocked by a card or mandate-capable rail. Ask your account manager.\n\nCreates a subscription that requires separate confirmation.",
        "operationId": "Create Subscription",
        "parameters": [
          {
            "name": "X-Profile-Id",
            "in": "header",
            "description": "Profile ID for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSubscriptionRequest"
              },
              "examples": {
                "Create subscription": {
                  "value": {
                    "customer_id": "cust_123456789",
                    "item_price_id": "standard-plan-USD-Monthly",
                    "payment_details": {
                      "authentication_type": "no_three_ds",
                      "capture_method": "automatic",
                      "return_url": "https://google.com",
                      "setup_future_usage": "off_session"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Subscription created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid subscription data"
          },
          "404": {
            "description": "Customer or plan not found"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/subscriptions/estimate": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Subscription - Get Estimate  [available with a billing processor]",
        "description": "> **Available with a billing processor connected.** Subscriptions are billed by a billing processor \u2014 a connector class separate from the rails that move the money \u2014 and `billing_processor_id` is required on every subscription. No billing processor is connected today, so a subscription cannot be created and the call is refused for the missing `billing_processor_id`. This is independent of your payment rail: connecting one is an account configuration step rather than a rail feature, so it is not unlocked by a card or mandate-capable rail. Ask your account manager.\n\nGets pricing estimate for a subscription.",
        "operationId": "Get Subscription Estimate",
        "parameters": [
          {
            "name": "X-Profile-Id",
            "in": "header",
            "description": "Profile ID for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "plan_id",
            "in": "query",
            "description": "Plan ID for estimation",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customer_id",
            "in": "query",
            "description": "Customer ID for personalized pricing",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "coupon_id",
            "in": "query",
            "description": "Coupon ID to apply discount",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "trial_days",
            "in": "query",
            "description": "Number of trial days",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true,
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Estimate retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EstimateSubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid estimation parameters"
          },
          "404": {
            "description": "Plan not found"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/subscriptions/items": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Subscription - Get Items  [available with a billing processor]",
        "description": "> **Available with a billing processor connected.** Subscriptions are billed by a billing processor \u2014 a connector class separate from the rails that move the money \u2014 and `billing_processor_id` is required on every subscription. No billing processor is connected today, so a subscription cannot be created and the call is refused for the missing `billing_processor_id`. This is independent of your payment rail: connecting one is an account configuration step rather than a rail feature, so it is not unlocked by a card or mandate-capable rail. Ask your account manager.\n\nRetrieves available subscription items.",
        "operationId": "Get Subscription Items",
        "parameters": [
          {
            "name": "X-Profile-Id",
            "in": "header",
            "description": "Profile ID for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to retrieve",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true,
              "minimum": 0
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of items to skip",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true,
              "minimum": 0
            }
          },
          {
            "name": "product_id",
            "in": "query",
            "description": "Filter by product ID",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "item_type",
            "in": "query",
            "description": "Filter by subscription item type plan or addon",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/SubscriptionItemType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of available subscription items",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetSubscriptionItemsResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid query parameters"
          }
        },
        "security": [
          {
            "api_key": []
          },
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/subscriptions/list": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Subscription - List  [available with a billing processor]",
        "description": "> **Available with a billing processor connected.** Subscriptions are billed by a billing processor \u2014 a connector class separate from the rails that move the money \u2014 and `billing_processor_id` is required on every subscription. No billing processor is connected today, so a subscription cannot be created and the call is refused for the missing `billing_processor_id`. This is independent of your payment rail: connecting one is an account configuration step rather than a rail feature, so it is not unlocked by a card or mandate-capable rail. Ask your account manager.\n\nLists the subscriptions on a profile.",
        "operationId": "List Subscriptions",
        "parameters": [
          {
            "name": "X-Profile-Id",
            "in": "header",
            "description": "Profile ID for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of records to return",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Subscriptions retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing the required X-Profile-Id header"
          },
          "401": {
            "description": "Unauthorized request"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/subscriptions/{subscription_id}": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Subscription - Retrieve  [available with a billing processor]",
        "description": "> **Available with a billing processor connected.** Subscriptions are billed by a billing processor \u2014 a connector class separate from the rails that move the money \u2014 and `billing_processor_id` is required on every subscription. No billing processor is connected today, so a subscription cannot be created and the call is refused for the missing `billing_processor_id`. This is independent of your payment rail: connecting one is an account configuration step rather than a rail feature, so it is not unlocked by a card or mandate-capable rail. Ask your account manager.\n\nRetrieves subscription details by ID.",
        "operationId": "Retrieve Subscription",
        "parameters": [
          {
            "name": "subscription_id",
            "in": "path",
            "description": "The unique identifier for the subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Profile-Id",
            "in": "header",
            "description": "Profile ID for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Subscription retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            }
          },
          "404": {
            "description": "Subscription not found"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/subscriptions/{subscription_id}/cancel": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Subscription - Cancel Subscription  [available with a billing processor]",
        "description": "> **Available with a billing processor connected.** Subscriptions are billed by a billing processor \u2014 a connector class separate from the rails that move the money \u2014 and `billing_processor_id` is required on every subscription. No billing processor is connected today, so a subscription cannot be created and the call is refused for the missing `billing_processor_id`. This is independent of your payment rail: connecting one is an account configuration step rather than a rail feature, so it is not unlocked by a card or mandate-capable rail. Ask your account manager.\n\nCancel the subscription",
        "operationId": "Cancel Subscription",
        "parameters": [
          {
            "name": "subscription_id",
            "in": "path",
            "description": "The unique identifier for the subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Profile-Id",
            "in": "header",
            "description": "Profile ID for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelSubscriptionRequest"
              },
              "examples": {
                "Cancel subscription": {
                  "value": {
                    "cancel_option": "immediately",
                    "credit_option_for_current_term_charges": "prorate",
                    "refundable_credits_handling": "schedule_refund",
                    "unbilled_charges_option": "invoice"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Subscription cancelled successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CancelSubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid cancel data"
          },
          "404": {
            "description": "Subscription not found"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/subscriptions/{subscription_id}/confirm": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Subscription - Confirm  [available with a billing processor]",
        "description": "> **Available with a billing processor connected.** Subscriptions are billed by a billing processor \u2014 a connector class separate from the rails that move the money \u2014 and `billing_processor_id` is required on every subscription. No billing processor is connected today, so a subscription cannot be created and the call is refused for the missing `billing_processor_id`. This is independent of your payment rail: connecting one is an account configuration step rather than a rail feature, so it is not unlocked by a card or mandate-capable rail. Ask your account manager.\n\nConfirms a previously created subscription.",
        "operationId": "Confirm Subscription",
        "parameters": [
          {
            "name": "subscription_id",
            "in": "path",
            "description": "The unique identifier for the subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Profile-Id",
            "in": "header",
            "description": "Profile ID for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmSubscriptionRequest"
              },
              "examples": {
                "Confirm subscription": {
                  "value": {
                    "payment_details": {
                      "billing": {
                        "address": {
                          "city": "San Fransico",
                          "country": "US",
                          "first_name": "joseph",
                          "last_name": "Doe",
                          "line1": "1467",
                          "line2": "Harrison Street",
                          "line3": "Harrison Street",
                          "state": "California",
                          "zip": "94122"
                        },
                        "phone": {
                          "country_code": "+1",
                          "number": "123456789"
                        }
                      },
                      "customer_acceptance": {
                        "acceptance_type": "online",
                        "accepted_at": "1963-05-03T04:07:52.723Z",
                        "online": {
                          "ip_address": "127.0.0.1",
                          "user_agent": "amet irure esse"
                        }
                      },
                      "payment_method": "card",
                      "payment_method_data": {
                        "card": {
                          "card_cvc": "737",
                          "card_exp_month": "03",
                          "card_exp_year": "2030",
                          "card_holder_name": "CLBRW dffdg",
                          "card_number": "4111111111111111"
                        }
                      },
                      "payment_method_type": "credit",
                      "shipping": {
                        "address": {
                          "city": "Banglore",
                          "country": "US",
                          "first_name": "joseph",
                          "last_name": "doe",
                          "line1": "sdsdfsdf",
                          "line2": "hsgdbhd",
                          "line3": "alsksoe",
                          "state": "zsaasdas",
                          "zip": "571201"
                        },
                        "phone": {
                          "country_code": "+1",
                          "number": "123456789"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Subscription confirmed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid confirmation data"
          },
          "404": {
            "description": "Subscription not found"
          },
          "409": {
            "description": "Subscription already confirmed"
          }
        },
        "security": [
          {
            "api_key": []
          },
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/subscriptions/{subscription_id}/pause": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Subscription - Pause Subscription  [available with a billing processor]",
        "description": "> **Available with a billing processor connected.** Subscriptions are billed by a billing processor \u2014 a connector class separate from the rails that move the money \u2014 and `billing_processor_id` is required on every subscription. No billing processor is connected today, so a subscription cannot be created and the call is refused for the missing `billing_processor_id`. This is independent of your payment rail: connecting one is an account configuration step rather than a rail feature, so it is not unlocked by a card or mandate-capable rail. Ask your account manager.\n\nPause the subscription",
        "operationId": "Pause Subscription",
        "parameters": [
          {
            "name": "subscription_id",
            "in": "path",
            "description": "The unique identifier for the subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Profile-Id",
            "in": "header",
            "description": "Profile ID for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PauseSubscriptionRequest"
              },
              "examples": {
                "Pause subscription": {
                  "value": {
                    "pause_option": "immediately"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Subscription paused successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PauseSubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid pause data"
          },
          "404": {
            "description": "Subscription not found"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/subscriptions/{subscription_id}/resume": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Subscription - Resume Subscription  [available with a billing processor]",
        "description": "> **Available with a billing processor connected.** Subscriptions are billed by a billing processor \u2014 a connector class separate from the rails that move the money \u2014 and `billing_processor_id` is required on every subscription. No billing processor is connected today, so a subscription cannot be created and the call is refused for the missing `billing_processor_id`. This is independent of your payment rail: connecting one is an account configuration step rather than a rail feature, so it is not unlocked by a card or mandate-capable rail. Ask your account manager.\n\nResume the subscription",
        "operationId": "Resume Subscription",
        "parameters": [
          {
            "name": "subscription_id",
            "in": "path",
            "description": "The unique identifier for the subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Profile-Id",
            "in": "header",
            "description": "Profile ID for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResumeSubscriptionRequest"
              },
              "examples": {
                "Resume subscription": {
                  "value": {
                    "resume_option": "immediately",
                    "unpaid_invoices_handling": "schedule_payment_collection"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Subscription resumed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResumeSubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid resume data"
          },
          "404": {
            "description": "Subscription not found"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/subscriptions/{subscription_id}/update": {
      "put": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Subscription - Update  [available with a billing processor]",
        "description": "> **Available with a billing processor connected.** Subscriptions are billed by a billing processor \u2014 a connector class separate from the rails that move the money \u2014 and `billing_processor_id` is required on every subscription. No billing processor is connected today, so a subscription cannot be created and the call is refused for the missing `billing_processor_id`. This is independent of your payment rail: connecting one is an account configuration step rather than a rail feature, so it is not unlocked by a card or mandate-capable rail. Ask your account manager.\n\nUpdates an existing subscription.",
        "operationId": "Update Subscription",
        "parameters": [
          {
            "name": "subscription_id",
            "in": "path",
            "description": "The unique identifier for the subscription",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Profile-Id",
            "in": "header",
            "description": "Profile ID for authentication",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSubscriptionRequest"
              },
              "examples": {
                "Update subscription": {
                  "value": {
                    "item_price_id": "cbdemo_enterprise-suite-monthly",
                    "plan_id": "cbdemo_enterprise-suite"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Subscription updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid update data"
          },
          "404": {
            "description": "Subscription not found"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/payments/{payment_id}/cancel_post_capture": {
      "post": {
        "tags": [
          "Manual capture"
        ],
        "summary": "Payments - Cancel Post Capture  [available on rails with manual capture]",
        "description": "> **Available on rails with manual capture** \u2014 one that authorizes now and captures later. The rails enabled today capture as they authorize (`automatic`, `sequential_automatic`), so there is no open authorization to capture, extend or reverse afterwards; build against automatic capture unless a manual-capture rail is enabled for your account.\n\nA Payment could can be cancelled when it is in one of these statuses: `succeeded`, `partially_captured`, `partially_captured_and_capturable`.",
        "operationId": "Cancel a Payment Post Capture",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCancelPostCaptureRequest"
              },
              "examples": {
                "Cancel the payment post capture with cancellation reason": {
                  "value": {
                    "cancellation_reason": "requested_by_customer"
                  }
                },
                "Cancel the payment post capture with minimal fields": {
                  "value": {}
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payment canceled post capture",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/payments/{payment_id}/capture": {
      "post": {
        "tags": [
          "Manual capture"
        ],
        "summary": "Payments - Capture  [available on rails with manual capture]",
        "description": "> **Available on rails with manual capture** \u2014 one that authorizes now and captures later. The rails enabled today capture as they authorize (`automatic`, `sequential_automatic`), so there is no open authorization to capture, extend or reverse afterwards; build against automatic capture unless a manual-capture rail is enabled for your account.\n\nCaptures the funds for a previously authorized payment intent where `capture_method` was set to `manual` and the payment is in a `requires_capture` state.\n\nUpon successful capture, the payment status usually transitions to `succeeded`.\nThe `amount_to_capture` can be specified in the request body; it must be less than or equal to the payment's `amount_capturable`. If omitted, the full capturable amount is captured.\n\nA payment must be in a capturable state (e.g., `requires_capture`). Attempting to capture an already `succeeded` (and fully captured) payment or one in an invalid state will lead to an error.\n",
        "operationId": "Capture a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCaptureRequest"
              },
              "examples": {
                "Capture partial amount": {
                  "value": {
                    "amount_to_capture": 654
                  }
                },
                "Capture the full amount": {
                  "value": {}
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payment captured",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/disputes/accept/{dispute_id}": {
      "post": {
        "tags": [
          "Disputes"
        ],
        "summary": "Disputes - Accept Dispute  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nConcede a dispute rather than contesting it. This is final: the disputed amount stays with\nthe customer and the dispute moves to `dispute_accepted`.",
        "operationId": "Accept a Dispute",
        "parameters": [
          {
            "name": "dispute_id",
            "in": "path",
            "description": "The identifier for dispute",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The dispute was accepted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeResponse"
                }
              }
            }
          },
          "404": {
            "description": "Dispute does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/disputes/aggregate": {
      "get": {
        "tags": [
          "Disputes"
        ],
        "summary": "Disputes - Dispute Totals  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nCounts your disputes by status over a time range. `start_time` is required.",
        "operationId": "Get Dispute Totals",
        "parameters": [
          {
            "name": "start_time",
            "in": "query",
            "description": "Count disputes received at or after this time. Required",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "end_time",
            "in": "query",
            "description": "Count disputes received at or before this time. Defaults to now",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The dispute totals were retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputesAggregateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing the required start_time"
          },
          "401": {
            "description": "Unauthorized request"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/disputes/evidence": {
      "post": {
        "tags": [
          "Disputes"
        ],
        "summary": "Disputes - Submit Dispute Evidence  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nContest a dispute by submitting your evidence. The file-shaped fields take a `file_id`\nreturned by `POST /files`; the rest are free text. Submitting forwards the evidence to the\nrail the dispute arrived on.",
        "operationId": "Submit Dispute Evidence",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitEvidenceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The dispute evidence was submitted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeResponse"
                }
              }
            }
          },
          "404": {
            "description": "Dispute does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "put": {
        "tags": [
          "Disputes"
        ],
        "summary": "Disputes - Attach Evidence to Dispute  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nUpload an evidence file and bind it to a dispute in one `multipart/form-data` request, as an\nalternative to `POST /files` followed by `POST /disputes/evidence`. Send `dispute_id`,\n`evidence_type` and the `file` part.",
        "operationId": "Attach Evidence to a Dispute",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/AttachEvidenceRequestForm"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Evidence attached to the dispute",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateFileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid evidence_type, file or dispute_id"
          },
          "404": {
            "description": "Dispute does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Disputes"
        ],
        "summary": "Disputes - Delete Evidence attached to a Dispute  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nDetach one evidence block from a dispute before it is submitted.",
        "operationId": "Delete Evidence attached to a Dispute",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteEvidenceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Evidence deleted from the dispute"
          },
          "404": {
            "description": "Dispute does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/disputes/evidence/{dispute_id}": {
      "get": {
        "tags": [
          "Disputes"
        ],
        "summary": "Disputes - Retrieve Dispute Evidence  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nLists the evidence currently attached to a dispute, with the file metadata for each block.",
        "operationId": "Retrieve Dispute Evidence",
        "parameters": [
          {
            "name": "dispute_id",
            "in": "path",
            "description": "The identifier for dispute",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The dispute evidence was retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DisputeEvidenceBlock"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Dispute does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/disputes/filter": {
      "get": {
        "tags": [
          "Disputes"
        ],
        "summary": "Disputes - List Dispute Filters  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nReturns the facet values that actually occur across your disputes, for building a list view:\nthe currencies, statuses and stages present, and the rails disputes have arrived on.",
        "operationId": "List Dispute Filters",
        "responses": {
          "200": {
            "description": "The dispute filters were retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeListFilters"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/disputes/list": {
      "get": {
        "tags": [
          "Disputes"
        ],
        "summary": "Disputes - List Disputes  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nLists all the Disputes for a merchant",
        "operationId": "List Disputes",
        "parameters": [
          {
            "name": "dispute_id",
            "in": "query",
            "description": "The identifier for dispute",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "payment_id",
            "in": "query",
            "description": "The payment_id against which the dispute was raised",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of Dispute Objects to include in the response",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "The starting point within the list of objects",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "profile_id",
            "in": "query",
            "description": "The identifier for the business profile",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "dispute_status",
            "in": "query",
            "description": "Comma-separated list of dispute statuses to filter by",
            "required": false,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/DisputeStatus"
                }
              ],
              "nullable": true
            }
          },
          {
            "name": "dispute_stage",
            "in": "query",
            "description": "Comma-separated list of dispute stages to filter by",
            "required": false,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/DisputeStage"
                }
              ],
              "nullable": true
            }
          },
          {
            "name": "reason",
            "in": "query",
            "description": "The reason for the dispute",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "Comma-separated list of currencies to filter by",
            "required": false,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Currency"
                }
              ],
              "nullable": true
            }
          },
          {
            "name": "merchant_connector_id",
            "in": "query",
            "description": "The rail (merchant connector account) the dispute arrived on. Values come from `GET /disputes/filter`",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "start_time",
            "in": "query",
            "description": "Return disputes received at or after this time",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "end_time",
            "in": "query",
            "description": "Return disputes received at or before this time. Defaults to now",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The dispute list was retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DisputeResponse"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/disputes/{dispute_id}": {
      "get": {
        "tags": [
          "Disputes"
        ],
        "summary": "Disputes - Retrieve Dispute  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nRetrieves a dispute",
        "operationId": "Retrieve a Dispute",
        "parameters": [
          {
            "name": "dispute_id",
            "in": "path",
            "description": "The identifier for dispute",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "force_sync",
            "in": "query",
            "description": "Decider to enable or disable the connector call for dispute retrieve request",
            "required": false,
            "schema": {
              "type": "boolean",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The dispute was retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeResponse"
                }
              }
            }
          },
          "404": {
            "description": "Dispute does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/files": {
      "post": {
        "tags": [
          "Disputes"
        ],
        "summary": "Files - Create  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nUpload an evidence file against one of your disputes and get back a `file_id` to reference\nfrom `POST /disputes/evidence`.\n\nThis is a `multipart/form-data` request with three parts: `purpose` (always\n`dispute_evidence`), `dispute_id`, and `file`. The content type is detected from the file's\nown bytes rather than the part's declared type, so a format with no recognisable signature \u2014\nplain text, for one \u2014 is rejected with \"File content type not found\".",
        "operationId": "Create a File",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CreateFileRequestForm"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The file was uploaded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateFileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing purpose or dispute_id, empty file, or an undetectable file type"
          },
          "404": {
            "description": "Dispute does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/files/{file_id}": {
      "get": {
        "tags": [
          "Disputes"
        ],
        "summary": "Files - Retrieve  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nDownload a file you previously uploaded. The response is the file's own bytes, served with\nthe content type detected at upload.",
        "operationId": "Retrieve a File",
        "parameters": [
          {
            "name": "file_id",
            "in": "path",
            "description": "The identifier for the file",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The file was retrieved",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "File does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Disputes"
        ],
        "summary": "Files - Delete  [available on rails that report disputes]",
        "description": "> **Available on rails that report disputes.** The rails enabled today raise payment events only, so nothing raises a dispute against a payment taken on them and these endpoints answer with an empty list rather than an incomplete one. They switch on with a rail that reports disputes.\n\nDelete an uploaded file. A file already submitted as evidence stays with the dispute.",
        "operationId": "Delete a File",
        "parameters": [
          {
            "name": "file_id",
            "in": "path",
            "description": "The identifier for the file",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The file was deleted"
          },
          "404": {
            "description": "File does not exist in our records"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/card_issuers": {
      "get": {
        "tags": [
          "Card payments"
        ],
        "summary": "Card Issuer - List  [available on card rails]",
        "description": "> **Available on card rails.** Card acceptance switches on when a card acquirer is enabled for your account \u2014 ask your account manager. No rail enabled today takes cards. The card shape does not change when it does: the card is captured in the secure-fields widget assigned to your account and sent as `payment_method_data.psp_token`. A raw card number is refused in every mode, sandbox included, with `ERR_2029`, because no card number reaches TensorRail.\n\nLists card issuers with optional search filter",
        "operationId": "List Card Issuers",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "Optional search term to filter issuers by name",
            "required": false,
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of results to return",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "nullable": true,
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Card issuers listed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CardIssuerListResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          },
          {
            "jwt_key": []
          }
        ]
      }
    },
    "/payments/session_tokens": {
      "post": {
        "tags": [
          "Card payments"
        ],
        "summary": "Payments - Session token  [available on card rails]",
        "description": "> **Available on card rails.** Card acceptance switches on when a card acquirer is enabled for your account \u2014 ask your account manager. No rail enabled today takes cards. The card shape does not change when it does: the card is captured in the secure-fields widget assigned to your account and sent as `payment_method_data.psp_token`. A raw card number is refused in every mode, sandbox included, with `ERR_2029`, because no card number reaches TensorRail.\n\nCreates a session object or a session token for wallets like Apple Pay, Google Pay, etc. These tokens are used by TensorRail's SDK to initiate these wallets' SDK.",
        "operationId": "Create Session tokens for a Payment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payment session object created or session token was retrieved from wallets",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsSessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/payments/{payment_id}/3ds/authentication": {
      "post": {
        "tags": [
          "Card payments"
        ],
        "summary": "Payments - External 3DS Authentication  [available on card rails]",
        "description": "> **Available on card rails.** Card acceptance switches on when a card acquirer is enabled for your account \u2014 ask your account manager. No rail enabled today takes cards. The card shape does not change when it does: the card is captured in the secure-fields widget assigned to your account and sent as `payment_method_data.psp_token`. A raw card number is refused in every mode, sandbox included, with `ERR_2029`, because no card number reaches TensorRail.\n\nExternal 3DS Authentication is performed and returns the AuthenticationResponse",
        "operationId": "Initiate external authentication for a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsExternalAuthenticationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Authentication created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsExternalAuthenticationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "publishable_key": []
          }
        ]
      }
    },
    "/payments/{payment_id}/complete_authorize": {
      "post": {
        "tags": [
          "Card payments"
        ],
        "summary": "Payments - Complete Authorize  [available on card rails]",
        "operationId": "Complete Authorize a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsCompleteAuthorizeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payments Complete Authorize Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "publishable_key": []
          }
        ],
        "description": "> **Available on card rails.** Card acceptance switches on when a card acquirer is enabled for your account \u2014 ask your account manager. No rail enabled today takes cards. The card shape does not change when it does: the card is captured in the secure-fields widget assigned to your account and sent as `payment_method_data.psp_token`. A raw card number is refused in every mode, sandbox included, with `ERR_2029`, because no card number reaches TensorRail.\n\n"
      }
    },
    "/payments/{payment_id}/extend_authorization": {
      "post": {
        "tags": [
          "Card payments"
        ],
        "summary": "Payments - Extended Authorization  [available on card rails]",
        "description": "> **Available on card rails.** Card acceptance switches on when a card acquirer is enabled for your account \u2014 ask your account manager. No rail enabled today takes cards. The card shape does not change when it does: the card is captured in the secure-fields widget assigned to your account and sent as `payment_method_data.psp_token`. A raw card number is refused in every mode, sandbox included, with `ERR_2029`, because no card number reaches TensorRail.\n\nExtended authorization is available for payments currently in the `requires_capture` status\nCall this endpoint to increase the authorization validity period",
        "operationId": "Extend authorization period for a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Extended authorization for the payment"
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/payments/{payment_id}/incremental_authorization": {
      "post": {
        "tags": [
          "Card payments"
        ],
        "summary": "Payments - Incremental Authorization  [available on card rails]",
        "description": "> **Available on card rails.** Card acceptance switches on when a card acquirer is enabled for your account \u2014 ask your account manager. No rail enabled today takes cards. The card shape does not change when it does: the card is captured in the secure-fields widget assigned to your account and sent as `payment_method_data.psp_token`. A raw card number is refused in every mode, sandbox included, with `ERR_2029`, because no card number reaches TensorRail.\n\nAuthorized amount for a payment can be incremented if it is in status: requires_capture",
        "operationId": "Increment authorized amount for a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsIncrementalAuthorizationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payment authorized amount incremented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/payments/{payment_id}/post_session_tokens": {
      "post": {
        "tags": [
          "Card payments"
        ],
        "summary": "Payments - Post Session Tokens  [available on card rails]",
        "operationId": "Create Post Session Tokens for a Payment",
        "parameters": [
          {
            "name": "payment_id",
            "in": "path",
            "description": "The identifier for payment",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentsPostSessionTokensRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Post Session Token is done",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsPostSessionTokensResponse"
                }
              }
            }
          },
          "400": {
            "description": "Missing mandatory fields",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenericErrorResponseOpenApi"
                }
              }
            }
          }
        },
        "security": [
          {
            "publishable_key": []
          }
        ],
        "description": "> **Available on card rails.** Card acceptance switches on when a card acquirer is enabled for your account \u2014 ask your account manager. No rail enabled today takes cards. The card shape does not change when it does: the card is captured in the secure-fields widget assigned to your account and sent as `payment_method_data.psp_token`. A raw card number is refused in every mode, sandbox included, with `ERR_2029`, because no card number reaches TensorRail.\n\n"
      }
    },
    "/three_ds_decision/execute": {
      "post": {
        "tags": [
          "Card payments"
        ],
        "summary": "3DS Decision - Execute  [available on card rails]",
        "operationId": "Execute 3DS Decision Rule",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ThreeDsDecisionRuleExecuteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "3DS Decision Rule Executed Successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ThreeDsDecisionRuleExecuteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "description": "> **Available on card rails.** Card acceptance switches on when a card acquirer is enabled for your account \u2014 ask your account manager. No rail enabled today takes cards. The card shape does not change when it does: the card is captured in the secure-fields widget assigned to your account and sent as `payment_method_data.psp_token`. A raw card number is refused in every mode, sandbox included, with `ERR_2029`, because no card number reaches TensorRail.\n\n"
      }
    }
  },
  "components": {
    "schemas": {
      "AcceptanceType": {
        "type": "string",
        "description": "This is used to indicate if the mandate was accepted online or offline",
        "enum": [
          "online",
          "offline"
        ]
      },
      "AccountReceivablesHandling": {
        "type": "string",
        "enum": [
          "no_action",
          "schedule_payment_collection",
          "write_off"
        ]
      },
      "AchBankTransfer": {
        "type": "object",
        "required": [
          "bank_account_number",
          "bank_routing_number"
        ],
        "properties": {
          "bank_name": {
            "type": "string",
            "description": "Bank name",
            "example": "Deutsche Bank",
            "nullable": true
          },
          "bank_country_code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountryAlpha2"
              }
            ],
            "nullable": true
          },
          "bank_city": {
            "type": "string",
            "description": "Bank city",
            "example": "California",
            "nullable": true
          },
          "bank_account_number": {
            "type": "string",
            "description": "Bank account number is an unique identifier assigned by a bank to a customer.",
            "example": "000123456"
          },
          "bank_routing_number": {
            "type": "string",
            "description": "[9 digits] Routing number - used in USA for identifying a specific bank.",
            "example": "110000000"
          }
        }
      },
      "AchBillingDetails": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The Email ID for ACH billing",
            "example": "example@me.com",
            "nullable": true
          }
        }
      },
      "AchTransfer": {
        "type": "object",
        "required": [
          "account_number",
          "bank_name",
          "routing_number",
          "swift_code"
        ],
        "properties": {
          "account_number": {
            "type": "string",
            "example": "122385736258"
          },
          "bank_name": {
            "type": "string"
          },
          "routing_number": {
            "type": "string",
            "example": "012"
          },
          "swift_code": {
            "type": "string",
            "example": "234"
          }
        }
      },
      "AcquirerData": {
        "type": "object",
        "description": "Represents data about the acquirer used in the 3DS decision rule.",
        "required": [
          "country"
        ],
        "properties": {
          "country": {
            "$ref": "#/components/schemas/Country"
          },
          "fraud_rate": {
            "type": "number",
            "format": "double",
            "description": "The fraud rate associated with the acquirer.",
            "nullable": true
          }
        }
      },
      "Address": {
        "type": "object",
        "properties": {
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "nullable": true
          },
          "phone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PhoneDetails"
              }
            ],
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AddressDetails": {
        "type": "object",
        "description": "Address details",
        "properties": {
          "city": {
            "type": "string",
            "description": "The city, district, suburb, town, or village of the address.",
            "example": "New York",
            "nullable": true,
            "maxLength": 50
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountryAlpha2"
              }
            ],
            "nullable": true
          },
          "line1": {
            "type": "string",
            "description": "The first line of the street address or P.O. Box.",
            "example": "123, King Street",
            "nullable": true,
            "maxLength": 200
          },
          "line2": {
            "type": "string",
            "description": "The second line of the street address or P.O. Box (e.g., apartment, suite, unit, or building).",
            "example": "Powelson Avenue",
            "nullable": true,
            "maxLength": 50
          },
          "line3": {
            "type": "string",
            "description": "The third line of the street address, if applicable.",
            "example": "Bridgewater",
            "nullable": true,
            "maxLength": 50
          },
          "zip": {
            "type": "string",
            "description": "The zip/postal code for the address",
            "example": "08807",
            "nullable": true,
            "maxLength": 50
          },
          "state": {
            "type": "string",
            "description": "The address state",
            "example": "New York",
            "nullable": true
          },
          "first_name": {
            "type": "string",
            "description": "The first name for the address",
            "example": "John",
            "nullable": true,
            "maxLength": 255
          },
          "last_name": {
            "type": "string",
            "description": "The last name for the address",
            "example": "Doe",
            "nullable": true,
            "maxLength": 255
          },
          "origin_zip": {
            "type": "string",
            "description": "The zip/postal code of the origin",
            "example": "08807",
            "nullable": true,
            "maxLength": 50
          }
        }
      },
      "AlfamartVoucherData": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "description": "The billing first name for Alfamart",
            "example": "Jane",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "description": "The billing second name for Alfamart",
            "example": "Doe",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The Email ID for Alfamart",
            "example": "example@me.com",
            "nullable": true
          }
        }
      },
      "AliPayHkRedirection": {
        "type": "object"
      },
      "AliPayQr": {
        "type": "object"
      },
      "AliPayRedirection": {
        "type": "object"
      },
      "AmazonPayDeliveryOptions": {
        "type": "object",
        "required": [
          "id",
          "price",
          "shipping_method",
          "is_default"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Delivery Option identifier"
          },
          "price": {
            "$ref": "#/components/schemas/AmazonPayDeliveryPrice"
          },
          "shipping_method": {
            "$ref": "#/components/schemas/AmazonPayShippingMethod"
          },
          "is_default": {
            "type": "boolean",
            "description": "Specifies if this delivery option is the default"
          }
        }
      },
      "AmazonPayDeliveryPrice": {
        "type": "object",
        "required": [
          "amount",
          "currency_code"
        ],
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/MinorUnit"
          },
          "currency_code": {
            "$ref": "#/components/schemas/Currency"
          }
        }
      },
      "AmazonPayPaymentIntent": {
        "type": "string",
        "enum": [
          "Confirm",
          "Authorize",
          "AuthorizeWithCapture"
        ]
      },
      "AmazonPayRedirectData": {
        "type": "object"
      },
      "AmazonPaySessionTokenResponse": {
        "type": "object",
        "required": [
          "merchant_id",
          "ledger_currency",
          "store_id",
          "payment_intent",
          "total_shipping_amount",
          "total_tax_amount",
          "total_base_amount",
          "delivery_options"
        ],
        "properties": {
          "merchant_id": {
            "type": "string",
            "description": "Amazon Pay merchant account identifier"
          },
          "ledger_currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "store_id": {
            "type": "string",
            "description": "Amazon Pay store ID"
          },
          "payment_intent": {
            "$ref": "#/components/schemas/AmazonPayPaymentIntent"
          },
          "total_shipping_amount": {
            "type": "string",
            "description": "The total shipping costs"
          },
          "total_tax_amount": {
            "type": "string",
            "description": "The total tax amount for the order"
          },
          "total_base_amount": {
            "type": "string",
            "description": "The total amount for items in the cart"
          },
          "delivery_options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AmazonPayDeliveryOptions"
            },
            "description": "The delivery options available for the provided address"
          }
        }
      },
      "AmazonPayShippingMethod": {
        "type": "object",
        "required": [
          "shipping_method_name",
          "shipping_method_code"
        ],
        "properties": {
          "shipping_method_name": {
            "type": "string",
            "description": "Name of the shipping method"
          },
          "shipping_method_code": {
            "type": "string",
            "description": "Code of the shipping method"
          }
        }
      },
      "AmazonPayWalletData": {
        "type": "object",
        "required": [
          "checkout_session_id"
        ],
        "properties": {
          "checkout_session_id": {
            "type": "string",
            "description": "Checkout Session identifier"
          }
        }
      },
      "AmountFilter": {
        "type": "object",
        "properties": {
          "start_amount": {
            "type": "integer",
            "format": "int64",
            "description": "The start amount to filter list of transactions which are greater than or equal to the start amount",
            "nullable": true
          },
          "end_amount": {
            "type": "integer",
            "format": "int64",
            "description": "The end amount to filter list of transactions which are less than or equal to the end amount",
            "nullable": true
          }
        }
      },
      "AmountInfo": {
        "type": "object",
        "required": [
          "label",
          "amount"
        ],
        "properties": {
          "label": {
            "type": "string",
            "description": "The label must be the name of the merchant."
          },
          "type": {
            "type": "string",
            "description": "A value that indicates whether the line item(Ex: total, tax, discount, or grand total) is final or pending.",
            "nullable": true
          },
          "amount": {
            "type": "string",
            "description": "The total amount for the payment in majot unit string (Ex: 38.02)",
            "example": "38.02"
          }
        }
      },
      "ApplePayAddressParameters": {
        "type": "string",
        "enum": [
          "postalAddress",
          "phone",
          "email"
        ]
      },
      "ApplePayBillingContactFields": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ApplePayAddressParameters"
        }
      },
      "ApplePayCryptogramData": {
        "type": "object",
        "description": "This struct represents the cryptogram data for Apple Pay transactions",
        "required": [
          "online_payment_cryptogram",
          "eci_indicator"
        ],
        "properties": {
          "online_payment_cryptogram": {
            "type": "string",
            "description": "The online payment cryptogram",
            "example": "A1B2C3D4E5F6G7H8"
          },
          "eci_indicator": {
            "type": "string",
            "description": "The ECI (Electronic Commerce Indicator) value",
            "example": "05"
          }
        }
      },
      "ApplePayDecrypt": {
        "type": "object",
        "required": [
          "dpan",
          "expiry_month",
          "expiry_year",
          "card_holder_name"
        ],
        "properties": {
          "dpan": {
            "type": "string",
            "description": "The dpan number associated with card number",
            "example": "4242424242424242"
          },
          "expiry_month": {
            "type": "string",
            "description": "The card's expiry month"
          },
          "expiry_year": {
            "type": "string",
            "description": "The card's expiry year"
          },
          "card_holder_name": {
            "type": "string",
            "description": "The card holder's name",
            "example": "John Doe"
          },
          "card_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardNetwork"
              }
            ],
            "nullable": true
          }
        }
      },
      "ApplePayPaymentData": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ApplePayPredecryptData"
          },
          {
            "type": "string",
            "description": "This variant contains the encrypted Apple Pay payment data as a string."
          }
        ],
        "description": "This enum is used to represent the Apple Pay payment data, which can either be encrypted or decrypted."
      },
      "ApplePayPaymentRequest": {
        "type": "object",
        "required": [
          "country_code",
          "currency_code",
          "total"
        ],
        "properties": {
          "country_code": {
            "$ref": "#/components/schemas/CountryAlpha2"
          },
          "currency_code": {
            "$ref": "#/components/schemas/Currency"
          },
          "total": {
            "$ref": "#/components/schemas/AmountInfo"
          },
          "merchant_capabilities": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of merchant capabilities(ex: whether capable of 3ds or no-3ds)",
            "nullable": true
          },
          "supported_networks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of supported networks",
            "nullable": true
          },
          "merchant_identifier": {
            "type": "string",
            "nullable": true
          },
          "required_billing_contact_fields": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApplePayBillingContactFields"
              }
            ],
            "nullable": true
          },
          "required_shipping_contact_fields": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApplePayShippingContactFields"
              }
            ],
            "nullable": true
          },
          "recurring_payment_request": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApplePayRecurringPaymentRequest"
              }
            ],
            "nullable": true
          }
        }
      },
      "ApplePayPaymentTiming": {
        "type": "string",
        "enum": [
          "immediate",
          "recurring"
        ]
      },
      "ApplePayPredecryptData": {
        "type": "object",
        "description": "This struct represents the decrypted Apple Pay payment data",
        "required": [
          "application_primary_account_number",
          "application_expiration_month",
          "application_expiration_year",
          "payment_data"
        ],
        "properties": {
          "application_primary_account_number": {
            "type": "string",
            "description": "The primary account number",
            "example": "4242424242424242"
          },
          "application_expiration_month": {
            "type": "string",
            "description": "The application expiration date (PAN expiry month)",
            "example": "12"
          },
          "application_expiration_year": {
            "type": "string",
            "description": "The application expiration date (PAN expiry year)",
            "example": "24"
          },
          "payment_data": {
            "$ref": "#/components/schemas/ApplePayCryptogramData"
          }
        }
      },
      "ApplePayRecurringDetails": {
        "type": "object",
        "required": [
          "payment_description",
          "regular_billing",
          "management_url"
        ],
        "properties": {
          "payment_description": {
            "type": "string",
            "description": "A description of the recurring payment that Apple Pay displays to the user in the payment sheet"
          },
          "regular_billing": {
            "$ref": "#/components/schemas/ApplePayRegularBillingDetails"
          },
          "billing_agreement": {
            "type": "string",
            "description": "A localized billing agreement that the payment sheet displays to the user before the user authorizes the payment",
            "nullable": true
          },
          "management_url": {
            "type": "string",
            "description": "A URL to a web page where the user can update or delete the payment method for the recurring payment",
            "example": "https://tensorrail.com"
          }
        }
      },
      "ApplePayRecurringPaymentRequest": {
        "type": "object",
        "required": [
          "payment_description",
          "regular_billing",
          "management_u_r_l"
        ],
        "properties": {
          "payment_description": {
            "type": "string",
            "description": "A description of the recurring payment that Apple Pay displays to the user in the payment sheet"
          },
          "regular_billing": {
            "$ref": "#/components/schemas/ApplePayRegularBillingRequest"
          },
          "billing_agreement": {
            "type": "string",
            "description": "A localized billing agreement that the payment sheet displays to the user before the user authorizes the payment",
            "nullable": true
          },
          "management_u_r_l": {
            "type": "string",
            "description": "A URL to a web page where the user can update or delete the payment method for the recurring payment",
            "example": "https://tensorrail.com"
          }
        }
      },
      "ApplePayRedirectData": {
        "type": "object"
      },
      "ApplePayRegularBillingDetails": {
        "type": "object",
        "required": [
          "label"
        ],
        "properties": {
          "label": {
            "type": "string",
            "description": "The label that Apple Pay displays to the user in the payment sheet with the recurring details"
          },
          "recurring_payment_start_date": {
            "type": "string",
            "format": "date-time",
            "description": "The date of the first payment",
            "example": "2023-09-10T23:59:59Z",
            "nullable": true
          },
          "recurring_payment_end_date": {
            "type": "string",
            "format": "date-time",
            "description": "The date of the final payment",
            "example": "2023-09-10T23:59:59Z",
            "nullable": true
          },
          "recurring_payment_interval_unit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecurringPaymentIntervalUnit"
              }
            ],
            "nullable": true
          },
          "recurring_payment_interval_count": {
            "type": "integer",
            "format": "int32",
            "description": "The number of interval units that make up the total payment interval",
            "nullable": true
          }
        }
      },
      "ApplePayRegularBillingRequest": {
        "type": "object",
        "required": [
          "amount",
          "label",
          "payment_timing"
        ],
        "properties": {
          "amount": {
            "type": "string",
            "description": "The amount of the recurring payment",
            "example": "38.02"
          },
          "label": {
            "type": "string",
            "description": "The label that Apple Pay displays to the user in the payment sheet with the recurring details"
          },
          "payment_timing": {
            "$ref": "#/components/schemas/ApplePayPaymentTiming"
          },
          "recurring_payment_start_date": {
            "type": "string",
            "format": "date-time",
            "description": "The date of the first payment",
            "nullable": true
          },
          "recurring_payment_end_date": {
            "type": "string",
            "format": "date-time",
            "description": "The date of the final payment",
            "nullable": true
          },
          "recurring_payment_interval_unit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecurringPaymentIntervalUnit"
              }
            ],
            "nullable": true
          },
          "recurring_payment_interval_count": {
            "type": "integer",
            "format": "int32",
            "description": "The number of interval units that make up the total payment interval",
            "nullable": true
          }
        }
      },
      "ApplePaySessionResponse": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/ThirdPartySdkSessionResponse"
          },
          {
            "$ref": "#/components/schemas/NoThirdPartySdkSessionResponse"
          },
          {
            "$ref": "#/components/schemas/NullObject"
          }
        ]
      },
      "ApplePayShippingContactFields": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ApplePayAddressParameters"
        }
      },
      "ApplePayThirdPartySdkData": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ApplePayWalletData": {
        "type": "object",
        "required": [
          "payment_data",
          "payment_method",
          "transaction_identifier"
        ],
        "properties": {
          "payment_data": {
            "$ref": "#/components/schemas/ApplePayPaymentData"
          },
          "payment_method": {
            "$ref": "#/components/schemas/ApplepayPaymentMethod"
          },
          "transaction_identifier": {
            "type": "string",
            "description": "The unique identifier for the transaction"
          }
        }
      },
      "ApplepayConnectorMetadataRequest": {
        "type": "object",
        "properties": {
          "session_token_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SessionTokenInfo"
              }
            ],
            "nullable": true
          }
        }
      },
      "ApplepayInitiative": {
        "type": "string",
        "enum": [
          "web",
          "ios"
        ]
      },
      "ApplepayPaymentMethod": {
        "type": "object",
        "required": [
          "display_name",
          "network",
          "type"
        ],
        "properties": {
          "display_name": {
            "type": "string",
            "description": "The name to be displayed on Apple Pay button"
          },
          "network": {
            "type": "string",
            "description": "The network of the Apple pay payment method"
          },
          "type": {
            "type": "string",
            "description": "The type of the payment method"
          },
          "card_exp_month": {
            "type": "string",
            "description": "The card's expiry month",
            "example": "12",
            "nullable": true
          },
          "card_exp_year": {
            "type": "string",
            "description": "The card's expiry year",
            "example": "003925",
            "nullable": true
          },
          "auth_code": {
            "type": "string",
            "description": "Unique authorisation code generated for the payment",
            "nullable": true
          }
        }
      },
      "ApplepaySessionTokenResponse": {
        "type": "object",
        "required": [
          "connector",
          "delayed_session_token",
          "sdk_next_action"
        ],
        "properties": {
          "session_token_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApplePaySessionResponse"
              }
            ],
            "nullable": true
          },
          "payment_request_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApplePayPaymentRequest"
              }
            ],
            "nullable": true
          },
          "connector": {
            "type": "string",
            "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor."
          },
          "delayed_session_token": {
            "type": "boolean",
            "description": "Identifier for the delayed session response"
          },
          "sdk_next_action": {
            "$ref": "#/components/schemas/SdkNextAction"
          },
          "connector_reference_id": {
            "type": "string",
            "description": "The connector transaction id",
            "nullable": true
          },
          "connector_sdk_public_key": {
            "type": "string",
            "description": "The public key id is to invoke third party sdk",
            "nullable": true
          },
          "connector_merchant_id": {
            "type": "string",
            "description": "The connector merchant id",
            "nullable": true
          }
        }
      },
      "AttachEvidenceRequestForm": {
        "type": "object",
        "description": "The `multipart/form-data` body of `PUT /disputes/evidence`.",
        "required": [
          "dispute_id",
          "evidence_type",
          "file"
        ],
        "properties": {
          "dispute_id": {
            "type": "string",
            "description": "The dispute to attach the evidence to.",
            "example": "dp_examplexxxxxxxxxxxxxxxxxxx"
          },
          "evidence_type": {
            "$ref": "#/components/schemas/EvidenceType"
          },
          "file": {
            "type": "string",
            "format": "binary",
            "description": "The file itself. Its type is detected from the content, not from the part's declared\ntype, so a format with no recognisable signature is rejected."
          }
        }
      },
      "AuthenticationType": {
        "type": "string",
        "description": "Specifies the type of cardholder authentication to be applied for a payment.\n\n- `ThreeDs`: Requests 3D Secure (3DS) authentication. If the card is enrolled, 3DS authentication will be activated, potentially shifting chargeback liability to the issuer.\n- `NoThreeDs`: Indicates that 3D Secure authentication should not be performed. The liability for chargebacks typically remains with the merchant. This is often the default if not specified.\n\nNote: The actual authentication behavior can also be influenced by merchant configuration and specific connector defaults. Some connectors might still enforce 3DS or bypass it regardless of this parameter.",
        "enum": [
          "three_ds",
          "no_three_ds"
        ]
      },
      "BHNGiftCardDetails": {
        "type": "object",
        "required": [
          "account_number",
          "pin",
          "cvv2",
          "expiration_date"
        ],
        "properties": {
          "account_number": {
            "type": "string",
            "description": "The gift card or account number"
          },
          "pin": {
            "type": "string",
            "description": "The security PIN for gift cards requiring it"
          },
          "cvv2": {
            "type": "string",
            "description": "The CVV2 code for Open Loop/VPLN products"
          },
          "expiration_date": {
            "type": "string",
            "description": "The expiration date in MMYYYY format for Open Loop/VPLN products"
          }
        }
      },
      "BacsBankTransfer": {
        "type": "object",
        "required": [
          "bank_account_number",
          "bank_sort_code"
        ],
        "properties": {
          "bank_name": {
            "type": "string",
            "description": "Bank name",
            "example": "Deutsche Bank",
            "nullable": true
          },
          "bank_country_code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountryAlpha2"
              }
            ],
            "nullable": true
          },
          "bank_city": {
            "type": "string",
            "description": "Bank city",
            "example": "California",
            "nullable": true
          },
          "bank_account_number": {
            "type": "string",
            "description": "Bank account number is an unique identifier assigned by a bank to a customer.",
            "example": "000123456"
          },
          "bank_sort_code": {
            "type": "string",
            "description": "[6 digits] Sort Code - used in UK and Ireland for identifying a bank and it's branches.",
            "example": "98-76-54"
          }
        }
      },
      "BacsBankTransferInstructions": {
        "type": "object",
        "required": [
          "account_holder_name",
          "account_number",
          "sort_code"
        ],
        "properties": {
          "account_holder_name": {
            "type": "string",
            "example": "Jane Doe"
          },
          "account_number": {
            "type": "string",
            "example": "10244123908"
          },
          "sort_code": {
            "type": "string",
            "example": "012"
          }
        }
      },
      "Bank": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/AchBankTransfer"
          },
          {
            "$ref": "#/components/schemas/BacsBankTransfer"
          },
          {
            "$ref": "#/components/schemas/TrustlyBankTransfer"
          },
          {
            "$ref": "#/components/schemas/SepaBankTransfer"
          },
          {
            "$ref": "#/components/schemas/PixBankTransfer"
          }
        ],
        "description": "Deprecated - Use `BankTransfer` instead"
      },
      "BankCodeResponse": {
        "type": "object",
        "required": [
          "bank_name",
          "eligible_connectors"
        ],
        "properties": {
          "bank_name": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BankNames"
            }
          },
          "eligible_connectors": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "BankDebitBilling": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The billing name for bank debits",
            "example": "John Doe",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The billing email for bank debits",
            "example": "example@example.com",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "nullable": true
          }
        }
      },
      "BankDebitData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "ach_bank_debit"
            ],
            "properties": {
              "ach_bank_debit": {
                "type": "object",
                "description": "Payment Method data for Ach bank debit",
                "required": [
                  "account_number",
                  "routing_number",
                  "bank_account_holder_name",
                  "bank_name",
                  "bank_type",
                  "bank_holder_type"
                ],
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankDebitBilling"
                      }
                    ],
                    "nullable": true
                  },
                  "account_number": {
                    "type": "string",
                    "description": "Account number for ach bank debit payment",
                    "example": "000123456789"
                  },
                  "routing_number": {
                    "type": "string",
                    "description": "Routing number for ach bank debit payment",
                    "example": "110000000"
                  },
                  "bank_account_holder_name": {
                    "type": "string",
                    "example": "John Doe"
                  },
                  "bank_name": {
                    "type": "string",
                    "example": "ACH"
                  },
                  "bank_type": {
                    "type": "string",
                    "example": "Checking"
                  },
                  "bank_holder_type": {
                    "type": "string",
                    "example": "Personal"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "sepa_bank_debit"
            ],
            "properties": {
              "sepa_bank_debit": {
                "type": "object",
                "required": [
                  "iban",
                  "bank_account_holder_name"
                ],
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankDebitBilling"
                      }
                    ],
                    "nullable": true
                  },
                  "iban": {
                    "type": "string",
                    "description": "International bank account number (iban) for SEPA",
                    "example": "DE89370400440532013000"
                  },
                  "bank_account_holder_name": {
                    "type": "string",
                    "description": "Owner name for bank debit",
                    "example": "A. Schneider"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "sepa_guarenteed_bank_debit"
            ],
            "properties": {
              "sepa_guarenteed_bank_debit": {
                "type": "object",
                "required": [
                  "iban",
                  "bank_account_holder_name"
                ],
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankDebitBilling"
                      }
                    ],
                    "nullable": true
                  },
                  "iban": {
                    "type": "string",
                    "description": "International bank account number (iban) for SEPA",
                    "example": "DE89370400440532013000"
                  },
                  "bank_account_holder_name": {
                    "type": "string",
                    "description": "Owner name for bank debit",
                    "example": "A. Schneider"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "becs_bank_debit"
            ],
            "properties": {
              "becs_bank_debit": {
                "type": "object",
                "required": [
                  "account_number",
                  "bsb_number"
                ],
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankDebitBilling"
                      }
                    ],
                    "nullable": true
                  },
                  "account_number": {
                    "type": "string",
                    "description": "Account number for Becs payment method",
                    "example": "000123456"
                  },
                  "bsb_number": {
                    "type": "string",
                    "description": "Bank-State-Branch (bsb) number",
                    "example": "000000"
                  },
                  "bank_account_holder_name": {
                    "type": "string",
                    "description": "Owner name for bank debit",
                    "example": "A. Schneider",
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "bacs_bank_debit"
            ],
            "properties": {
              "bacs_bank_debit": {
                "type": "object",
                "required": [
                  "account_number",
                  "sort_code",
                  "bank_account_holder_name"
                ],
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankDebitBilling"
                      }
                    ],
                    "nullable": true
                  },
                  "account_number": {
                    "type": "string",
                    "description": "Account number for Bacs payment method",
                    "example": "00012345"
                  },
                  "sort_code": {
                    "type": "string",
                    "description": "Sort code for Bacs payment method",
                    "example": "108800"
                  },
                  "bank_account_holder_name": {
                    "type": "string",
                    "description": "holder name for bank debit",
                    "example": "A. Schneider"
                  }
                }
              }
            }
          }
        ]
      },
      "BankDebitDetail": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "ach"
            ],
            "properties": {
              "ach": {
                "type": "object",
                "required": [
                  "account_number",
                  "routing_number"
                ],
                "properties": {
                  "account_number": {
                    "type": "string"
                  },
                  "routing_number": {
                    "type": "string"
                  },
                  "bank_account_holder_name": {
                    "type": "string",
                    "nullable": true
                  },
                  "bank_type": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankType"
                      }
                    ],
                    "nullable": true
                  },
                  "bank_holder_type": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankHolderType"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          }
        ]
      },
      "BankDebitTypes": {
        "type": "object",
        "required": [
          "eligible_connectors"
        ],
        "properties": {
          "eligible_connectors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Reserved. Always empty on merchant-facing responses; raw connector\nnames are never exposed on the merchant surface (leak #17).",
            "example": []
          }
        }
      },
      "BankHolderType": {
        "type": "string",
        "enum": [
          "personal",
          "business"
        ]
      },
      "BankNames": {
        "type": "string",
        "description": "Name of banks supported by TensorRail",
        "enum": [
          "american_express",
          "affin_bank",
          "agro_bank",
          "alliance_bank",
          "am_bank",
          "bank_of_america",
          "bank_of_china",
          "bank_islam",
          "bank_muamalat",
          "bank_rakyat",
          "bank_simpanan_nasional",
          "barclays",
          "blik_p_s_p",
          "capital_one",
          "chase",
          "citi",
          "cimb_bank",
          "discover",
          "navy_federal_credit_union",
          "pentagon_federal_credit_union",
          "synchrony_bank",
          "wells_fargo",
          "abn_amro",
          "asn_bank",
          "bunq",
          "handelsbanken",
          "hong_leong_bank",
          "hsbc_bank",
          "ing",
          "knab",
          "kuwait_finance_house",
          "moneyou",
          "rabobank",
          "regiobank",
          "revolut",
          "sns_bank",
          "triodos_bank",
          "van_lanschot",
          "arzte_und_apotheker_bank",
          "austrian_anadi_bank_ag",
          "bank_austria",
          "bank99_ag",
          "bankhaus_carl_spangler",
          "bankhaus_schelhammer_und_schattera_ag",
          "bank_millennium",
          "bank_p_e_k_a_o_s_a",
          "bawag_psk_ag",
          "bks_bank_ag",
          "brull_kallmus_bank_ag",
          "btv_vier_lander_bank",
          "capital_bank_grawe_gruppe_ag",
          "ceska_sporitelna",
          "dolomitenbank",
          "easybank_ag",
          "e_platby_v_u_b",
          "erste_bank_und_sparkassen",
          "friesland_bank",
          "hypo_alpeadriabank_international_ag",
          "hypo_noe_lb_fur_niederosterreich_u_wien",
          "hypo_oberosterreich_salzburg_steiermark",
          "hypo_tirol_bank_ag",
          "hypo_vorarlberg_bank_ag",
          "hypo_bank_burgenland_aktiengesellschaft",
          "komercni_banka",
          "m_bank",
          "marchfelder_bank",
          "maybank",
          "oberbank_ag",
          "osterreichische_arzte_und_apothekerbank",
          "ocbc_bank",
          "pay_with_i_n_g",
          "place_z_i_p_k_o",
          "platnosc_online_karta_platnicza",
          "posojilnica_bank_e_gen",
          "postova_banka",
          "public_bank",
          "raiffeisen_bankengruppe_osterreich",
          "rhb_bank",
          "schelhammer_capital_bank_ag",
          "standard_chartered_bank",
          "schoellerbank_ag",
          "sparda_bank_wien",
          "sporo_pay",
          "santander_przelew24",
          "tatra_pay",
          "viamo",
          "volksbank_gruppe",
          "volkskreditbank_ag",
          "vr_bank_braunau",
          "uob_bank",
          "pay_with_alior_bank",
          "banki_spoldzielcze",
          "pay_with_inteligo",
          "b_n_p_paribas_poland",
          "bank_nowy_s_a",
          "credit_agricole",
          "pay_with_b_o_s",
          "pay_with_citi_handlowy",
          "pay_with_plus_bank",
          "toyota_bank",
          "velo_bank",
          "e_transfer_pocztowy24",
          "plus_bank",
          "etransfer_pocztowy24",
          "banki_spbdzielcze",
          "bank_nowy_bfg_sa",
          "getin_bank",
          "blik",
          "noble_pay",
          "idea_bank",
          "envelo_bank",
          "nest_przelew",
          "mbank_mtransfer",
          "inteligo",
          "pbac_z_ipko",
          "bnp_paribas",
          "bank_pekao_sa",
          "volkswagen_bank",
          "alior_bank",
          "boz",
          "bangkok_bank",
          "krungsri_bank",
          "krung_thai_bank",
          "the_siam_commercial_bank",
          "kasikorn_bank",
          "open_bank_success",
          "open_bank_failure",
          "open_bank_cancelled",
          "aib",
          "bank_of_scotland",
          "danske_bank",
          "first_direct",
          "first_trust",
          "halifax",
          "lloyds",
          "monzo",
          "nat_west",
          "nationwide_bank",
          "royal_bank_of_scotland",
          "starling",
          "tsb_bank",
          "tesco_bank",
          "ulster_bank",
          "yoursafe",
          "n26",
          "nationale_nederlanden"
        ]
      },
      "BankRedirectBilling": {
        "type": "object",
        "required": [
          "billing_name",
          "email"
        ],
        "properties": {
          "billing_name": {
            "type": "string",
            "description": "The name for which billing is issued",
            "example": "John Doe"
          },
          "email": {
            "type": "string",
            "description": "The billing email for bank redirect",
            "example": "example@example.com"
          }
        }
      },
      "BankRedirectData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "bancontact_card"
            ],
            "properties": {
              "bancontact_card": {
                "type": "object",
                "required": [
                  "card_number",
                  "card_exp_month",
                  "card_exp_year",
                  "card_holder_name"
                ],
                "properties": {
                  "card_number": {
                    "type": "string",
                    "description": "The card number",
                    "example": "4242424242424242"
                  },
                  "card_exp_month": {
                    "type": "string",
                    "description": "The card's expiry month",
                    "example": "24"
                  },
                  "card_exp_year": {
                    "type": "string",
                    "description": "The card's expiry year",
                    "example": "24"
                  },
                  "card_holder_name": {
                    "type": "string",
                    "description": "The card holder's name",
                    "example": "John Test"
                  },
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankRedirectBilling"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "bizum"
            ],
            "properties": {
              "bizum": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "blik"
            ],
            "properties": {
              "blik": {
                "type": "object",
                "properties": {
                  "blik_code": {
                    "type": "string",
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "eps"
            ],
            "properties": {
              "eps": {
                "type": "object",
                "required": [
                  "bank_name",
                  "country"
                ],
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankRedirectBilling"
                      }
                    ],
                    "nullable": true
                  },
                  "bank_name": {
                    "$ref": "#/components/schemas/BankNames"
                  },
                  "country": {
                    "$ref": "#/components/schemas/CountryAlpha2"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "giropay"
            ],
            "properties": {
              "giropay": {
                "type": "object",
                "required": [
                  "country"
                ],
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankRedirectBilling"
                      }
                    ],
                    "nullable": true
                  },
                  "bank_account_bic": {
                    "type": "string",
                    "description": "Bank account bic code",
                    "nullable": true
                  },
                  "bank_account_iban": {
                    "type": "string",
                    "description": "Bank account iban",
                    "nullable": true
                  },
                  "country": {
                    "$ref": "#/components/schemas/CountryAlpha2"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "ideal"
            ],
            "properties": {
              "ideal": {
                "type": "object",
                "required": [
                  "bank_name",
                  "country"
                ],
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankRedirectBilling"
                      }
                    ],
                    "nullable": true
                  },
                  "bank_name": {
                    "$ref": "#/components/schemas/BankNames"
                  },
                  "country": {
                    "$ref": "#/components/schemas/CountryAlpha2"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "interac"
            ],
            "properties": {
              "interac": {
                "type": "object",
                "properties": {
                  "country": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/CountryAlpha2"
                      }
                    ],
                    "nullable": true
                  },
                  "email": {
                    "type": "string",
                    "example": "john.doe@example.com",
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "online_banking_czech_republic"
            ],
            "properties": {
              "online_banking_czech_republic": {
                "type": "object",
                "required": [
                  "issuer"
                ],
                "properties": {
                  "issuer": {
                    "$ref": "#/components/schemas/BankNames"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "online_banking_finland"
            ],
            "properties": {
              "online_banking_finland": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "online_banking_poland"
            ],
            "properties": {
              "online_banking_poland": {
                "type": "object",
                "required": [
                  "issuer"
                ],
                "properties": {
                  "issuer": {
                    "$ref": "#/components/schemas/BankNames"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "online_banking_slovakia"
            ],
            "properties": {
              "online_banking_slovakia": {
                "type": "object",
                "required": [
                  "issuer"
                ],
                "properties": {
                  "issuer": {
                    "$ref": "#/components/schemas/BankNames"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "open_banking_uk"
            ],
            "properties": {
              "open_banking_uk": {
                "type": "object",
                "required": [
                  "issuer",
                  "country"
                ],
                "properties": {
                  "issuer": {
                    "$ref": "#/components/schemas/BankNames"
                  },
                  "country": {
                    "$ref": "#/components/schemas/CountryAlpha2"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "przelewy24"
            ],
            "properties": {
              "przelewy24": {
                "type": "object",
                "properties": {
                  "bank_name": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankNames"
                      }
                    ],
                    "nullable": true
                  },
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankRedirectBilling"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "sofort"
            ],
            "properties": {
              "sofort": {
                "type": "object",
                "required": [
                  "country"
                ],
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankRedirectBilling"
                      }
                    ],
                    "nullable": true
                  },
                  "country": {
                    "$ref": "#/components/schemas/CountryAlpha2"
                  },
                  "preferred_language": {
                    "type": "string",
                    "description": "The preferred language",
                    "example": "en",
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "trustly"
            ],
            "properties": {
              "trustly": {
                "type": "object",
                "required": [
                  "country"
                ],
                "properties": {
                  "country": {
                    "$ref": "#/components/schemas/CountryAlpha2"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "online_banking_fpx"
            ],
            "properties": {
              "online_banking_fpx": {
                "type": "object",
                "required": [
                  "issuer"
                ],
                "properties": {
                  "issuer": {
                    "$ref": "#/components/schemas/BankNames"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "online_banking_thailand"
            ],
            "properties": {
              "online_banking_thailand": {
                "type": "object",
                "required": [
                  "issuer"
                ],
                "properties": {
                  "issuer": {
                    "$ref": "#/components/schemas/BankNames"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "local_bank_redirect"
            ],
            "properties": {
              "local_bank_redirect": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "eft"
            ],
            "properties": {
              "eft": {
                "type": "object",
                "required": [
                  "provider"
                ],
                "properties": {
                  "provider": {
                    "type": "string",
                    "description": "The preferred eft provider",
                    "example": "ozow"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "open_banking"
            ],
            "properties": {
              "open_banking": {
                "type": "object"
              }
            }
          }
        ]
      },
      "BankTransfer": {
        "oneOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/AchBankTransfer"
              },
              {
                "type": "object",
                "required": [
                  "payout_method_type"
                ],
                "properties": {
                  "payout_method_type": {
                    "type": "string",
                    "enum": [
                      "ach"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/BacsBankTransfer"
              },
              {
                "type": "object",
                "required": [
                  "payout_method_type"
                ],
                "properties": {
                  "payout_method_type": {
                    "type": "string",
                    "enum": [
                      "bacs"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/SepaBankTransfer"
              },
              {
                "type": "object",
                "required": [
                  "payout_method_type"
                ],
                "properties": {
                  "payout_method_type": {
                    "type": "string",
                    "enum": [
                      "sepa"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/PixBankTransfer"
              },
              {
                "type": "object",
                "required": [
                  "payout_method_type"
                ],
                "properties": {
                  "payout_method_type": {
                    "type": "string",
                    "enum": [
                      "pix"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/TrustlyBankTransferData"
              },
              {
                "type": "object",
                "required": [
                  "payout_method_type"
                ],
                "properties": {
                  "payout_method_type": {
                    "type": "string",
                    "enum": [
                      "trustly"
                    ]
                  }
                }
              }
            ]
          }
        ],
        "discriminator": {
          "propertyName": "payout_method_type"
        }
      },
      "BankTransferData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "ach_bank_transfer"
            ],
            "properties": {
              "ach_bank_transfer": {
                "type": "object",
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/AchBillingDetails"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "sepa_bank_transfer"
            ],
            "properties": {
              "sepa_bank_transfer": {
                "type": "object",
                "required": [
                  "country"
                ],
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/SepaAndBacsBillingDetails"
                      }
                    ],
                    "nullable": true
                  },
                  "country": {
                    "$ref": "#/components/schemas/CountryAlpha2"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "bacs_bank_transfer"
            ],
            "properties": {
              "bacs_bank_transfer": {
                "type": "object",
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/SepaAndBacsBillingDetails"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "multibanco_bank_transfer"
            ],
            "properties": {
              "multibanco_bank_transfer": {
                "type": "object",
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/MultibancoBillingDetails"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "permata_bank_transfer"
            ],
            "properties": {
              "permata_bank_transfer": {
                "type": "object",
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/DokuBillingDetails"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "bca_bank_transfer"
            ],
            "properties": {
              "bca_bank_transfer": {
                "type": "object",
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/DokuBillingDetails"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "bni_va_bank_transfer"
            ],
            "properties": {
              "bni_va_bank_transfer": {
                "type": "object",
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/DokuBillingDetails"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "bri_va_bank_transfer"
            ],
            "properties": {
              "bri_va_bank_transfer": {
                "type": "object",
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/DokuBillingDetails"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "cimb_va_bank_transfer"
            ],
            "properties": {
              "cimb_va_bank_transfer": {
                "type": "object",
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/DokuBillingDetails"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "danamon_va_bank_transfer"
            ],
            "properties": {
              "danamon_va_bank_transfer": {
                "type": "object",
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/DokuBillingDetails"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "mandiri_va_bank_transfer"
            ],
            "properties": {
              "mandiri_va_bank_transfer": {
                "type": "object",
                "properties": {
                  "billing_details": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/DokuBillingDetails"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "pix"
            ],
            "properties": {
              "pix": {
                "type": "object",
                "properties": {
                  "pix_key": {
                    "type": "string",
                    "description": "Unique key for pix transfer",
                    "example": "a1f4102e-a446-4a57-bcce-6fa48899c1d1",
                    "nullable": true
                  },
                  "cpf": {
                    "type": "string",
                    "description": "CPF is a Brazilian tax identification number",
                    "example": "10599054689",
                    "nullable": true
                  },
                  "cnpj": {
                    "type": "string",
                    "description": "CNPJ is a Brazilian company tax identification number",
                    "example": "74469027417312",
                    "nullable": true
                  },
                  "source_bank_account_id": {
                    "type": "string",
                    "description": "Source bank account number",
                    "example": "8b******-****-****-****-*******08bc5",
                    "nullable": true
                  },
                  "destination_bank_account_id": {
                    "type": "string",
                    "description": "Partially masked destination bank account number _Deprecated: Will be removed in next stable release._",
                    "deprecated": true,
                    "example": "********-****-460b-****-f23b4e71c97b",
                    "nullable": true
                  },
                  "expiry_date": {
                    "type": "string",
                    "description": "The expiration date and time for the Pix QR code in ISO 8601 format",
                    "example": "2025-09-10T10:11:12Z",
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "pix_automatico_qr"
            ],
            "properties": {
              "pix_automatico_qr": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "pix_automatico_push"
            ],
            "properties": {
              "pix_automatico_push": {
                "type": "object",
                "properties": {
                  "account_number": {
                    "type": "string",
                    "description": "Account number for Pix Automatico Push payment method",
                    "example": "550689",
                    "nullable": true
                  },
                  "branch_code": {
                    "type": "string",
                    "description": "Branch code for Pix Automatico Push payment method",
                    "example": "2569",
                    "nullable": true
                  },
                  "bank_identifier": {
                    "type": "string",
                    "description": "Bank identifier for Pix Automatico Push payment method",
                    "example": "91193552",
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "pse"
            ],
            "properties": {
              "pse": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "local_bank_transfer"
            ],
            "properties": {
              "local_bank_transfer": {
                "type": "object",
                "properties": {
                  "bank_code": {
                    "type": "string",
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "instant_bank_transfer"
            ],
            "properties": {
              "instant_bank_transfer": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "instant_bank_transfer_finland"
            ],
            "properties": {
              "instant_bank_transfer_finland": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "instant_bank_transfer_poland"
            ],
            "properties": {
              "instant_bank_transfer_poland": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "indonesian_bank_transfer"
            ],
            "properties": {
              "indonesian_bank_transfer": {
                "type": "object",
                "properties": {
                  "bank_name": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/BankNames"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          }
        ]
      },
      "BankTransferInstructions": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "doku_bank_transfer_instructions"
            ],
            "properties": {
              "doku_bank_transfer_instructions": {
                "$ref": "#/components/schemas/DokuBankTransferInstructions"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "ach_credit_transfer"
            ],
            "properties": {
              "ach_credit_transfer": {
                "$ref": "#/components/schemas/AchTransfer"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "sepa_bank_instructions"
            ],
            "properties": {
              "sepa_bank_instructions": {
                "$ref": "#/components/schemas/SepaBankTransferInstructions"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "bacs_bank_instructions"
            ],
            "properties": {
              "bacs_bank_instructions": {
                "$ref": "#/components/schemas/BacsBankTransferInstructions"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "multibanco"
            ],
            "properties": {
              "multibanco": {
                "$ref": "#/components/schemas/MultibancoTransferInstructions"
              }
            }
          }
        ]
      },
      "BankTransferNextStepsData": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BankTransferInstructions"
          },
          {
            "type": "object",
            "properties": {
              "receiver": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ReceiverDetails"
                  }
                ],
                "nullable": true
              }
            }
          }
        ]
      },
      "BankTransferTypes": {
        "type": "object",
        "required": [
          "eligible_connectors"
        ],
        "properties": {
          "eligible_connectors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Reserved. Always empty on merchant-facing responses; raw connector\nnames are never exposed on the merchant surface (leak #17).",
            "example": []
          }
        }
      },
      "BankType": {
        "type": "string",
        "enum": [
          "checking",
          "savings"
        ]
      },
      "BillingDescriptor": {
        "type": "object",
        "description": "Billing Descriptor information to be sent to the payment gateway",
        "properties": {
          "name": {
            "type": "string",
            "description": "name to be put in billing description",
            "example": "The Online Retailer",
            "nullable": true
          },
          "city": {
            "type": "string",
            "description": "city to be put in billing description",
            "example": "San Francisco",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "phone to be put in billing description",
            "example": "9123456789",
            "nullable": true
          },
          "statement_descriptor": {
            "type": "string",
            "description": "a short description for the payment",
            "nullable": true
          },
          "statement_descriptor_suffix": {
            "type": "string",
            "description": "Concatenated with the prefix (shortened descriptor) or statement descriptor that\u2019s set on the account to form the complete statement descriptor.",
            "nullable": true
          },
          "reference": {
            "type": "string",
            "description": "A reference to be shown on billing description",
            "nullable": true
          }
        }
      },
      "BillingFrequency": {
        "type": "string",
        "description": "Billing frequency for a card installment plan",
        "enum": [
          "month"
        ]
      },
      "BoletoAdditionalDetails": {
        "type": "object",
        "properties": {
          "due_date": {
            "type": "string",
            "description": "Due Date for the Boleto",
            "example": "2026-12-31",
            "nullable": true
          },
          "document_kind": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BoletoDocumentKind"
              }
            ],
            "nullable": true
          },
          "payment_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BoletoPaymentType"
              }
            ],
            "nullable": true
          },
          "covenant_code": {
            "type": "string",
            "example": "3568253",
            "nullable": true
          },
          "pix_key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PixKey"
              }
            ],
            "nullable": true
          }
        }
      },
      "BoletoDocumentKind": {
        "type": "string",
        "enum": [
          "commercial_invoice",
          "service_invoice",
          "promissory_note",
          "rural_promissory_note",
          "receipt",
          "insurance_policy",
          "credit_card_invoice",
          "proposal",
          "deposit_or_funding",
          "cheque",
          "direct_promissory_note",
          "other"
        ]
      },
      "BoletoPaymentType": {
        "type": "string",
        "enum": [
          "fixed_amount",
          "flexible_amount",
          "installment"
        ]
      },
      "BoletoVoucherData": {
        "type": "object",
        "properties": {
          "social_security_number": {
            "type": "string",
            "description": "The shopper's social security number (CPF or CNPJ)",
            "nullable": true
          },
          "bank_number": {
            "type": "string",
            "description": "The shopper's bank account number associated with the boleto",
            "nullable": true
          },
          "document_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DocumentKind"
              }
            ],
            "nullable": true
          },
          "fine_percentage": {
            "type": "string",
            "description": "The fine percentage charged if payment is overdue",
            "nullable": true
          },
          "fine_quantity_days": {
            "type": "string",
            "description": "The number of days after the due date when the fine is applied",
            "nullable": true
          },
          "interest_percentage": {
            "type": "string",
            "description": "The interest percentage charged on late payments",
            "nullable": true
          },
          "write_off_quantity_days": {
            "type": "string",
            "description": "The number of days after which the boleto is written off (canceled)",
            "nullable": true
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Custom messages or instructions to display on the boleto",
            "nullable": true
          },
          "due_date": {
            "type": "string",
            "format": "date",
            "example": "2025-08-22",
            "nullable": true
          }
        }
      },
      "BrowserInformation": {
        "type": "object",
        "description": "Browser information to be used for 3DS 2.0",
        "properties": {
          "color_depth": {
            "type": "integer",
            "format": "int32",
            "description": "Color depth supported by the browser",
            "nullable": true,
            "minimum": 0
          },
          "java_enabled": {
            "type": "boolean",
            "description": "Whether java is enabled in the browser",
            "nullable": true
          },
          "java_script_enabled": {
            "type": "boolean",
            "description": "Whether javascript is enabled in the browser",
            "nullable": true
          },
          "language": {
            "type": "string",
            "description": "Language supported",
            "nullable": true
          },
          "screen_height": {
            "type": "integer",
            "format": "int32",
            "description": "The screen height in pixels",
            "nullable": true,
            "minimum": 0
          },
          "screen_width": {
            "type": "integer",
            "format": "int32",
            "description": "The screen width in pixels",
            "nullable": true,
            "minimum": 0
          },
          "time_zone": {
            "type": "integer",
            "format": "int32",
            "description": "Time zone of the client",
            "nullable": true
          },
          "ip_address": {
            "type": "string",
            "description": "Ip address of the client",
            "nullable": true
          },
          "accept_header": {
            "type": "string",
            "description": "List of headers that are accepted",
            "example": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
            "nullable": true
          },
          "user_agent": {
            "type": "string",
            "description": "User-agent of the browser",
            "nullable": true
          },
          "os_type": {
            "type": "string",
            "description": "The os type of the client device",
            "nullable": true
          },
          "os_version": {
            "type": "string",
            "description": "The os version of the client device",
            "nullable": true
          },
          "device_model": {
            "type": "string",
            "description": "The device model of the client",
            "nullable": true
          },
          "accept_language": {
            "type": "string",
            "description": "Accept-language of the browser",
            "nullable": true
          },
          "referer": {
            "type": "string",
            "description": "Identifier of the source that initiated the request.",
            "nullable": true
          }
        }
      },
      "CancelOption": {
        "type": "string",
        "enum": [
          "immediately",
          "end_of_term",
          "specific_date"
        ]
      },
      "CancelSubscriptionRequest": {
        "type": "object",
        "description": "Request payload for cancelling a subscription.",
        "properties": {
          "cancel_option": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CancelOption"
              }
            ],
            "nullable": true
          },
          "cancel_at": {
            "type": "string",
            "description": "Optional date when the subscription should be cancelled (if not provided, cancels immediately)",
            "nullable": true
          },
          "unbilled_charges_option": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UnbilledChargesOption"
              }
            ],
            "nullable": true
          },
          "credit_option_for_current_term_charges": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CreditOption"
              }
            ],
            "nullable": true
          },
          "account_receivables_handling": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AccountReceivablesHandling"
              }
            ],
            "nullable": true
          },
          "refundable_credits_handling": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RefundableCreditsHandling"
              }
            ],
            "nullable": true
          },
          "cancel_reason_code": {
            "type": "string",
            "description": "Reason code for canceling the subscription",
            "nullable": true
          }
        }
      },
      "CancelSubscriptionResponse": {
        "type": "object",
        "description": "Response payload returned after successfully cancelling a subscription.",
        "required": [
          "id",
          "status",
          "profile_id",
          "merchant_id",
          "customer_id"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/SubscriptionId"
          },
          "status": {
            "$ref": "#/components/schemas/SubscriptionStatus"
          },
          "merchant_reference_id": {
            "type": "string",
            "description": "Merchant specific Unique identifier.",
            "nullable": true
          },
          "profile_id": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "merchant_id": {
            "$ref": "#/components/schemas/MerchantId"
          },
          "customer_id": {
            "$ref": "#/components/schemas/CustomerId"
          },
          "cancelled_at": {
            "type": "string",
            "description": "Date when the subscription was cancelled",
            "nullable": true
          }
        }
      },
      "CaptureMethod": {
        "type": "string",
        "description": "Specifies how the payment is captured.\n- `automatic`: Funds are captured immediately after successful authorization. This is the default behavior if the field is omitted.\n- `manual`: Funds are authorized but not captured. A separate request to the `/payments/{payment_id}/capture` endpoint is required to capture the funds.",
        "enum": [
          "automatic",
          "manual",
          "manual_multiple",
          "scheduled",
          "sequential_automatic"
        ]
      },
      "Card": {
        "type": "object",
        "required": [
          "card_number",
          "card_exp_month",
          "card_exp_year",
          "card_holder_name",
          "card_cvc"
        ],
        "properties": {
          "card_number": {
            "type": "string",
            "description": "The card number",
            "example": "4242424242424242"
          },
          "card_exp_month": {
            "type": "string",
            "description": "The card's expiry month",
            "example": "24"
          },
          "card_exp_year": {
            "type": "string",
            "description": "The card's expiry year",
            "example": "24"
          },
          "card_holder_name": {
            "type": "string",
            "description": "The card holder's name",
            "example": "John Test"
          },
          "card_cvc": {
            "type": "string",
            "description": "The CVC number for the card",
            "example": "242"
          },
          "card_issuer": {
            "type": "string",
            "description": "The name of the issuer of card",
            "example": "chase",
            "nullable": true
          },
          "card_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardNetwork"
              }
            ],
            "nullable": true
          },
          "card_type": {
            "type": "string",
            "example": "CREDIT",
            "nullable": true
          },
          "card_issuing_country": {
            "type": "string",
            "example": "INDIA",
            "nullable": true
          },
          "card_issuing_country_code": {
            "type": "string",
            "example": "IN",
            "nullable": true
          },
          "bank_code": {
            "type": "string",
            "example": "JP_AMEX",
            "nullable": true
          },
          "nick_name": {
            "type": "string",
            "description": "The card holder's nick name",
            "example": "John Test",
            "nullable": true
          }
        }
      },
      "CardCheckoutConfig": {
        "type": "object",
        "description": "Client-side (browser-safe) config the hosted payment page uses to mount a card secure-fields\niframe. See the HPP-01 contract SPEC.",
        "required": [
          "provider",
          "publishable_key"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "description": "Identifier of the card-form provider assigned to your account. Pass it back to the\nTensorRail browser SDK; you do not choose or interpret this value.",
            "example": "card_form_provider_a"
          },
          "publishable_key": {
            "type": "string",
            "description": "Browser-safe publishable/client key for the card form. Safe to expose in the browser \u2014\nit is NOT a TensorRail secret key and cannot be used to move money.",
            "example": "pk_live_EXAMPLE_PUBLISHABLE_KEY"
          }
        }
      },
      "CardDetail": {
        "type": "object",
        "required": [
          "card_number",
          "card_exp_month",
          "card_exp_year",
          "card_holder_name"
        ],
        "properties": {
          "card_number": {
            "type": "string",
            "description": "Card Number",
            "example": "4111111145551142"
          },
          "card_exp_month": {
            "type": "string",
            "description": "Card Expiry Month",
            "example": "10"
          },
          "card_exp_year": {
            "type": "string",
            "description": "Card Expiry Year",
            "example": "25"
          },
          "card_cvc": {
            "type": "string",
            "description": "Card CVC for Volatile Storage",
            "example": "123",
            "nullable": true
          },
          "card_holder_name": {
            "type": "string",
            "description": "Card Holder Name",
            "example": "John Doe"
          },
          "nick_name": {
            "type": "string",
            "description": "Card Holder's Nick Name",
            "example": "John Doe",
            "nullable": true
          },
          "card_issuing_country": {
            "type": "string",
            "description": "Card Issuing Country",
            "nullable": true
          },
          "card_issuing_country_code": {
            "type": "string",
            "description": "Card Issuing Country Code",
            "nullable": true
          },
          "card_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardNetwork"
              }
            ],
            "nullable": true
          },
          "card_issuer": {
            "type": "string",
            "description": "Issuer Bank for Card",
            "nullable": true
          },
          "card_type": {
            "type": "string",
            "description": "Card Type",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CardDetailFromLocker": {
        "type": "object",
        "required": [
          "saved_to_locker"
        ],
        "properties": {
          "scheme": {
            "type": "string",
            "nullable": true
          },
          "issuer_country": {
            "type": "string",
            "nullable": true
          },
          "issuer_country_code": {
            "type": "string",
            "nullable": true
          },
          "last4_digits": {
            "type": "string",
            "nullable": true
          },
          "expiry_month": {
            "type": "string",
            "nullable": true
          },
          "expiry_year": {
            "type": "string",
            "nullable": true
          },
          "card_token": {
            "type": "string",
            "nullable": true
          },
          "card_holder_name": {
            "type": "string",
            "nullable": true
          },
          "card_fingerprint": {
            "type": "string",
            "nullable": true
          },
          "nick_name": {
            "type": "string",
            "nullable": true
          },
          "card_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardNetwork"
              }
            ],
            "nullable": true
          },
          "card_isin": {
            "type": "string",
            "nullable": true
          },
          "card_issuer": {
            "type": "string",
            "nullable": true
          },
          "card_type": {
            "type": "string",
            "nullable": true
          },
          "saved_to_locker": {
            "type": "boolean"
          }
        }
      },
      "CardDetailUpdate": {
        "type": "object",
        "required": [
          "card_exp_month",
          "card_exp_year",
          "card_holder_name"
        ],
        "properties": {
          "card_exp_month": {
            "type": "string",
            "description": "Card Expiry Month",
            "example": "10"
          },
          "card_exp_year": {
            "type": "string",
            "description": "Card Expiry Year",
            "example": "30"
          },
          "card_holder_name": {
            "type": "string",
            "description": "Card Holder Name",
            "example": "John Doe"
          },
          "nick_name": {
            "type": "string",
            "description": "Card Holder's Nick Name",
            "example": "John Doe",
            "nullable": true
          },
          "last4_digits": {
            "type": "string",
            "description": "Card's Last 4 Digits",
            "example": "1111",
            "nullable": true
          },
          "card_issuer": {
            "type": "string",
            "description": "Issuing Bank of the Particular Card",
            "example": "Bank of America",
            "nullable": true
          },
          "issuer_country": {
            "type": "string",
            "description": "The country where that particular card was issued",
            "example": "US",
            "nullable": true
          },
          "issuer_country_code": {
            "type": "string",
            "description": "The country code where that particular card was issued",
            "example": "US",
            "nullable": true
          },
          "card_network": {
            "type": "string",
            "description": "The card network",
            "example": "VISA",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CardDiscovery": {
        "type": "string",
        "description": "Indicates the method by which a card is discovered during a payment",
        "enum": [
          "manual",
          "saved_card",
          "click_to_pay"
        ]
      },
      "CardIssuerListResponse": {
        "type": "object",
        "required": [
          "issuers"
        ],
        "properties": {
          "issuers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CardIssuerResponse"
            }
          }
        }
      },
      "CardIssuerResponse": {
        "type": "object",
        "required": [
          "id",
          "issuer_name"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "issuer_name": {
            "type": "string"
          }
        }
      },
      "CardNetwork": {
        "type": "string",
        "description": "Indicates the card network.",
        "enum": [
          "Visa",
          "Mastercard",
          "AmericanExpress",
          "JCB",
          "DinersClub",
          "Discover",
          "CartesBancaires",
          "UnionPay",
          "Interac",
          "RuPay",
          "Maestro",
          "Star",
          "Pulse",
          "Accel",
          "Nyce"
        ]
      },
      "CardNetworkTypes": {
        "type": "object",
        "required": [
          "eligible_connectors"
        ],
        "properties": {
          "card_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardNetwork"
              }
            ],
            "nullable": true
          },
          "surcharge_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SurchargeDetailsResponse"
              }
            ],
            "nullable": true
          },
          "eligible_connectors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Reserved. Always empty on merchant-facing responses; raw connector\nnames are never exposed on the merchant surface (leak #17).",
            "example": []
          }
        }
      },
      "CardRedirectData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "knet"
            ],
            "properties": {
              "knet": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "benefit"
            ],
            "properties": {
              "benefit": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "momo_atm"
            ],
            "properties": {
              "momo_atm": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "card_redirect"
            ],
            "properties": {
              "card_redirect": {
                "type": "object"
              }
            }
          }
        ]
      },
      "CardToken": {
        "type": "object",
        "required": [
          "card_holder_name"
        ],
        "properties": {
          "card_holder_name": {
            "type": "string",
            "description": "The card holder's name",
            "example": "John Test"
          },
          "card_cvc": {
            "type": "string",
            "description": "The CVC number for the card",
            "nullable": true
          }
        }
      },
      "CardWithLimitedData": {
        "type": "object",
        "required": [
          "card_number"
        ],
        "properties": {
          "card_number": {
            "type": "string",
            "description": "The card number",
            "example": "4242424242424242"
          },
          "card_exp_month": {
            "type": "string",
            "description": "The card's expiry month",
            "example": "24",
            "nullable": true
          },
          "card_exp_year": {
            "type": "string",
            "description": "The card's expiry year",
            "example": "24",
            "nullable": true
          },
          "card_holder_name": {
            "type": "string",
            "description": "The card holder's name",
            "example": "John Test",
            "nullable": true
          },
          "eci": {
            "type": "string",
            "description": "The ECI(Electronic Commerce Indicator) value for this authentication.",
            "nullable": true
          }
        }
      },
      "CashappQr": {
        "type": "object"
      },
      "ChargesHandling": {
        "type": "string",
        "enum": [
          "invoice_immediately",
          "add_to_unbilled_charges"
        ]
      },
      "CheckoutBranding": {
        "type": "object",
        "description": "Branding a merchant set for its hosted checkout. Field names deliberately\nmirror `business_profile.payment_link_config` one-for-one, so the dashboard,\nthe engine and the hosted page all speak one vocabulary and a rename cannot\nsilently drop a field in transit.",
        "properties": {
          "theme": {
            "type": "string",
            "description": "Primary theme colour, e.g. \"#4F7CFF\".",
            "nullable": true
          },
          "logo": {
            "type": "string",
            "description": "Absolute URL of the merchant's logo.",
            "nullable": true
          },
          "seller_name": {
            "type": "string",
            "description": "Display name shown to the payer.",
            "nullable": true
          },
          "payment_button_colour": {
            "type": "string",
            "description": "Pay-button background colour.",
            "nullable": true
          },
          "payment_button_text_colour": {
            "type": "string",
            "description": "Pay-button text colour.",
            "nullable": true
          },
          "background_colour": {
            "type": "string",
            "description": "Page background colour.",
            "nullable": true
          }
        }
      },
      "ClickToPaySessionResponse": {
        "type": "object",
        "required": [
          "dpa_id",
          "dpa_name",
          "locale",
          "card_brands",
          "acquirer_bin",
          "acquirer_merchant_id",
          "merchant_country_code",
          "transaction_amount",
          "transaction_currency_code"
        ],
        "properties": {
          "dpa_id": {
            "type": "string"
          },
          "dpa_name": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          },
          "card_brands": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CardNetwork"
            },
            "example": "[Visa, Mastercard]"
          },
          "acquirer_bin": {
            "type": "string"
          },
          "acquirer_merchant_id": {
            "type": "string"
          },
          "merchant_category_code": {
            "type": "string",
            "nullable": true
          },
          "merchant_country_code": {
            "type": "string"
          },
          "transaction_amount": {
            "type": "string",
            "example": "38.02"
          },
          "transaction_currency_code": {
            "$ref": "#/components/schemas/Currency"
          },
          "phone_number": {
            "type": "string",
            "example": "9123456789",
            "nullable": true,
            "maxLength": 255
          },
          "email": {
            "type": "string",
            "example": "johntest@test.com",
            "nullable": true,
            "maxLength": 255
          },
          "phone_country_code": {
            "type": "string",
            "nullable": true
          },
          "provider": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CtpServiceProvider"
              }
            ],
            "nullable": true
          },
          "dpa_client_id": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ConfirmSubscriptionPaymentDetails": {
        "type": "object",
        "required": [
          "payment_method"
        ],
        "properties": {
          "shipping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "billing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "payment_method_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodDataRequest"
              }
            ],
            "nullable": true
          },
          "customer_acceptance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerAcceptance"
              }
            ],
            "nullable": true
          },
          "payment_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentType"
              }
            ],
            "nullable": true
          },
          "payment_token": {
            "type": "string",
            "example": "token_sxJdmpUnpNsJk5VWzcjl",
            "nullable": true
          }
        }
      },
      "ConfirmSubscriptionRequest": {
        "type": "object",
        "required": [
          "payment_details"
        ],
        "properties": {
          "client_secret": {
            "type": "string",
            "description": "This is a token which expires after 15 minutes, used from the client to authenticate and create sessions from the SDK",
            "nullable": true
          },
          "payment_details": {
            "$ref": "#/components/schemas/ConfirmSubscriptionPaymentDetails"
          }
        }
      },
      "Connector": {
        "type": "string",
        "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor."
      },
      "ConnectorMetadata": {
        "type": "object",
        "description": "Some payment methods need extra information alongside the payment. Find the specific details in the child attributes below.",
        "properties": {
          "apple_pay": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApplepayConnectorMetadataRequest"
              }
            ],
            "nullable": true
          }
        }
      },
      "ConnectorVolumeSplit": {
        "type": "object",
        "required": [
          "connector",
          "split"
        ],
        "properties": {
          "connector": {
            "$ref": "#/components/schemas/RoutableConnectorChoice",
            "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor."
          },
          "split": {
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "Country": {
        "type": "string",
        "enum": [
          "Afghanistan",
          "AlandIslands",
          "Albania",
          "Algeria",
          "AmericanSamoa",
          "Andorra",
          "Angola",
          "Anguilla",
          "Antarctica",
          "AntiguaAndBarbuda",
          "Argentina",
          "Armenia",
          "Aruba",
          "Australia",
          "Austria",
          "Azerbaijan",
          "Bahamas",
          "Bahrain",
          "Bangladesh",
          "Barbados",
          "Belarus",
          "Belgium",
          "Belize",
          "Benin",
          "Bermuda",
          "Bhutan",
          "BoliviaPlurinationalState",
          "BonaireSintEustatiusAndSaba",
          "BosniaAndHerzegovina",
          "Botswana",
          "BouvetIsland",
          "Brazil",
          "BritishIndianOceanTerritory",
          "BruneiDarussalam",
          "Bulgaria",
          "BurkinaFaso",
          "Burundi",
          "CaboVerde",
          "Cambodia",
          "Cameroon",
          "Canada",
          "CaymanIslands",
          "CentralAfricanRepublic",
          "Chad",
          "Chile",
          "China",
          "ChristmasIsland",
          "CocosKeelingIslands",
          "Colombia",
          "Comoros",
          "Congo",
          "CongoDemocraticRepublic",
          "CookIslands",
          "CostaRica",
          "CotedIvoire",
          "Croatia",
          "Cuba",
          "Curacao",
          "Cyprus",
          "Czechia",
          "Denmark",
          "Djibouti",
          "Dominica",
          "DominicanRepublic",
          "Ecuador",
          "Egypt",
          "ElSalvador",
          "EquatorialGuinea",
          "Eritrea",
          "Estonia",
          "Ethiopia",
          "FalklandIslandsMalvinas",
          "FaroeIslands",
          "Fiji",
          "Finland",
          "France",
          "FrenchGuiana",
          "FrenchPolynesia",
          "FrenchSouthernTerritories",
          "Gabon",
          "Gambia",
          "Georgia",
          "Germany",
          "Ghana",
          "Gibraltar",
          "Greece",
          "Greenland",
          "Grenada",
          "Guadeloupe",
          "Guam",
          "Guatemala",
          "Guernsey",
          "Guinea",
          "GuineaBissau",
          "Guyana",
          "Haiti",
          "HeardIslandAndMcDonaldIslands",
          "HolySee",
          "Honduras",
          "HongKong",
          "Hungary",
          "Iceland",
          "India",
          "Indonesia",
          "IranIslamicRepublic",
          "Iraq",
          "Ireland",
          "IsleOfMan",
          "Israel",
          "Italy",
          "Jamaica",
          "Japan",
          "Jersey",
          "Jordan",
          "Kazakhstan",
          "Kenya",
          "Kiribati",
          "KoreaDemocraticPeoplesRepublic",
          "KoreaRepublic",
          "Kuwait",
          "Kyrgyzstan",
          "LaoPeoplesDemocraticRepublic",
          "Latvia",
          "Lebanon",
          "Lesotho",
          "Liberia",
          "Libya",
          "Liechtenstein",
          "Lithuania",
          "Luxembourg",
          "Macao",
          "MacedoniaTheFormerYugoslavRepublic",
          "Madagascar",
          "Malawi",
          "Malaysia",
          "Maldives",
          "Mali",
          "Malta",
          "MarshallIslands",
          "Martinique",
          "Mauritania",
          "Mauritius",
          "Mayotte",
          "Mexico",
          "MicronesiaFederatedStates",
          "MoldovaRepublic",
          "Monaco",
          "Mongolia",
          "Montenegro",
          "Montserrat",
          "Morocco",
          "Mozambique",
          "Myanmar",
          "Namibia",
          "Nauru",
          "Nepal",
          "Netherlands",
          "NewCaledonia",
          "NewZealand",
          "Nicaragua",
          "Niger",
          "Nigeria",
          "Niue",
          "NorfolkIsland",
          "NorthernMarianaIslands",
          "Norway",
          "Oman",
          "Pakistan",
          "Palau",
          "PalestineState",
          "Panama",
          "PapuaNewGuinea",
          "Paraguay",
          "Peru",
          "Philippines",
          "Pitcairn",
          "Poland",
          "Portugal",
          "PuertoRico",
          "Qatar",
          "Reunion",
          "Romania",
          "RussianFederation",
          "Rwanda",
          "SaintBarthelemy",
          "SaintHelenaAscensionAndTristandaCunha",
          "SaintKittsAndNevis",
          "SaintLucia",
          "SaintMartinFrenchpart",
          "SaintPierreAndMiquelon",
          "SaintVincentAndTheGrenadines",
          "Samoa",
          "SanMarino",
          "SaoTomeAndPrincipe",
          "SaudiArabia",
          "Senegal",
          "Serbia",
          "Seychelles",
          "SierraLeone",
          "Singapore",
          "SintMaartenDutchpart",
          "Slovakia",
          "Slovenia",
          "SolomonIslands",
          "Somalia",
          "SouthAfrica",
          "SouthGeorgiaAndTheSouthSandwichIslands",
          "SouthSudan",
          "Spain",
          "SriLanka",
          "Sudan",
          "Suriname",
          "SvalbardAndJanMayen",
          "Swaziland",
          "Sweden",
          "Switzerland",
          "SyrianArabRepublic",
          "TaiwanProvinceOfChina",
          "Tajikistan",
          "TanzaniaUnitedRepublic",
          "Thailand",
          "TimorLeste",
          "Togo",
          "Tokelau",
          "Tonga",
          "TrinidadAndTobago",
          "Tunisia",
          "Turkey",
          "Turkmenistan",
          "TurksAndCaicosIslands",
          "Tuvalu",
          "Uganda",
          "Ukraine",
          "UnitedArabEmirates",
          "UnitedKingdomOfGreatBritainAndNorthernIreland",
          "UnitedStatesOfAmerica",
          "UnitedStatesMinorOutlyingIslands",
          "Uruguay",
          "Uzbekistan",
          "Vanuatu",
          "VenezuelaBolivarianRepublic",
          "Vietnam",
          "VirginIslandsBritish",
          "VirginIslandsUS",
          "WallisAndFutuna",
          "WesternSahara",
          "Yemen",
          "Zambia",
          "Zimbabwe"
        ]
      },
      "CountryAlpha2": {
        "type": "string",
        "enum": [
          "AF",
          "AX",
          "AL",
          "DZ",
          "AS",
          "AD",
          "AO",
          "AI",
          "AQ",
          "AG",
          "AR",
          "AM",
          "AW",
          "AU",
          "AT",
          "AZ",
          "BS",
          "BH",
          "BD",
          "BB",
          "BY",
          "BE",
          "BZ",
          "BJ",
          "BM",
          "BT",
          "BO",
          "BQ",
          "BA",
          "BW",
          "BV",
          "BR",
          "IO",
          "BN",
          "BG",
          "BF",
          "BI",
          "KH",
          "CM",
          "CA",
          "CV",
          "KY",
          "CF",
          "TD",
          "CL",
          "CN",
          "CX",
          "CC",
          "CO",
          "KM",
          "CG",
          "CD",
          "CK",
          "CR",
          "CI",
          "HR",
          "CU",
          "CW",
          "CY",
          "CZ",
          "DK",
          "DJ",
          "DM",
          "DO",
          "EC",
          "EG",
          "SV",
          "GQ",
          "ER",
          "EE",
          "ET",
          "FK",
          "FO",
          "FJ",
          "FI",
          "FR",
          "GF",
          "PF",
          "TF",
          "GA",
          "GM",
          "GE",
          "DE",
          "GH",
          "GI",
          "GR",
          "GL",
          "GD",
          "GP",
          "GU",
          "GT",
          "GG",
          "GN",
          "GW",
          "GY",
          "HT",
          "HM",
          "VA",
          "HN",
          "HK",
          "HU",
          "IS",
          "IN",
          "ID",
          "IR",
          "IQ",
          "IE",
          "IM",
          "IL",
          "IT",
          "JM",
          "JP",
          "JE",
          "JO",
          "KZ",
          "KE",
          "KI",
          "KP",
          "KR",
          "KW",
          "KG",
          "LA",
          "LV",
          "LB",
          "LS",
          "LR",
          "LY",
          "LI",
          "LT",
          "LU",
          "MO",
          "MK",
          "MG",
          "MW",
          "MY",
          "MV",
          "ML",
          "MT",
          "MH",
          "MQ",
          "MR",
          "MU",
          "YT",
          "MX",
          "FM",
          "MD",
          "MC",
          "MN",
          "ME",
          "MS",
          "MA",
          "MZ",
          "MM",
          "NA",
          "NR",
          "NP",
          "NL",
          "NC",
          "NZ",
          "NI",
          "NE",
          "NG",
          "NU",
          "NF",
          "MP",
          "NO",
          "OM",
          "PK",
          "PW",
          "PS",
          "PA",
          "PG",
          "PY",
          "PE",
          "PH",
          "PN",
          "PL",
          "PT",
          "PR",
          "QA",
          "RE",
          "RO",
          "RU",
          "RW",
          "BL",
          "SH",
          "KN",
          "LC",
          "MF",
          "PM",
          "VC",
          "WS",
          "SM",
          "ST",
          "SA",
          "SN",
          "RS",
          "SC",
          "SL",
          "SG",
          "SX",
          "SK",
          "SI",
          "SB",
          "SO",
          "ZA",
          "GS",
          "SS",
          "ES",
          "LK",
          "SD",
          "SR",
          "SJ",
          "SZ",
          "SE",
          "CH",
          "SY",
          "TW",
          "TJ",
          "TZ",
          "TH",
          "TL",
          "TG",
          "TK",
          "TO",
          "TT",
          "TN",
          "TR",
          "TM",
          "TC",
          "TV",
          "UG",
          "UA",
          "AE",
          "GB",
          "UM",
          "UY",
          "UZ",
          "VU",
          "VE",
          "VN",
          "VG",
          "VI",
          "WF",
          "EH",
          "YE",
          "ZM",
          "ZW",
          "US"
        ]
      },
      "CreateAndConfirmSubscriptionRequest": {
        "type": "object",
        "required": [
          "item_price_id",
          "customer_id",
          "payment_details"
        ],
        "properties": {
          "plan_id": {
            "type": "string",
            "description": "Identifier for the associated plan_id.",
            "nullable": true
          },
          "item_price_id": {
            "type": "string",
            "description": "Identifier for the associated item_price_id for the subscription."
          },
          "coupon_code": {
            "type": "string",
            "description": "Identifier for the coupon code for the subscription.",
            "nullable": true
          },
          "customer_id": {
            "$ref": "#/components/schemas/CustomerId"
          },
          "billing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "shipping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "payment_details": {
            "$ref": "#/components/schemas/PaymentDetails"
          },
          "merchant_reference_id": {
            "type": "string",
            "description": "Merchant specific Unique identifier.",
            "nullable": true
          }
        }
      },
      "CreateFileRequestForm": {
        "type": "object",
        "description": "The `multipart/form-data` body of `POST /files`.",
        "required": [
          "purpose",
          "dispute_id",
          "file"
        ],
        "properties": {
          "purpose": {
            "type": "string",
            "description": "What the file is for. `dispute_evidence` is the only accepted value.",
            "example": "dispute_evidence"
          },
          "dispute_id": {
            "type": "string",
            "description": "The dispute this evidence belongs to. Required, and it must resolve to one of your\ndisputes.",
            "example": "dp_examplexxxxxxxxxxxxxxxxxxx"
          },
          "file": {
            "type": "string",
            "format": "binary",
            "description": "The file itself. Its type is detected from the content, not from the part's declared\ntype, so a format with no recognisable signature is rejected."
          }
        }
      },
      "CreateFileResponse": {
        "type": "object",
        "required": [
          "file_id"
        ],
        "properties": {
          "file_id": {
            "type": "string",
            "description": "ID of the file created"
          }
        }
      },
      "CreateSubscriptionPaymentDetails": {
        "type": "object",
        "required": [
          "return_url"
        ],
        "properties": {
          "return_url": {
            "type": "string",
            "description": "The url to which user must be redirected to after completion of the purchase"
          },
          "setup_future_usage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FutureUsage"
              }
            ],
            "nullable": true
          },
          "capture_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CaptureMethod"
              }
            ],
            "nullable": true
          },
          "authentication_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthenticationType"
              }
            ],
            "nullable": true
          },
          "payment_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentType"
              }
            ],
            "nullable": true
          }
        }
      },
      "CreateSubscriptionRequest": {
        "type": "object",
        "description": "Request payload for creating a subscription.\n\nThis struct captures details required to create a subscription,\nincluding plan, profile, merchant connector, and optional customer info.",
        "required": [
          "item_price_id",
          "customer_id",
          "payment_details"
        ],
        "properties": {
          "merchant_reference_id": {
            "type": "string",
            "description": "Merchant specific Unique identifier.",
            "nullable": true
          },
          "item_price_id": {
            "type": "string",
            "description": "Identifier for the associated item_price_id for the subscription."
          },
          "plan_id": {
            "type": "string",
            "description": "Identifier for the subscription plan.",
            "nullable": true
          },
          "coupon_code": {
            "type": "string",
            "description": "Optional coupon code applied to the subscription.",
            "nullable": true
          },
          "customer_id": {
            "$ref": "#/components/schemas/CustomerId"
          },
          "payment_details": {
            "$ref": "#/components/schemas/CreateSubscriptionPaymentDetails"
          },
          "billing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "shipping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          }
        }
      },
      "CreditOption": {
        "type": "string",
        "enum": [
          "none",
          "prorate",
          "full"
        ]
      },
      "CryptoData": {
        "type": "object",
        "properties": {
          "pay_currency": {
            "type": "string",
            "nullable": true
          },
          "network": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "Cryptogram": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "cavv"
            ],
            "properties": {
              "cavv": {
                "type": "object",
                "description": "Cardholder Authentication Verification Value (CAVV) cryptogram.",
                "properties": {
                  "authentication_cryptogram": {
                    "type": "string",
                    "description": "The authentication cryptogram provided by the issuer or ACS.",
                    "nullable": true
                  }
                }
              }
            }
          }
        ],
        "description": "Represents the 3DS cryptogram data returned after authentication."
      },
      "CtpServiceDetails": {
        "type": "object",
        "properties": {
          "merchant_transaction_id": {
            "type": "string",
            "description": "merchant transaction id",
            "nullable": true
          },
          "correlation_id": {
            "type": "string",
            "description": "network transaction correlation id",
            "nullable": true
          },
          "x_src_flow_id": {
            "type": "string",
            "description": "session transaction flow id",
            "nullable": true
          },
          "provider": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CtpServiceProvider"
              }
            ],
            "nullable": true
          },
          "encrypted_payload": {
            "type": "string",
            "description": "Encrypted payload",
            "nullable": true
          }
        }
      },
      "CtpServiceProvider": {
        "type": "string",
        "enum": [
          "visa",
          "mastercard"
        ]
      },
      "Currency": {
        "type": "string",
        "description": "The three-letter ISO 4217 currency code (e.g., \"USD\", \"EUR\") for the payment amount. This field is mandatory for creating a payment.",
        "enum": [
          "AED",
          "AFN",
          "ALL",
          "AMD",
          "ANG",
          "AOA",
          "ARS",
          "AUD",
          "AWG",
          "AZN",
          "BAM",
          "BBD",
          "BDT",
          "BGN",
          "BHD",
          "BIF",
          "BMD",
          "BND",
          "BOB",
          "BRL",
          "BSD",
          "BTN",
          "BWP",
          "BYN",
          "BZD",
          "CAD",
          "CDF",
          "CHF",
          "CLF",
          "CLP",
          "CNY",
          "COP",
          "CRC",
          "CUC",
          "CUP",
          "CVE",
          "CZK",
          "DJF",
          "DKK",
          "DOP",
          "DZD",
          "EGP",
          "ERN",
          "ETB",
          "EUR",
          "FJD",
          "FKP",
          "GBP",
          "GEL",
          "GHS",
          "GIP",
          "GMD",
          "GNF",
          "GTQ",
          "GYD",
          "HKD",
          "HNL",
          "HRK",
          "HTG",
          "HUF",
          "IDR",
          "ILS",
          "INR",
          "IQD",
          "IRR",
          "ISK",
          "JMD",
          "JOD",
          "JPY",
          "KES",
          "KGS",
          "KHR",
          "KMF",
          "KPW",
          "KRW",
          "KWD",
          "KYD",
          "KZT",
          "LAK",
          "LBP",
          "LKR",
          "LRD",
          "LSL",
          "LYD",
          "MAD",
          "MDL",
          "MGA",
          "MKD",
          "MMK",
          "MNT",
          "MOP",
          "MRU",
          "MUR",
          "MVR",
          "MWK",
          "MXN",
          "MYR",
          "MZN",
          "NAD",
          "NGN",
          "NIO",
          "NOK",
          "NPR",
          "NZD",
          "OMR",
          "PAB",
          "PEN",
          "PGK",
          "PHP",
          "PKR",
          "PLN",
          "PYG",
          "QAR",
          "RON",
          "RSD",
          "RUB",
          "RWF",
          "SAR",
          "SBD",
          "SCR",
          "SDG",
          "SEK",
          "SGD",
          "SHP",
          "SLE",
          "SLL",
          "SOS",
          "SRD",
          "SSP",
          "STD",
          "STN",
          "SVC",
          "SYP",
          "SZL",
          "THB",
          "TJS",
          "TMT",
          "TND",
          "TOP",
          "TRY",
          "TTD",
          "TWD",
          "TZS",
          "UAH",
          "UGX",
          "USD",
          "UYU",
          "UZS",
          "VES",
          "VND",
          "VUV",
          "WST",
          "XAF",
          "XCD",
          "XOF",
          "XPF",
          "YER",
          "ZAR",
          "ZMW",
          "ZWL"
        ]
      },
      "CustomMessage": {
        "type": "object",
        "description": "Custom T&C message content and display mode",
        "required": [
          "value"
        ],
        "properties": {
          "value": {
            "type": "string",
            "description": "The text to be shown per payment method type",
            "example": "I authorize Example Merchant Ltd to debit my account."
          },
          "display_mode": {
            "$ref": "#/components/schemas/SdkDisplayMode"
          }
        }
      },
      "CustomTerms": {
        "type": "object",
        "description": "Custom T&C message for a specific payment method type",
        "required": [
          "payment_method_type",
          "message"
        ],
        "properties": {
          "payment_method_type": {
            "$ref": "#/components/schemas/PaymentMethodType"
          },
          "message": {
            "$ref": "#/components/schemas/CustomMessage"
          }
        }
      },
      "CustomerAcceptance": {
        "type": "object",
        "description": "This \"CustomerAcceptance\" object is passed during Payments-Confirm request, it enlists the type, time, and mode of acceptance properties related to an acceptance done by the customer. The customer_acceptance sub object is usually passed by the SDK or client.",
        "required": [
          "acceptance_type"
        ],
        "properties": {
          "acceptance_type": {
            "$ref": "#/components/schemas/AcceptanceType"
          },
          "accepted_at": {
            "type": "string",
            "format": "date-time",
            "description": "Specifying when the customer acceptance was provided",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          },
          "online": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OnlineMandate"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomerDefaultPaymentMethodResponse": {
        "type": "object",
        "required": [
          "customer_id",
          "payment_method"
        ],
        "properties": {
          "default_payment_method_id": {
            "type": "string",
            "description": "The unique identifier of the Payment method",
            "example": "card_rGK4Vi5iSW70MY7J2mIg",
            "nullable": true
          },
          "customer_id": {
            "type": "string",
            "description": "The unique identifier of the customer.",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "maxLength": 64,
            "minLength": 1
          },
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          }
        }
      },
      "CustomerDeleteResponse": {
        "type": "object",
        "required": [
          "customer_id",
          "customer_deleted",
          "address_deleted",
          "payment_methods_deleted"
        ],
        "properties": {
          "customer_id": {
            "type": "string",
            "description": "The identifier for the customer object",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "maxLength": 255
          },
          "customer_deleted": {
            "type": "boolean",
            "description": "Whether customer was deleted or not",
            "example": false
          },
          "address_deleted": {
            "type": "boolean",
            "description": "Whether address was deleted or not",
            "example": false
          },
          "payment_methods_deleted": {
            "type": "boolean",
            "description": "Whether payment methods deleted or not",
            "example": false
          }
        }
      },
      "CustomerDetails": {
        "type": "object",
        "description": "Passing this object creates a new customer or attaches an existing customer to the payment",
        "properties": {
          "id": {
            "type": "string",
            "description": "The identifier for the customer.",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 64,
            "minLength": 1
          },
          "name": {
            "type": "string",
            "description": "The customer's name",
            "example": "John Doe",
            "nullable": true,
            "maxLength": 255
          },
          "email": {
            "type": "string",
            "description": "The customer's email address",
            "example": "johntest@test.com",
            "nullable": true,
            "maxLength": 255
          },
          "phone": {
            "type": "string",
            "description": "The customer's phone number",
            "example": "9123456789",
            "nullable": true,
            "maxLength": 10
          },
          "phone_country_code": {
            "type": "string",
            "description": "The country code for the customer's phone number",
            "example": "+1",
            "nullable": true,
            "maxLength": 2
          },
          "tax_registration_id": {
            "type": "string",
            "description": "The tax registration identifier of the customer.",
            "nullable": true,
            "maxLength": 255
          },
          "document_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDocumentDetails"
              }
            ],
            "nullable": true
          }
        }
      },
      "CustomerDetailsResponse": {
        "type": "object",
        "description": "Details of customer attached to this payment",
        "properties": {
          "id": {
            "type": "string",
            "description": "The identifier for the customer.",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 64,
            "minLength": 1
          },
          "name": {
            "type": "string",
            "description": "The customer's name",
            "example": "John Doe",
            "nullable": true,
            "maxLength": 255
          },
          "email": {
            "type": "string",
            "description": "The customer's email address",
            "example": "johntest@test.com",
            "nullable": true,
            "maxLength": 255
          },
          "phone": {
            "type": "string",
            "description": "The customer's phone number",
            "example": "9123456789",
            "nullable": true,
            "maxLength": 10
          },
          "phone_country_code": {
            "type": "string",
            "description": "The country code for the customer's phone number",
            "example": "+1",
            "nullable": true,
            "maxLength": 2
          },
          "customer_document_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDocumentDetails"
              }
            ],
            "nullable": true
          }
        }
      },
      "CustomerDeviceData": {
        "type": "object",
        "description": "Represents data about the customer's device used in the 3DS decision rule.",
        "properties": {
          "platform": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDevicePlatform"
              }
            ],
            "nullable": true
          },
          "device_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDeviceType"
              }
            ],
            "nullable": true
          },
          "display_size": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDeviceDisplaySize"
              }
            ],
            "nullable": true
          }
        }
      },
      "CustomerDeviceDisplaySize": {
        "type": "string",
        "enum": [
          "size320x568",
          "size375x667",
          "size390x844",
          "size414x896",
          "size428x926",
          "size768x1024",
          "size834x1112",
          "size834x1194",
          "size1024x1366",
          "size1280x720",
          "size1366x768",
          "size1440x900",
          "size1920x1080",
          "size2560x1440",
          "size3840x2160",
          "size500x600",
          "size600x400",
          "size360x640",
          "size412x915",
          "size800x1280"
        ]
      },
      "CustomerDevicePlatform": {
        "type": "string",
        "enum": [
          "web",
          "android",
          "ios"
        ]
      },
      "CustomerDeviceType": {
        "type": "string",
        "enum": [
          "mobile",
          "tablet",
          "desktop",
          "gaming_console"
        ]
      },
      "CustomerDocumentDetails": {
        "type": "object",
        "required": [
          "document_type",
          "document_number"
        ],
        "properties": {
          "document_type": {
            "$ref": "#/components/schemas/DocumentKind"
          },
          "document_number": {
            "type": "string",
            "description": "The customer's document number\nLength of the document number depends upon the document_type.\nFor CPF/CNPJ it is typically 11/14 digits long",
            "example": "12345678911",
            "maxLength": 255
          }
        }
      },
      "CustomerId": {
        "type": "string",
        "description": "A type for customer_id that can be used for customer ids"
      },
      "CustomerPaymentMethod": {
        "type": "object",
        "required": [
          "payment_token",
          "payment_method_id",
          "customer_id",
          "payment_method",
          "requires_cvv",
          "default_payment_method_set"
        ],
        "properties": {
          "payment_token": {
            "type": "string",
            "description": "Token for payment method in temporary card locker which gets refreshed often",
            "example": "7ebf443f-a050-4067-84e5-e6f6d4800aef"
          },
          "payment_method_id": {
            "type": "string",
            "description": "The unique identifier of the customer.",
            "example": "pm_examplexxxxxxxxx"
          },
          "customer_id": {
            "type": "string",
            "description": "The unique identifier of the customer.",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "maxLength": 64,
            "minLength": 1
          },
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "payment_method_issuer": {
            "type": "string",
            "description": "The name of the bank/ provider issuing the payment method to the end user",
            "example": "Citibank",
            "nullable": true
          },
          "payment_method_issuer_code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodIssuerCode"
              }
            ],
            "nullable": true
          },
          "recurring_enabled": {
            "type": "boolean",
            "description": "Indicates whether the payment method supports recurring payments. Optional.",
            "example": true,
            "nullable": true
          },
          "installment_payment_enabled": {
            "type": "boolean",
            "description": "Indicates whether the payment method is eligible for installment payments (e.g., EMI, BNPL). Optional.",
            "example": true,
            "nullable": true
          },
          "payment_experience": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentExperience"
            },
            "description": "Type of payment experience enabled with the connector",
            "example": [
              "redirect_to_url"
            ],
            "nullable": true
          },
          "card": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardDetailFromLocker"
              }
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "description": "A timestamp (ISO 8601 code) that determines when the payment method was created",
            "example": "2023-01-18T11:04:09.922Z",
            "nullable": true
          },
          "bank_transfer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Bank"
              }
            ],
            "nullable": true
          },
          "bank": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MaskedBankDetails"
              }
            ],
            "nullable": true
          },
          "surcharge_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SurchargeDetailsResponse"
              }
            ],
            "nullable": true
          },
          "requires_cvv": {
            "type": "boolean",
            "description": "Whether this payment method requires CVV to be collected",
            "example": true
          },
          "last_used_at": {
            "type": "string",
            "format": "date-time",
            "description": "A timestamp (ISO 8601 code) that determines when the payment method was last used",
            "example": "2024-02-24T11:04:09.922Z",
            "nullable": true
          },
          "default_payment_method_set": {
            "type": "boolean",
            "description": "Indicates if the payment method has been set to default or not",
            "example": true
          },
          "billing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          }
        }
      },
      "CustomerPaymentMethodsListResponse": {
        "type": "object",
        "required": [
          "customer_payment_methods"
        ],
        "properties": {
          "customer_payment_methods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerPaymentMethod"
            },
            "description": "List of payment methods for customer"
          },
          "is_guest_customer": {
            "type": "boolean",
            "description": "Returns whether a customer id is not tied to a payment intent (only when the request is made against a client secret)",
            "nullable": true
          }
        }
      },
      "CustomerRequest": {
        "type": "object",
        "description": "The customer details",
        "properties": {
          "customer_id": {
            "type": "string",
            "description": "The identifier for the customer object. If not provided the customer ID will be autogenerated.",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 64,
            "minLength": 1
          },
          "name": {
            "type": "string",
            "description": "The customer's name",
            "example": "Jon Test",
            "nullable": true,
            "maxLength": 255
          },
          "email": {
            "type": "string",
            "description": "The customer's email address",
            "example": "JonTest@test.com",
            "nullable": true,
            "maxLength": 255
          },
          "phone": {
            "type": "string",
            "description": "The customer's phone number",
            "example": "9123456789",
            "nullable": true,
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "description": "An arbitrary string that you can attach to a customer object.",
            "example": "First Customer",
            "nullable": true,
            "maxLength": 255
          },
          "phone_country_code": {
            "type": "string",
            "description": "The country code for the customer phone number",
            "example": "+65",
            "nullable": true,
            "maxLength": 255
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500\ncharacters long. Metadata is useful for storing additional, structured information on an\nobject.",
            "nullable": true
          },
          "tax_registration_id": {
            "type": "string",
            "description": "Customer's tax registration ID",
            "example": "123456789",
            "nullable": true,
            "maxLength": 255
          },
          "document_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDocumentDetails"
              }
            ],
            "nullable": true
          }
        }
      },
      "CustomerResponse": {
        "type": "object",
        "required": [
          "customer_id",
          "created_at"
        ],
        "properties": {
          "customer_id": {
            "type": "string",
            "description": "The identifier for the customer object",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "maxLength": 64,
            "minLength": 1
          },
          "name": {
            "type": "string",
            "description": "The customer's name",
            "example": "Jon Test",
            "nullable": true,
            "maxLength": 255
          },
          "email": {
            "type": "string",
            "description": "The customer's email address",
            "example": "JonTest@test.com",
            "nullable": true,
            "maxLength": 255
          },
          "phone": {
            "type": "string",
            "description": "The customer's phone number",
            "example": "9123456789",
            "nullable": true,
            "maxLength": 255
          },
          "phone_country_code": {
            "type": "string",
            "description": "The country code for the customer phone number",
            "example": "+65",
            "nullable": true,
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "description": "An arbitrary string that you can attach to a customer object.",
            "example": "First Customer",
            "nullable": true,
            "maxLength": 255
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "A timestamp (ISO 8601 code) that determines when the customer was created",
            "example": "2023-01-18T11:04:09.922Z"
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500\ncharacters long. Metadata is useful for storing additional, structured information on an\nobject.",
            "nullable": true
          },
          "default_payment_method_id": {
            "type": "string",
            "description": "The identifier for the default payment method.",
            "example": "pm_djh2837dwduh890123",
            "nullable": true,
            "maxLength": 64
          },
          "tax_registration_id": {
            "type": "string",
            "description": "The customer's tax registration number.",
            "example": "123456789",
            "nullable": true,
            "maxLength": 255
          },
          "document_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDocumentDetails"
              }
            ],
            "nullable": true
          }
        }
      },
      "CustomerUpdateRequest": {
        "type": "object",
        "description": "The identifier for the customer object. If not provided the customer ID will be autogenerated.",
        "properties": {
          "name": {
            "type": "string",
            "description": "The customer's name",
            "example": "Jon Test",
            "nullable": true,
            "maxLength": 255
          },
          "email": {
            "type": "string",
            "description": "The customer's email address",
            "example": "JonTest@test.com",
            "nullable": true,
            "maxLength": 255
          },
          "phone": {
            "type": "string",
            "description": "The customer's phone number",
            "example": "9123456789",
            "nullable": true,
            "maxLength": 255
          },
          "description": {
            "type": "string",
            "description": "An arbitrary string that you can attach to a customer object.",
            "example": "First Customer",
            "nullable": true,
            "maxLength": 255
          },
          "phone_country_code": {
            "type": "string",
            "description": "The country code for the customer phone number",
            "example": "+65",
            "nullable": true,
            "maxLength": 255
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500\ncharacters long. Metadata is useful for storing additional, structured information on an\nobject.",
            "nullable": true
          },
          "tax_registration_id": {
            "type": "string",
            "description": "Customer's tax registration ID",
            "example": "123456789",
            "nullable": true,
            "maxLength": 255
          },
          "document_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDocumentDetails"
              }
            ],
            "nullable": true
          }
        }
      },
      "DDCData": {
        "type": "object",
        "required": [
          "iframe_url"
        ],
        "properties": {
          "iframe_url": {
            "type": "string"
          },
          "timeout_ms": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        }
      },
      "DeleteEvidenceRequest": {
        "type": "object",
        "required": [
          "dispute_id",
          "evidence_type"
        ],
        "properties": {
          "dispute_id": {
            "type": "string",
            "description": "Id of the dispute"
          },
          "evidence_type": {
            "$ref": "#/components/schemas/EvidenceType"
          }
        }
      },
      "DeviceChannel": {
        "type": "string",
        "description": "Device Channel indicating whether request is coming from App or Browser",
        "enum": [
          "APP",
          "BRW"
        ]
      },
      "DeviceDetails": {
        "type": "object",
        "description": "Device details for collecting Device information",
        "properties": {
          "device_type": {
            "type": "string",
            "description": "Device type",
            "nullable": true
          },
          "device_brand": {
            "type": "string",
            "description": "Device brand",
            "nullable": true
          },
          "device_os": {
            "type": "string",
            "description": "Device OS",
            "nullable": true
          },
          "device_display": {
            "type": "string",
            "description": "Device display",
            "nullable": true
          }
        }
      },
      "DisputeEvidenceBlock": {
        "type": "object",
        "required": [
          "evidence_type",
          "file_metadata_response"
        ],
        "properties": {
          "evidence_type": {
            "$ref": "#/components/schemas/EvidenceType"
          },
          "file_metadata_response": {
            "$ref": "#/components/schemas/FileMetadataResponse"
          }
        }
      },
      "DisputeListFilters": {
        "type": "object",
        "required": [
          "currency",
          "dispute_status",
          "dispute_stage"
        ],
        "properties": {
          "currency": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Currency"
            },
            "description": "The list of available currency filters"
          },
          "dispute_status": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisputeStatus"
            },
            "description": "The list of available dispute status filters"
          },
          "dispute_stage": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DisputeStage"
            },
            "description": "The list of available dispute stage filters"
          },
          "merchant_connector_id": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The rails disputes have arrived on, as merchant connector account ids. Pass one back as `merchant_connector_id` when listing."
          }
        }
      },
      "DisputeResponse": {
        "type": "object",
        "required": [
          "dispute_id",
          "payment_id",
          "amount",
          "currency",
          "dispute_stage",
          "dispute_status",
          "created_at",
          "is_already_refunded"
        ],
        "properties": {
          "dispute_id": {
            "type": "string",
            "description": "The identifier for dispute"
          },
          "payment_id": {
            "type": "string",
            "description": "The identifier for payment_intent"
          },
          "amount": {
            "$ref": "#/components/schemas/StringMinorUnit"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "dispute_stage": {
            "$ref": "#/components/schemas/DisputeStage"
          },
          "dispute_status": {
            "$ref": "#/components/schemas/DisputeStatus"
          },
          "challenge_required_by": {
            "type": "string",
            "format": "date-time",
            "description": "Evidence deadline of dispute sent by connector",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Time at which dispute is received"
          },
          "is_already_refunded": {
            "type": "boolean",
            "description": "Shows if the disputed amount(dispute_lost statuses only) + refunded amount is greater than captured amount"
          }
        }
      },
      "DisputeStage": {
        "type": "string",
        "description": "Stage of the dispute",
        "enum": [
          "pre_dispute",
          "dispute",
          "pre_arbitration",
          "arbitration",
          "dispute_reversal"
        ]
      },
      "DisputeStatus": {
        "type": "string",
        "description": "Status of the dispute",
        "enum": [
          "dispute_opened",
          "dispute_expired",
          "dispute_accepted",
          "dispute_cancelled",
          "dispute_challenged",
          "dispute_won",
          "dispute_lost"
        ]
      },
      "DisputesAggregateResponse": {
        "type": "object",
        "required": [
          "status_with_count"
        ],
        "properties": {
          "status_with_count": {
            "type": "object",
            "description": "Different status of disputes with their count",
            "additionalProperties": {
              "type": "integer",
              "format": "int64"
            }
          }
        }
      },
      "DocumentKind": {
        "type": "string",
        "description": "Represents the type of identification document used for validation.",
        "enum": [
          "cpf",
          "cnpj"
        ]
      },
      "DokuBankTransferInstructions": {
        "type": "object",
        "required": [
          "expires_at",
          "reference",
          "instructions_url"
        ],
        "properties": {
          "expires_at": {
            "type": "string",
            "example": "1707091200000"
          },
          "reference": {
            "type": "string",
            "example": "122385736258"
          },
          "instructions_url": {
            "type": "string"
          }
        }
      },
      "DokuBillingDetails": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "description": "The billing first name for Doku",
            "example": "Jane",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "description": "The billing second name for Doku",
            "example": "Doe",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The Email ID for Doku billing",
            "example": "example@me.com",
            "nullable": true
          }
        }
      },
      "ElementPosition": {
        "type": "string",
        "enum": [
          "left",
          "top left",
          "top",
          "top right",
          "right",
          "bottom right",
          "bottom",
          "bottom left",
          "center"
        ]
      },
      "ElementSize": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "Variants"
            ],
            "properties": {
              "Variants": {
                "$ref": "#/components/schemas/SizeVariants"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "Percentage"
            ],
            "properties": {
              "Percentage": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              }
            }
          },
          {
            "type": "object",
            "required": [
              "Pixels"
            ],
            "properties": {
              "Pixels": {
                "type": "integer",
                "format": "int32",
                "minimum": 0
              }
            }
          }
        ]
      },
      "EligibilityCard": {
        "type": "object",
        "description": "Card data for eligibility check \u2014 only card_number is required, no CVV needed",
        "required": [
          "card_number"
        ],
        "properties": {
          "card_number": {
            "type": "string",
            "description": "The card number",
            "example": "4242424242424242"
          },
          "card_exp_month": {
            "type": "string",
            "description": "The card's expiry month",
            "example": "24",
            "nullable": true
          },
          "card_exp_year": {
            "type": "string",
            "description": "The card's expiry year",
            "example": "24",
            "nullable": true
          },
          "card_cvc": {
            "type": "string",
            "description": "The card's CVC/CVV",
            "example": "123",
            "nullable": true
          },
          "card_holder_name": {
            "type": "string",
            "description": "The card holder's name",
            "example": "John Test",
            "nullable": true
          },
          "card_issuer": {
            "type": "string",
            "description": "The name of the issuer of card",
            "example": "chase",
            "nullable": true
          },
          "card_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardNetwork"
              }
            ],
            "nullable": true
          },
          "card_type": {
            "type": "string",
            "example": "CREDIT",
            "nullable": true
          },
          "card_issuing_country": {
            "type": "string",
            "example": "INDIA",
            "nullable": true
          },
          "card_issuing_country_code": {
            "type": "string",
            "example": "IN",
            "nullable": true
          },
          "bank_code": {
            "type": "string",
            "example": "JP_AMEX",
            "nullable": true
          },
          "nick_name": {
            "type": "string",
            "description": "The card holder's nick name",
            "example": "John Test",
            "nullable": true
          }
        }
      },
      "EligibilityPaymentMethodData": {
        "oneOf": [
          {
            "type": "object",
            "title": "EligibilityCard",
            "required": [
              "card"
            ],
            "properties": {
              "card": {
                "$ref": "#/components/schemas/EligibilityCard"
              }
            }
          },
          {
            "type": "object",
            "title": "CardRedirect",
            "required": [
              "card_redirect"
            ],
            "properties": {
              "card_redirect": {
                "$ref": "#/components/schemas/CardRedirectData"
              }
            }
          },
          {
            "type": "object",
            "title": "Wallet",
            "required": [
              "wallet"
            ],
            "properties": {
              "wallet": {
                "$ref": "#/components/schemas/WalletData"
              }
            }
          },
          {
            "type": "object",
            "title": "PayLater",
            "required": [
              "pay_later"
            ],
            "properties": {
              "pay_later": {
                "$ref": "#/components/schemas/PayLaterData"
              }
            }
          },
          {
            "type": "object",
            "title": "BankRedirect",
            "required": [
              "bank_redirect"
            ],
            "properties": {
              "bank_redirect": {
                "$ref": "#/components/schemas/BankRedirectData"
              }
            }
          },
          {
            "type": "object",
            "title": "BankDebit",
            "required": [
              "bank_debit"
            ],
            "properties": {
              "bank_debit": {
                "$ref": "#/components/schemas/BankDebitData"
              }
            }
          },
          {
            "type": "object",
            "title": "BankTransfer",
            "required": [
              "bank_transfer"
            ],
            "properties": {
              "bank_transfer": {
                "$ref": "#/components/schemas/BankTransferData"
              }
            }
          },
          {
            "type": "object",
            "title": "RealTimePayment",
            "required": [
              "real_time_payment"
            ],
            "properties": {
              "real_time_payment": {
                "$ref": "#/components/schemas/RealTimePaymentData"
              }
            }
          },
          {
            "type": "object",
            "title": "Crypto",
            "required": [
              "crypto"
            ],
            "properties": {
              "crypto": {
                "$ref": "#/components/schemas/CryptoData"
              }
            }
          },
          {
            "type": "string",
            "title": "MandatePayment",
            "enum": [
              "mandate_payment"
            ]
          },
          {
            "type": "string",
            "title": "Reward",
            "enum": [
              "reward"
            ]
          },
          {
            "type": "object",
            "title": "Upi",
            "required": [
              "upi"
            ],
            "properties": {
              "upi": {
                "$ref": "#/components/schemas/UpiData"
              }
            }
          },
          {
            "type": "object",
            "title": "Voucher",
            "required": [
              "voucher"
            ],
            "properties": {
              "voucher": {
                "$ref": "#/components/schemas/VoucherData"
              }
            }
          },
          {
            "type": "object",
            "title": "GiftCard",
            "required": [
              "gift_card"
            ],
            "properties": {
              "gift_card": {
                "$ref": "#/components/schemas/GiftCardData"
              }
            }
          },
          {
            "type": "object",
            "title": "CardToken",
            "required": [
              "card_token"
            ],
            "properties": {
              "card_token": {
                "$ref": "#/components/schemas/CardToken"
              }
            }
          },
          {
            "type": "object",
            "title": "OpenBanking",
            "required": [
              "open_banking"
            ],
            "properties": {
              "open_banking": {
                "$ref": "#/components/schemas/OpenBankingData"
              }
            }
          },
          {
            "type": "object",
            "title": "MobilePayment",
            "required": [
              "mobile_payment"
            ],
            "properties": {
              "mobile_payment": {
                "$ref": "#/components/schemas/MobilePaymentData"
              }
            }
          },
          {
            "type": "object",
            "title": "NetworkToken",
            "required": [
              "network_token"
            ],
            "properties": {
              "network_token": {
                "$ref": "#/components/schemas/NetworkTokenData"
              }
            }
          }
        ],
        "description": "Payment method data for eligibility check"
      },
      "EligibilityPaymentMethodDataRequest": {
        "allOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/EligibilityPaymentMethodData"
              }
            ],
            "nullable": true
          },
          {
            "type": "object",
            "properties": {
              "billing": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Address"
                  }
                ],
                "nullable": true
              }
            }
          }
        ],
        "description": "Payment method data request for eligibility check"
      },
      "ErrorDetailOpenApi": {
        "type": "object",
        "description": "The error object carried inside the `error` envelope.",
        "required": [
          "type",
          "message",
          "code"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The class of the error. Branch on `code`, not on this.",
            "example": "invalid_request"
          },
          "message": {
            "type": "string",
            "description": "Human-readable description. Wording may change between releases; never parse it.",
            "example": "Missing required param: api_key"
          },
          "code": {
            "type": "string",
            "description": "The stable machine-readable code from the TensorRail error catalog. Always `ERR_NNNN`.",
            "example": "ERR_2001"
          },
          "payment_id": {
            "type": "string",
            "description": "The payment this error refers to, when the request named one.",
            "example": "pay_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true
          },
          "field_name": {
            "type": "string",
            "description": "The offending request field, on validation errors.",
            "example": "api_key",
            "nullable": true
          },
          "expected_format": {
            "type": "string",
            "description": "The format that field was expected in.",
            "example": "amount in minor units, e.g. 1000 for 10.00",
            "nullable": true
          },
          "resource_type": {
            "type": "string",
            "description": "The kind of object that was not found, on lookup errors.",
            "example": "payment",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "description": "Additional detail about why the request was refused.",
            "nullable": true
          },
          "data": {
            "type": "object",
            "description": "Structured detail attached to some errors, shaped by the error. `ERR_2001` raised for\nseveral missing params at once carries the list of names here, for example. Present only\nwhen the error has something to add; read it defensively rather than assuming a shape.",
            "nullable": true
          },
          "fields": {
            "type": "string",
            "description": "The offending field(s) as one string, on the errors that report them that way rather than\nthrough `field_name`. Both can appear; `field_name` is the one to branch on.",
            "example": "card_number",
            "nullable": true
          }
        }
      },
      "EstimateSubscriptionResponse": {
        "type": "object",
        "required": [
          "amount",
          "currency",
          "line_items"
        ],
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/MinorUnit"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "plan_id": {
            "type": "string",
            "description": "Identifier for the associated plan_id.",
            "nullable": true
          },
          "item_price_id": {
            "type": "string",
            "description": "Identifier for the associated item_price_id for the subscription.",
            "nullable": true
          },
          "coupon_code": {
            "type": "string",
            "description": "Identifier for the coupon code for the subscription.",
            "nullable": true
          },
          "customer_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerId"
              }
            ],
            "nullable": true
          },
          "line_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionLineItem"
            }
          }
        }
      },
      "EvidenceType": {
        "type": "string",
        "enum": [
          "cancellation_policy",
          "customer_communication",
          "customer_signature",
          "receipt",
          "refund_policy",
          "service_documentation",
          "shipping_documentation",
          "invoice_showing_distinct_transactions",
          "recurring_transaction_agreement",
          "uncategorized_file"
        ]
      },
      "ExternalThreeDsData": {
        "type": "object",
        "required": [
          "transaction_status"
        ],
        "properties": {
          "authentication_cryptogram": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Cryptogram"
              }
            ],
            "nullable": true
          },
          "ds_trans_id": {
            "type": "string",
            "description": "Directory Server Transaction ID generated during the 3DS process.",
            "nullable": true
          },
          "version": {
            "type": "string",
            "description": "The version of the 3DS protocol used (e.g., \"2.1.0\" or \"2.2.0\").",
            "nullable": true
          },
          "eci": {
            "type": "string",
            "description": "Electronic Commerce Indicator (ECI) value representing the 3DS authentication result.",
            "nullable": true
          },
          "transaction_status": {
            "$ref": "#/components/schemas/TransactionStatus"
          }
        }
      },
      "FeatureMetadata": {
        "type": "object",
        "description": "additional data that might be required by tensorrail",
        "properties": {
          "redirect_response": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RedirectResponse"
              }
            ],
            "nullable": true
          },
          "search_tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Additional tags to be used for global search",
            "nullable": true
          },
          "apple_pay_recurring_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApplePayRecurringDetails"
              }
            ],
            "nullable": true
          },
          "pix_additional_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PixAdditionalDetails"
              }
            ],
            "nullable": true
          },
          "boleto_additional_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BoletoAdditionalDetails"
              }
            ],
            "nullable": true
          },
          "pix_automatico_additional_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PixAutomaticoAdditionalDetails"
              }
            ],
            "nullable": true
          }
        }
      },
      "FieldType": {
        "oneOf": [
          {
            "type": "string",
            "enum": [
              "user_card_number"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_gift_card_number"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_card_expiry_month"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_card_expiry_year"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_card_cvc"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_gift_card_pin"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_card_network"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_full_name"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_email_address"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_phone_number"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_phone_number_country_code"
            ]
          },
          {
            "type": "object",
            "required": [
              "user_country"
            ],
            "properties": {
              "user_country": {
                "type": "object",
                "required": [
                  "options"
                ],
                "properties": {
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "user_currency"
            ],
            "properties": {
              "user_currency": {
                "type": "object",
                "required": [
                  "options"
                ],
                "properties": {
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "user_crypto_currency_network"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_billing_name"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_address_line1"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_address_line2"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_address_city"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_address_pincode"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_address_state"
            ]
          },
          {
            "type": "object",
            "required": [
              "user_address_country"
            ],
            "properties": {
              "user_address_country": {
                "type": "object",
                "required": [
                  "options"
                ],
                "properties": {
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "user_shipping_name"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_shipping_address_line1"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_shipping_address_line2"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_shipping_address_city"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_shipping_address_pincode"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_shipping_address_state"
            ]
          },
          {
            "type": "object",
            "required": [
              "user_shipping_address_country"
            ],
            "properties": {
              "user_shipping_address_country": {
                "type": "object",
                "required": [
                  "options"
                ],
                "properties": {
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "user_document_type"
            ],
            "properties": {
              "user_document_type": {
                "type": "object",
                "required": [
                  "options"
                ],
                "properties": {
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "user_social_security_number"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_blik_code"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_bank"
            ]
          },
          {
            "type": "object",
            "required": [
              "user_bank_options"
            ],
            "properties": {
              "user_bank_options": {
                "type": "object",
                "required": [
                  "options"
                ],
                "properties": {
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "user_bank_account_number"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_source_bank_account_id"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_destination_bank_account_id"
            ]
          },
          {
            "type": "string",
            "enum": [
              "text"
            ]
          },
          {
            "type": "object",
            "required": [
              "drop_down"
            ],
            "properties": {
              "drop_down": {
                "type": "object",
                "required": [
                  "options"
                ],
                "properties": {
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "user_date_of_birth"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_vpa_id"
            ]
          },
          {
            "type": "object",
            "required": [
              "language_preference"
            ],
            "properties": {
              "language_preference": {
                "type": "object",
                "required": [
                  "options"
                ],
                "properties": {
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "user_pix_key"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_cpf"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_cnpj"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_iban"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_bsb_number"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_bank_sort_code"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_bank_routing_number"
            ]
          },
          {
            "type": "object",
            "required": [
              "user_bank_type"
            ],
            "properties": {
              "user_bank_type": {
                "type": "object",
                "required": [
                  "options"
                ],
                "properties": {
                  "options": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "user_bank_account_holder_name"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_msisdn"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_client_identifier"
            ]
          },
          {
            "type": "string",
            "enum": [
              "order_details_product_name"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_branch_code"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_bank_identifier"
            ]
          },
          {
            "type": "string",
            "enum": [
              "user_pix_account_number"
            ]
          }
        ],
        "description": "Possible field type of required fields in payment_method_data"
      },
      "FileMetadataResponse": {
        "type": "object",
        "required": [
          "file_id",
          "file_size",
          "file_type",
          "available"
        ],
        "properties": {
          "file_id": {
            "type": "string",
            "description": "ID of the file created"
          },
          "file_name": {
            "type": "string",
            "description": "Name of the file",
            "nullable": true
          },
          "file_size": {
            "type": "integer",
            "format": "int32",
            "description": "Size of the file"
          },
          "file_type": {
            "type": "string",
            "description": "Type of the file"
          },
          "available": {
            "type": "boolean",
            "description": "File availability"
          }
        }
      },
      "FutureUsage": {
        "type": "string",
        "description": "Specifies how the payment method can be used for future payments.\n- `off_session`: The payment method can be used for future payments when the customer is not present.\n- `on_session`: The payment method is intended for use only when the customer is present during checkout.\nIf omitted, defaults to `on_session`.",
        "enum": [
          "off_session",
          "on_session"
        ]
      },
      "GPayPredecryptData": {
        "type": "object",
        "description": "This struct represents the decrypted Google Pay payment data",
        "required": [
          "card_exp_month",
          "card_exp_year",
          "application_primary_account_number",
          "cryptogram",
          "eci_indicator"
        ],
        "properties": {
          "card_exp_month": {
            "type": "string",
            "description": "The card's expiry month"
          },
          "card_exp_year": {
            "type": "string",
            "description": "The card's expiry year"
          },
          "application_primary_account_number": {
            "type": "string",
            "description": "The Primary Account Number (PAN) of the card",
            "example": "4242424242424242"
          },
          "cryptogram": {
            "type": "string",
            "description": "Cryptogram generated by the Network",
            "example": "AgAAAAAAAIR8CQrXcIhbQAAAAAA"
          },
          "eci_indicator": {
            "type": "string",
            "description": "Electronic Commerce Indicator",
            "example": "07"
          }
        }
      },
      "GcashRedirection": {
        "type": "object"
      },
      "GenericErrorResponseOpenApi": {
        "type": "object",
        "description": "The body of every error response this API returns: a single `error` object.",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ErrorDetailOpenApi"
          }
        }
      },
      "GetSubscriptionItemsResponse": {
        "type": "object",
        "required": [
          "item_id",
          "name",
          "price_id"
        ],
        "properties": {
          "item_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "price_id": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionItemPrices"
            }
          }
        }
      },
      "GiftCardData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "givex"
            ],
            "properties": {
              "givex": {
                "$ref": "#/components/schemas/GiftCardDetails"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "pay_safe_card"
            ],
            "properties": {
              "pay_safe_card": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "bhn_card_network"
            ],
            "properties": {
              "bhn_card_network": {
                "$ref": "#/components/schemas/BHNGiftCardDetails"
              }
            }
          }
        ]
      },
      "GiftCardDetails": {
        "type": "object",
        "required": [
          "number",
          "cvc"
        ],
        "properties": {
          "number": {
            "type": "string",
            "description": "The gift card number"
          },
          "cvc": {
            "type": "string",
            "description": "The card verification code."
          }
        }
      },
      "GoPayRedirection": {
        "type": "object"
      },
      "GooglePayAssuranceDetails": {
        "type": "object",
        "required": [
          "card_holder_authenticated",
          "account_verified"
        ],
        "properties": {
          "card_holder_authenticated": {
            "type": "boolean",
            "description": "indicates that Cardholder possession validation has been performed"
          },
          "account_verified": {
            "type": "boolean",
            "description": "indicates that identification and verifications (ID&V) was performed"
          }
        }
      },
      "GooglePayCardFundingSource": {
        "type": "string",
        "enum": [
          "CREDIT",
          "DEBIT",
          "PREPAID",
          "UNKNOWN"
        ]
      },
      "GooglePayPaymentMethodInfo": {
        "type": "object",
        "required": [
          "card_network",
          "card_details"
        ],
        "properties": {
          "card_network": {
            "type": "string",
            "description": "The name of the card network"
          },
          "card_details": {
            "type": "string",
            "description": "The details of the card"
          },
          "assurance_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GooglePayAssuranceDetails"
              }
            ],
            "nullable": true
          },
          "card_funding_source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GooglePayCardFundingSource"
              }
            ],
            "nullable": true
          }
        }
      },
      "GooglePayRedirectData": {
        "type": "object"
      },
      "GooglePaySessionResponse": {
        "type": "object",
        "required": [
          "merchant_info",
          "shipping_address_required",
          "email_required",
          "shipping_address_parameters",
          "allowed_payment_methods",
          "transaction_info",
          "delayed_session_token",
          "connector",
          "sdk_next_action"
        ],
        "properties": {
          "merchant_info": {
            "$ref": "#/components/schemas/GpayMerchantInfo"
          },
          "shipping_address_required": {
            "type": "boolean",
            "description": "Is shipping address required"
          },
          "email_required": {
            "type": "boolean",
            "description": "Is email required"
          },
          "shipping_address_parameters": {
            "$ref": "#/components/schemas/GpayShippingAddressParameters"
          },
          "allowed_payment_methods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GpayAllowedPaymentMethods"
            },
            "description": "List of the allowed payment methods"
          },
          "transaction_info": {
            "$ref": "#/components/schemas/GpayTransactionInfo"
          },
          "delayed_session_token": {
            "type": "boolean",
            "description": "Identifier for the delayed session response"
          },
          "connector": {
            "type": "string",
            "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor."
          },
          "sdk_next_action": {
            "$ref": "#/components/schemas/SdkNextAction"
          },
          "secrets": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SecretInfoToInitiateSdk"
              }
            ],
            "nullable": true
          }
        }
      },
      "GooglePayThirdPartySdk": {
        "type": "object",
        "required": [
          "delayed_session_token",
          "connector",
          "sdk_next_action"
        ],
        "properties": {
          "delayed_session_token": {
            "type": "boolean",
            "description": "Identifier for the delayed session response"
          },
          "connector": {
            "type": "string",
            "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor."
          },
          "sdk_next_action": {
            "$ref": "#/components/schemas/SdkNextAction"
          }
        }
      },
      "GooglePayThirdPartySdkData": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GooglePayWalletData": {
        "type": "object",
        "required": [
          "type",
          "description",
          "info",
          "tokenization_data"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of payment method"
          },
          "description": {
            "type": "string",
            "description": "User-facing message to describe the payment method that funds this transaction."
          },
          "info": {
            "$ref": "#/components/schemas/GooglePayPaymentMethodInfo"
          },
          "tokenization_data": {
            "$ref": "#/components/schemas/GpayTokenizationData"
          }
        }
      },
      "GpayAllowedMethodsParameters": {
        "type": "object",
        "required": [
          "allowed_auth_methods",
          "allowed_card_networks"
        ],
        "properties": {
          "allowed_auth_methods": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of allowed auth methods (ex: 3DS, No3DS, PAN_ONLY etc)"
          },
          "allowed_card_networks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of allowed card networks (ex: AMEX,JCB etc)"
          },
          "billing_address_required": {
            "type": "boolean",
            "description": "Is billing address required",
            "nullable": true
          },
          "billing_address_parameters": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GpayBillingAddressParameters"
              }
            ],
            "nullable": true
          },
          "assurance_details_required": {
            "type": "boolean",
            "description": "Whether assurance details are required",
            "nullable": true
          },
          "allow_credit_cards": {
            "type": "boolean",
            "description": "Set to false if you don't want to allow credit cards",
            "nullable": true
          }
        }
      },
      "GpayAllowedPaymentMethods": {
        "type": "object",
        "required": [
          "type",
          "parameters",
          "tokenization_specification"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of payment method"
          },
          "parameters": {
            "$ref": "#/components/schemas/GpayAllowedMethodsParameters"
          },
          "tokenization_specification": {
            "$ref": "#/components/schemas/GpayTokenizationSpecification"
          }
        }
      },
      "GpayBillingAddressFormat": {
        "type": "string",
        "enum": [
          "FULL",
          "MIN"
        ]
      },
      "GpayBillingAddressParameters": {
        "type": "object",
        "required": [
          "phone_number_required",
          "format"
        ],
        "properties": {
          "phone_number_required": {
            "type": "boolean",
            "description": "Is billing phone number required"
          },
          "format": {
            "$ref": "#/components/schemas/GpayBillingAddressFormat"
          }
        }
      },
      "GpayEcryptedTokenizationData": {
        "type": "object",
        "description": "This struct represents the encrypted Gpay payment data",
        "required": [
          "type",
          "token"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of the token"
          },
          "token": {
            "type": "string",
            "description": "Token generated for the wallet"
          }
        }
      },
      "GpayMerchantInfo": {
        "type": "object",
        "required": [
          "merchant_name"
        ],
        "properties": {
          "merchant_id": {
            "type": "string",
            "description": "The merchant Identifier that needs to be passed while invoking Gpay SDK",
            "nullable": true
          },
          "merchant_name": {
            "type": "string",
            "description": "The name of the merchant that needs to be displayed on Gpay PopUp"
          }
        }
      },
      "GpaySessionTokenResponse": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/GooglePayThirdPartySdk"
          },
          {
            "$ref": "#/components/schemas/GooglePaySessionResponse"
          }
        ]
      },
      "GpayShippingAddressParameters": {
        "type": "object",
        "required": [
          "phone_number_required"
        ],
        "properties": {
          "phone_number_required": {
            "type": "boolean",
            "description": "Is shipping phone number required"
          }
        }
      },
      "GpayTokenParameters": {
        "type": "object",
        "properties": {
          "gateway": {
            "type": "string",
            "description": "The name of the connector",
            "nullable": true
          },
          "gateway_merchant_id": {
            "type": "string",
            "description": "The merchant ID registered in the connector associated",
            "nullable": true
          },
          "protocol_version": {
            "type": "string",
            "description": "The protocol version for encryption",
            "nullable": true
          },
          "public_key": {
            "type": "string",
            "description": "The public key provided by the merchant",
            "nullable": true
          }
        }
      },
      "GpayTokenizationData": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/GPayPredecryptData"
          },
          {
            "$ref": "#/components/schemas/GpayEcryptedTokenizationData"
          }
        ],
        "description": "This enum is used to represent the Gpay payment data, which can either be encrypted or decrypted."
      },
      "GpayTokenizationSpecification": {
        "type": "object",
        "required": [
          "type",
          "parameters"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The token specification type(ex: PAYMENT_GATEWAY)"
          },
          "parameters": {
            "$ref": "#/components/schemas/GpayTokenParameters"
          }
        }
      },
      "GpayTransactionInfo": {
        "type": "object",
        "required": [
          "country_code",
          "currency_code",
          "total_price_status",
          "total_price"
        ],
        "properties": {
          "country_code": {
            "$ref": "#/components/schemas/CountryAlpha2"
          },
          "currency_code": {
            "$ref": "#/components/schemas/Currency"
          },
          "total_price_status": {
            "type": "string",
            "description": "The total price status (ex: 'FINAL')"
          },
          "total_price": {
            "type": "string",
            "description": "The total price",
            "example": "38.02"
          }
        }
      },
      "IframeData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "three_ds_method_url",
              "three_ds_method_data_submission",
              "directory_server_id",
              "method_key"
            ],
            "properties": {
              "three_ds_method_url": {
                "type": "string",
                "description": "ThreeDS method url"
              },
              "three_ds_method_data_submission": {
                "type": "boolean",
                "description": "Whether ThreeDS method data submission is required"
              },
              "three_ds_method_data": {
                "type": "string",
                "description": "ThreeDS method data",
                "nullable": true
              },
              "directory_server_id": {
                "type": "string",
                "description": "ThreeDS Server ID"
              },
              "message_version": {
                "type": "string",
                "description": "ThreeDS Protocol version",
                "nullable": true
              },
              "method_key": {
                "type": "string",
                "enum": [
                  "threeDSMethodData"
                ]
              }
            }
          }
        ],
        "discriminator": {
          "propertyName": "method_key"
        }
      },
      "ImmediateExpirationTime": {
        "type": "object",
        "required": [
          "time"
        ],
        "properties": {
          "time": {
            "type": "integer",
            "format": "int32",
            "description": "Expiration time in seconds",
            "minimum": 0
          },
          "pix_key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PixKey"
              }
            ],
            "nullable": true
          }
        }
      },
      "IndomaretVoucherData": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "description": "The billing first name for Alfamart",
            "example": "Jane",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "description": "The billing second name for Alfamart",
            "example": "Doe",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The Email ID for Alfamart",
            "example": "example@me.com",
            "nullable": true
          }
        }
      },
      "InstallmentOption": {
        "type": "object",
        "description": "Installment options grouped by payment method",
        "required": [
          "payment_method",
          "installments"
        ],
        "properties": {
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "installments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstallmentOptionData"
            },
            "description": "List of available installment configurations"
          }
        }
      },
      "InstallmentOptionData": {
        "type": "object",
        "description": "A single installment plan option accepted in request payloads",
        "required": [
          "number_of_installments",
          "billing_frequency",
          "interest_rate"
        ],
        "properties": {
          "number_of_installments": {
            "type": "string",
            "format": "binary",
            "description": "Number of installments (e.g., [3, 6, 12])"
          },
          "billing_frequency": {
            "$ref": "#/components/schemas/BillingFrequency"
          },
          "interest_rate": {
            "type": "number",
            "format": "double",
            "description": "Interest rate per installment as a percentage max 2 decimal places"
          }
        }
      },
      "InstallmentRequest": {
        "type": "object",
        "description": "Installment selection sent by the customer during payment confirmation.",
        "required": [
          "number_of_installments",
          "billing_frequency"
        ],
        "properties": {
          "number_of_installments": {
            "type": "integer",
            "format": "int32",
            "description": "Number of installments chosen by the customer",
            "minimum": 0
          },
          "billing_frequency": {
            "$ref": "#/components/schemas/BillingFrequency"
          }
        }
      },
      "IntentStatus": {
        "type": "string",
        "description": "Represents the overall status of a payment intent.\nThe status transitions through various states depending on the payment method, confirmation, capture method, and any subsequent actions (like customer authentication or manual capture).",
        "enum": [
          "succeeded",
          "failed",
          "cancelled",
          "cancelled_post_capture",
          "processing",
          "requires_customer_action",
          "requires_merchant_action",
          "requires_payment_method",
          "requires_confirmation",
          "requires_capture",
          "partially_captured",
          "partially_captured_and_capturable",
          "partially_authorized_and_requires_capture",
          "partially_captured_and_processing",
          "conflicted",
          "expired"
        ]
      },
      "Invoice": {
        "type": "object",
        "required": [
          "id",
          "subscription_id",
          "merchant_id",
          "profile_id",
          "merchant_connector_id",
          "customer_id",
          "amount",
          "currency",
          "status"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/InvoiceId"
          },
          "subscription_id": {
            "$ref": "#/components/schemas/SubscriptionId"
          },
          "merchant_id": {
            "$ref": "#/components/schemas/MerchantId"
          },
          "profile_id": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "merchant_connector_id": {
            "$ref": "#/components/schemas/MerchantConnectorAccountId"
          },
          "payment_intent_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentId"
              }
            ],
            "nullable": true
          },
          "payment_method_id": {
            "type": "string",
            "description": "Identifier for Payment Method",
            "example": "pm_examplexxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "nullable": true
          },
          "customer_id": {
            "$ref": "#/components/schemas/CustomerId"
          },
          "amount": {
            "$ref": "#/components/schemas/MinorUnit"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "status": {
            "$ref": "#/components/schemas/InvoiceStatus"
          },
          "billing_processor_invoice_id": {
            "type": "string",
            "description": "billing processor invoice id",
            "nullable": true
          }
        }
      },
      "InvoiceId": {
        "type": "string",
        "description": "A type for invoice_id that can be used for invoice ids"
      },
      "InvoiceStatus": {
        "type": "string",
        "enum": [
          "invoice_created",
          "payment_pending",
          "payment_pending_timeout",
          "payment_succeeded",
          "payment_failed",
          "payment_canceled",
          "invoice_paid",
          "manual_review",
          "voided"
        ]
      },
      "IssuerData": {
        "type": "object",
        "description": "Represents data about the issuer used in the 3DS decision rule.",
        "required": [
          "country"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the issuer.",
            "nullable": true
          },
          "country": {
            "$ref": "#/components/schemas/Country"
          }
        }
      },
      "JCSVoucherData": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "description": "The billing first name for Japanese convenience stores",
            "example": "Jane",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "description": "The billing second name Japanese convenience stores",
            "example": "Doe",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The Email ID for Japanese convenience stores",
            "example": "example@me.com",
            "nullable": true
          },
          "phone_number": {
            "type": "string",
            "description": "The telephone number for Japanese convenience stores",
            "example": "9123456789",
            "nullable": true
          }
        }
      },
      "KakaoPayRedirection": {
        "type": "object"
      },
      "KlarnaSessionTokenResponse": {
        "type": "object",
        "required": [
          "session_token",
          "session_id"
        ],
        "properties": {
          "session_token": {
            "type": "string",
            "description": "The session token for Klarna"
          },
          "session_id": {
            "type": "string",
            "description": "The identifier for the session"
          }
        }
      },
      "MandateAmountData": {
        "type": "object",
        "required": [
          "amount",
          "currency"
        ],
        "properties": {
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "The maximum amount to be debited for the mandate transaction",
            "example": 6540
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "start_date": {
            "type": "string",
            "format": "date-time",
            "description": "Specifying start date of the mandate",
            "example": "2022-09-10T00:00:00Z",
            "nullable": true
          },
          "end_date": {
            "type": "string",
            "format": "date-time",
            "description": "Specifying end date of the mandate",
            "example": "2023-09-10T23:59:59Z",
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "Additional details required by mandate",
            "nullable": true
          }
        }
      },
      "MandateCardDetails": {
        "type": "object",
        "properties": {
          "last4_digits": {
            "type": "string",
            "description": "The last 4 digits of card",
            "nullable": true
          },
          "card_exp_month": {
            "type": "string",
            "description": "The expiry month of card",
            "nullable": true
          },
          "card_exp_year": {
            "type": "string",
            "description": "The expiry year of card",
            "nullable": true
          },
          "card_holder_name": {
            "type": "string",
            "description": "The card holder name",
            "nullable": true
          },
          "card_token": {
            "type": "string",
            "description": "The token from card locker",
            "nullable": true
          },
          "scheme": {
            "type": "string",
            "description": "The card scheme network for the particular card",
            "nullable": true
          },
          "issuer_country": {
            "type": "string",
            "description": "The country code in in which the card was issued",
            "nullable": true
          },
          "card_fingerprint": {
            "type": "string",
            "description": "A unique identifier alias to identify a particular card",
            "nullable": true
          },
          "card_isin": {
            "type": "string",
            "description": "The first 6 digits of card",
            "nullable": true
          },
          "card_issuer": {
            "type": "string",
            "description": "The bank that issued the card",
            "nullable": true
          },
          "card_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardNetwork"
              }
            ],
            "nullable": true
          },
          "card_type": {
            "type": "string",
            "description": "The type of the payment card",
            "nullable": true
          },
          "nick_name": {
            "type": "string",
            "description": "The nick_name of the card holder",
            "nullable": true
          }
        }
      },
      "MandateData": {
        "type": "object",
        "description": "Passing this object during payments creates a mandate. The mandate_type sub object is passed by the server.",
        "properties": {
          "update_mandate_id": {
            "type": "string",
            "description": "A way to update the mandate's payment method details",
            "nullable": true
          },
          "customer_acceptance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerAcceptance"
              }
            ],
            "nullable": true
          },
          "mandate_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MandateType"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MandateResponse": {
        "type": "object",
        "required": [
          "mandate_id",
          "status",
          "payment_method_id",
          "payment_method"
        ],
        "properties": {
          "mandate_id": {
            "type": "string",
            "description": "The identifier for mandate"
          },
          "status": {
            "$ref": "#/components/schemas/MandateStatus"
          },
          "payment_method_id": {
            "type": "string",
            "description": "The identifier for payment method"
          },
          "payment_method": {
            "type": "string",
            "description": "The payment method"
          },
          "payment_method_type": {
            "type": "string",
            "description": "The payment method type",
            "nullable": true
          },
          "card": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MandateCardDetails"
              }
            ],
            "nullable": true
          },
          "customer_acceptance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerAcceptance"
              }
            ],
            "nullable": true
          }
        }
      },
      "MandateRevokedResponse": {
        "type": "object",
        "required": [
          "mandate_id",
          "status"
        ],
        "properties": {
          "mandate_id": {
            "type": "string",
            "description": "The identifier for mandate"
          },
          "status": {
            "$ref": "#/components/schemas/MandateStatus"
          },
          "error_code": {
            "type": "string",
            "description": "If there was an error while calling the connectors the code is received here",
            "example": "E0001",
            "nullable": true
          },
          "error_message": {
            "type": "string",
            "description": "If there was an error while calling the connector the error message is received here",
            "example": "Failed while verifying the card",
            "nullable": true
          }
        }
      },
      "MandateStatus": {
        "type": "string",
        "description": "The status of the mandate, which indicates whether it can be used to initiate a payment.",
        "enum": [
          "active",
          "inactive",
          "pending",
          "revoked"
        ]
      },
      "MandateType": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "single_use"
            ],
            "properties": {
              "single_use": {
                "$ref": "#/components/schemas/MandateAmountData"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "multi_use"
            ],
            "properties": {
              "multi_use": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/MandateAmountData"
                  }
                ],
                "nullable": true
              }
            }
          }
        ]
      },
      "MaskedBankDetails": {
        "type": "object",
        "required": [
          "mask"
        ],
        "properties": {
          "mask": {
            "type": "string"
          }
        }
      },
      "MbWayRedirection": {
        "type": "object",
        "required": [
          "telephone_number"
        ],
        "properties": {
          "telephone_number": {
            "type": "string",
            "description": "Telephone number of the shopper. Should be Portuguese phone number."
          }
        }
      },
      "MerchantApplicationDetails": {
        "type": "object",
        "description": "Information identifying merchant details",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the the merchant application",
            "nullable": true
          },
          "version": {
            "type": "string",
            "description": "Version of the merchant application",
            "nullable": true
          }
        }
      },
      "MerchantConnectorAccountId": {
        "type": "string",
        "description": "A type for merchant_connector_id that can be used for merchant_connector_account ids"
      },
      "MerchantConnectorDetails": {
        "type": "object",
        "properties": {
          "connector_account_details": {
            "type": "object",
            "description": "Account details of the Connector. You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Useful for storing additional, structured information on an object.",
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "Metadata is useful for storing additional, unstructured information on an object.",
            "nullable": true
          }
        }
      },
      "MerchantConnectorDetailsWrap": {
        "type": "object",
        "description": "Merchant connector details used to make payments.",
        "required": [
          "creds_identifier"
        ],
        "properties": {
          "creds_identifier": {
            "type": "string",
            "description": "Creds Identifier is to uniquely identify the credentials. Do not send any sensitive info, like encoded_data in this field. And do not send the string \"null\"."
          },
          "encoded_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MerchantConnectorDetails"
              }
            ],
            "nullable": true
          }
        }
      },
      "MerchantId": {
        "type": "string",
        "description": "A type for merchant_id that can be used for merchant ids"
      },
      "MifinityData": {
        "type": "object",
        "required": [
          "date_of_birth"
        ],
        "properties": {
          "date_of_birth": {
            "type": "string",
            "format": "date"
          },
          "language_preference": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "MinorUnit": {
        "type": "integer",
        "format": "int64",
        "description": "This Unit struct represents MinorUnit in which core amount works"
      },
      "MitCategory": {
        "type": "string",
        "description": "Specifies the category of a Merchant Initiated Transaction (MIT). In the case of MIT, `mit_category` tells what kind of MIT is being processed. In the case of CIT, it tells the future intended MIT type.",
        "enum": [
          "installment",
          "unscheduled",
          "recurring",
          "resubmission"
        ]
      },
      "MobilePayRedirection": {
        "type": "object"
      },
      "MobilePaymentConsent": {
        "type": "string",
        "enum": [
          "consent_required",
          "consent_not_required",
          "consent_optional"
        ]
      },
      "MobilePaymentData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "direct_carrier_billing"
            ],
            "properties": {
              "direct_carrier_billing": {
                "type": "object",
                "required": [
                  "msisdn"
                ],
                "properties": {
                  "msisdn": {
                    "type": "string",
                    "description": "The phone number of the user",
                    "example": "1234567890"
                  },
                  "client_uid": {
                    "type": "string",
                    "description": "Unique user id",
                    "example": "02iacdYXGI9CnyJdoN8c7",
                    "nullable": true
                  }
                }
              }
            }
          }
        ]
      },
      "MomoRedirection": {
        "type": "object"
      },
      "MultibancoBillingDetails": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "example": "example@me.com",
            "nullable": true
          }
        }
      },
      "MultibancoTransferInstructions": {
        "type": "object",
        "required": [
          "reference",
          "entity"
        ],
        "properties": {
          "reference": {
            "type": "string",
            "example": "122385736258"
          },
          "entity": {
            "type": "string",
            "example": "12345"
          }
        }
      },
      "NetworkTokenData": {
        "type": "object",
        "required": [
          "network_token",
          "token_exp_month",
          "token_exp_year",
          "token_cryptogram",
          "card_holder_name"
        ],
        "properties": {
          "network_token": {
            "type": "string",
            "description": "The network token",
            "example": "4604000460040787"
          },
          "token_exp_month": {
            "type": "string",
            "description": "The token's expiry month",
            "example": "05"
          },
          "token_exp_year": {
            "type": "string",
            "description": "The token's expiry year",
            "example": "24"
          },
          "token_cryptogram": {
            "type": "string",
            "description": "The token cryptogram"
          },
          "card_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardNetwork"
              }
            ],
            "nullable": true
          },
          "card_type": {
            "type": "string",
            "description": "The type of the card such as Credit, Debit",
            "example": "CREDIT",
            "nullable": true
          },
          "card_issuing_country": {
            "type": "string",
            "description": "The country in which the card was issued",
            "example": "INDIA",
            "nullable": true
          },
          "bank_code": {
            "type": "string",
            "description": "The bank code of the bank that issued the card",
            "example": "JP_AMEX",
            "nullable": true
          },
          "card_holder_name": {
            "type": "string",
            "description": "The card holder's name",
            "example": "John Test"
          },
          "card_issuer": {
            "type": "string",
            "description": "The name of the issuer of card",
            "example": "chase",
            "nullable": true
          },
          "nick_name": {
            "type": "string",
            "description": "The card holder's nick name",
            "example": "John Test",
            "nullable": true
          },
          "eci": {
            "type": "string",
            "description": "The ECI(Electronic Commerce Indicator) value for this authentication.",
            "nullable": true
          },
          "par": {
            "type": "string",
            "description": "The Payment Account Reference (PAR) for this card.",
            "nullable": true
          }
        }
      },
      "NetworkTransactionIdAndCardDetails": {
        "type": "object",
        "required": [
          "card_number",
          "card_exp_month",
          "card_exp_year",
          "card_holder_name",
          "network_transaction_id"
        ],
        "properties": {
          "card_number": {
            "type": "string",
            "description": "The card number",
            "example": "4242424242424242"
          },
          "card_exp_month": {
            "type": "string",
            "description": "The card's expiry month",
            "example": "24"
          },
          "card_exp_year": {
            "type": "string",
            "description": "The card's expiry year",
            "example": "24"
          },
          "card_holder_name": {
            "type": "string",
            "description": "The card holder's name",
            "example": "John Test"
          },
          "card_issuer": {
            "type": "string",
            "description": "The name of the issuer of card",
            "example": "chase",
            "nullable": true
          },
          "card_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardNetwork"
              }
            ],
            "nullable": true
          },
          "card_type": {
            "type": "string",
            "example": "CREDIT",
            "nullable": true
          },
          "card_issuing_country": {
            "type": "string",
            "example": "INDIA",
            "nullable": true
          },
          "card_issuing_country_code": {
            "type": "string",
            "example": "IN",
            "nullable": true
          },
          "bank_code": {
            "type": "string",
            "example": "JP_AMEX",
            "nullable": true
          },
          "nick_name": {
            "type": "string",
            "description": "The card holder's nick name",
            "example": "John Test",
            "nullable": true
          },
          "network_transaction_id": {
            "type": "string",
            "description": "The network transaction ID provided by the card network during a CIT (Customer Initiated Transaction),\nwhen `setup_future_usage` is set to `off_session`."
          }
        }
      },
      "NetworkTransactionIdAndDecryptedWalletTokenDetails": {
        "type": "object",
        "description": "Network Transaction ID and Decrypted Wallet Token Details",
        "required": [
          "decrypted_token",
          "token_exp_month",
          "token_exp_year",
          "card_holder_name",
          "network_transaction_id"
        ],
        "properties": {
          "decrypted_token": {
            "type": "string",
            "description": "The Decrypted Token",
            "example": "4604000460040787"
          },
          "token_exp_month": {
            "type": "string",
            "description": "The token's expiry month",
            "example": "05"
          },
          "token_exp_year": {
            "type": "string",
            "description": "The token's expiry year",
            "example": "24"
          },
          "card_holder_name": {
            "type": "string",
            "description": "The card holder's name",
            "example": "John Test"
          },
          "network_transaction_id": {
            "type": "string",
            "description": "The network transaction ID provided by the card network during a Customer Initiated Transaction (CIT)\nwhen `setup_future_usage` is set to `off_session`."
          },
          "eci": {
            "type": "string",
            "description": "ECI indicator of the card",
            "nullable": true
          },
          "token_source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TokenSource"
              }
            ],
            "nullable": true
          },
          "card_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardNetwork"
              }
            ],
            "nullable": true
          }
        }
      },
      "NetworkTransactionIdAndNetworkTokenDetails": {
        "type": "object",
        "required": [
          "network_token",
          "token_exp_month",
          "token_exp_year",
          "card_holder_name",
          "network_transaction_id"
        ],
        "properties": {
          "network_token": {
            "type": "string",
            "description": "The Network Token",
            "example": "4604000460040787"
          },
          "token_exp_month": {
            "type": "string",
            "description": "The token's expiry month",
            "example": "05"
          },
          "token_exp_year": {
            "type": "string",
            "description": "The token's expiry year",
            "example": "24"
          },
          "card_network": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardNetwork"
              }
            ],
            "nullable": true
          },
          "card_type": {
            "type": "string",
            "description": "The type of the card such as Credit, Debit",
            "example": "CREDIT",
            "nullable": true
          },
          "card_issuing_country": {
            "type": "string",
            "description": "The country in which the card was issued",
            "example": "INDIA",
            "nullable": true
          },
          "bank_code": {
            "type": "string",
            "description": "The bank code of the bank that issued the card",
            "example": "JP_AMEX",
            "nullable": true
          },
          "card_holder_name": {
            "type": "string",
            "description": "The card holder's name",
            "example": "John Test"
          },
          "card_issuer": {
            "type": "string",
            "description": "The name of the issuer of card",
            "example": "chase",
            "nullable": true
          },
          "nick_name": {
            "type": "string",
            "description": "The card holder's nick name",
            "example": "John Test",
            "nullable": true
          },
          "eci": {
            "type": "string",
            "description": "The ECI(Electronic Commerce Indicator) value for this authentication.",
            "nullable": true
          },
          "network_transaction_id": {
            "type": "string",
            "description": "The network transaction ID provided by the card network during a Customer Initiated Transaction (CIT)\nwhen `setup_future_usage` is set to `off_session`."
          }
        }
      },
      "NextActionCall": {
        "oneOf": [
          {
            "type": "string",
            "description": "The next action call is Post Session Tokens",
            "enum": [
              "post_session_tokens"
            ]
          },
          {
            "type": "string",
            "description": "The next action call is confirm",
            "enum": [
              "confirm"
            ]
          },
          {
            "type": "string",
            "description": "The next action call is sync",
            "enum": [
              "sync"
            ]
          },
          {
            "type": "string",
            "description": "The next action call is Complete Authorize",
            "enum": [
              "complete_authorize"
            ]
          },
          {
            "type": "string",
            "description": "The next action is to await for a merchant callback",
            "enum": [
              "await_merchant_callback"
            ]
          },
          {
            "type": "object",
            "required": [
              "deny"
            ],
            "properties": {
              "deny": {
                "type": "object",
                "description": "The next action is to deny the payment with an error message",
                "required": [
                  "message"
                ],
                "properties": {
                  "message": {
                    "type": "string"
                  }
                }
              }
            }
          },
          {
            "type": "string",
            "description": "The next action is to perform eligibility check",
            "enum": [
              "eligibility_check"
            ]
          }
        ]
      },
      "NextActionData": {
        "oneOf": [
          {
            "type": "object",
            "description": "Contains the url for redirection flow",
            "required": [
              "redirect_to_url",
              "type"
            ],
            "properties": {
              "redirect_to_url": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "redirect_to_url"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "popup_url",
              "redirect_response_url",
              "type"
            ],
            "properties": {
              "popup_url": {
                "type": "string"
              },
              "redirect_response_url": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "redirect_inside_popup"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Informs the next steps for bank transfer and also contains the charges details (ex: amount received, amount charged etc)",
            "required": [
              "bank_transfer_steps_and_charges_details",
              "type"
            ],
            "properties": {
              "bank_transfer_steps_and_charges_details": {
                "$ref": "#/components/schemas/BankTransferNextStepsData"
              },
              "type": {
                "type": "string",
                "enum": [
                  "display_bank_transfer_information"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Contains third party sdk session token response",
            "required": [
              "type"
            ],
            "properties": {
              "session_token": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SessionToken"
                  }
                ],
                "nullable": true
              },
              "type": {
                "type": "string",
                "enum": [
                  "third_party_sdk_session_token"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Contains url for Qr code image, this qr code has to be shown in sdk",
            "required": [
              "image_data_url",
              "qr_code_url",
              "type"
            ],
            "properties": {
              "image_data_url": {
                "type": "string",
                "description": "TensorRail generated image data source url"
              },
              "display_to_timestamp": {
                "type": "integer",
                "format": "int64",
                "nullable": true
              },
              "qr_code_url": {
                "type": "string",
                "description": "The url for Qr code given by the connector"
              },
              "display_text": {
                "type": "string",
                "nullable": true
              },
              "border_color": {
                "type": "string",
                "nullable": true
              },
              "raw_qr_data": {
                "type": "string",
                "description": "The payload the QR image encodes, as text \u2014 so a payer who cannot scan the image\ncan copy it, and a payer on the same phone can open it directly. On a UPI intent\nthis is the `upi://pay?...` URI; on a crypto payment it is the wallet payment\nstring for the transfer. Null when the rail returns only an image.",
                "nullable": true
              },
              "pay_currency": {
                "type": "string",
                "description": "The asset the payer actually transfers, when it differs from the currency the payment\nis denominated in \u2014 a payment priced in EUR settled in USDT, for example. Absent on a\nsame-currency rail, where `currency` already says everything.",
                "nullable": true
              },
              "pay_amount": {
                "type": "string",
                "description": "Amount in pay_currency, as a decimal string. NOT minor units: crypto carries up to\n18 decimals and has no minor unit.",
                "nullable": true
              },
              "pay_network": {
                "type": "string",
                "description": "Chain the transfer is made on (bitcoin, tron, ethereum). One asset spans several --\nUSDT is on six -- so the asset alone does not identify the transfer.",
                "nullable": true
              },
              "paid_amount": {
                "type": "string",
                "description": "Amount in pay_currency that has ACTUALLY arrived, as a decimal string.\n\n`pay_amount` above is the quote the payer was asked for; this is what the chain\ndelivered. On our real USDT/Tron payment of 2026-08-28 (transaction 672) they were\n49.98 and 46.69406 \u2014 only the quote was ever put on the wire, so that is what got\nrecorded as the amount received. Absent until something arrives, and absent on\nevery rail where the two cannot differ.",
                "nullable": true
              },
              "type": {
                "type": "string",
                "enum": [
                  "qr_code_information"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Contains url to fetch Qr code data",
            "required": [
              "qr_code_fetch_url",
              "type"
            ],
            "properties": {
              "qr_code_fetch_url": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "fetch_qr_code_information"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "sdk_uri",
              "display_from_timestamp",
              "type"
            ],
            "properties": {
              "sdk_uri": {
                "type": "string"
              },
              "image_data_url": {
                "type": "string",
                "description": "A pre-rendered QR of `sdk_uri`, when the connector supplies one. A payer on a\nPHONE taps `sdk_uri` straight into their UPI app; a payer on a DESKTOP cannot\nopen `upi://` at all and needs something to scan. The UPI rail returns a ready-made\nQR on every deposit, so passing it through here saves the checkout generating\none client-side. Optional: connectors without a QR simply omit it.",
                "nullable": true
              },
              "display_from_timestamp": {
                "type": "integer"
              },
              "display_to_timestamp": {
                "type": "integer",
                "nullable": true
              },
              "poll_config": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PollConfig"
                  }
                ],
                "nullable": true
              },
              "type": {
                "type": "string",
                "enum": [
                  "invoke_upi_intent_sdk"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "qr_code_url",
              "display_from_timestamp",
              "type"
            ],
            "properties": {
              "qr_code_url": {
                "type": "string"
              },
              "display_from_timestamp": {
                "type": "integer"
              },
              "display_to_timestamp": {
                "type": "integer",
                "nullable": true
              },
              "poll_config": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PollConfig"
                  }
                ],
                "nullable": true
              },
              "type": {
                "type": "string",
                "enum": [
                  "invoke_upi_qr_flow"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Contains the download url and the reference number for transaction",
            "required": [
              "voucher_details",
              "type"
            ],
            "properties": {
              "voucher_details": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "display_voucher_information"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Contains duration for displaying a wait screen, wait screen with timer is displayed by sdk",
            "required": [
              "display_from_timestamp",
              "type"
            ],
            "properties": {
              "display_from_timestamp": {
                "type": "integer"
              },
              "display_to_timestamp": {
                "type": "integer",
                "nullable": true
              },
              "poll_config": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PollConfig"
                  }
                ],
                "nullable": true
              },
              "type": {
                "type": "string",
                "enum": [
                  "wait_screen_information"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Contains the information regarding three_ds_method_data submission, three_ds authentication, and authorization flows",
            "required": [
              "three_ds_data",
              "type"
            ],
            "properties": {
              "three_ds_data": {
                "$ref": "#/components/schemas/ThreeDsData"
              },
              "type": {
                "type": "string",
                "enum": [
                  "three_ds_invoke"
                ]
              }
            }
          },
          {
            "type": "object",
            "required": [
              "next_action_data",
              "type"
            ],
            "properties": {
              "next_action_data": {
                "$ref": "#/components/schemas/SdkNextActionData"
              },
              "type": {
                "type": "string",
                "enum": [
                  "invoke_sdk_client"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Contains consent to collect otp for mobile payment",
            "required": [
              "consent_data_required",
              "type"
            ],
            "properties": {
              "consent_data_required": {
                "$ref": "#/components/schemas/MobilePaymentConsent"
              },
              "type": {
                "type": "string",
                "enum": [
                  "collect_otp"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "Contains data required to invoke hidden iframe",
            "required": [
              "iframe_data",
              "type"
            ],
            "properties": {
              "iframe_data": {
                "$ref": "#/components/schemas/IframeData"
              },
              "type": {
                "type": "string",
                "enum": [
                  "invoke_hidden_iframe"
                ]
              }
            }
          },
          {
            "type": "object",
            "description": "The data required to trigger the DDC (Device Data Collection) flow by rendering the provided URL in a hidden iframe.",
            "required": [
              "ddc_data",
              "type"
            ],
            "properties": {
              "ddc_data": {
                "$ref": "#/components/schemas/DDCData"
              },
              "type": {
                "type": "string",
                "enum": [
                  "invoke_ddc"
                ]
              }
            }
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "NoThirdPartySdkSessionResponse": {
        "type": "object",
        "required": [
          "epoch_timestamp",
          "expires_at",
          "merchant_session_identifier",
          "nonce",
          "merchant_identifier",
          "domain_name",
          "display_name",
          "signature",
          "operational_analytics_identifier",
          "retries",
          "psp_id"
        ],
        "properties": {
          "epoch_timestamp": {
            "type": "integer",
            "format": "int64",
            "description": "Timestamp at which session is requested",
            "minimum": 0
          },
          "expires_at": {
            "type": "integer",
            "format": "int64",
            "description": "Timestamp at which session expires",
            "minimum": 0
          },
          "merchant_session_identifier": {
            "type": "string",
            "description": "The identifier for the merchant session"
          },
          "nonce": {
            "type": "string",
            "description": "Apple pay generated unique ID (UUID) value"
          },
          "merchant_identifier": {
            "type": "string",
            "description": "The identifier for the merchant"
          },
          "domain_name": {
            "type": "string",
            "description": "The domain name of the merchant which is registered in Apple Pay"
          },
          "display_name": {
            "type": "string",
            "description": "The name to be displayed on Apple Pay button"
          },
          "signature": {
            "type": "string",
            "description": "A string which represents the properties of a payment"
          },
          "operational_analytics_identifier": {
            "type": "string",
            "description": "The identifier for the operational analytics"
          },
          "retries": {
            "type": "integer",
            "format": "int32",
            "description": "The number of retries to get the session response",
            "minimum": 0
          },
          "psp_id": {
            "type": "string",
            "description": "The identifier for the connector transaction"
          }
        }
      },
      "NullObject": {
        "nullable": true
      },
      "OnlineMandate": {
        "type": "object",
        "description": "Details of online mandate",
        "required": [
          "ip_address",
          "user_agent"
        ],
        "properties": {
          "ip_address": {
            "type": "string",
            "description": "Ip address of the customer machine from which the mandate was created",
            "example": "123.32.25.123"
          },
          "user_agent": {
            "type": "string",
            "description": "The user-agent of the customer's browser"
          }
        },
        "additionalProperties": false
      },
      "OpenBankingData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "open_banking_pis"
            ],
            "properties": {
              "open_banking_pis": {
                "type": "object"
              }
            }
          }
        ]
      },
      "OpenBankingSessionToken": {
        "type": "object",
        "required": [
          "open_banking_session_token"
        ],
        "properties": {
          "open_banking_session_token": {
            "type": "string",
            "description": "The session token for OpenBanking Connectors"
          }
        }
      },
      "OrderDetailsWithAmount": {
        "type": "object",
        "required": [
          "product_name",
          "quantity",
          "amount"
        ],
        "properties": {
          "product_name": {
            "type": "string",
            "description": "Name of the product that is being purchased",
            "example": "shirt",
            "maxLength": 255
          },
          "quantity": {
            "type": "integer",
            "format": "int32",
            "description": "The quantity of the product to be purchased",
            "example": 1,
            "minimum": 0
          },
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "the amount per quantity of product"
          },
          "tax_rate": {
            "type": "number",
            "format": "double",
            "description": "tax rate applicable to the product",
            "nullable": true
          },
          "total_tax_amount": {
            "type": "integer",
            "format": "int64",
            "description": "total tax amount applicable to the product",
            "nullable": true
          },
          "requires_shipping": {
            "type": "boolean",
            "nullable": true
          },
          "product_img_link": {
            "type": "string",
            "description": "The image URL of the product",
            "nullable": true
          },
          "product_id": {
            "type": "string",
            "description": "ID of the product that is being purchased",
            "nullable": true
          },
          "category": {
            "type": "string",
            "description": "Category of the product that is being purchased",
            "nullable": true
          },
          "sub_category": {
            "type": "string",
            "description": "Sub category of the product that is being purchased",
            "nullable": true
          },
          "brand": {
            "type": "string",
            "description": "Brand of the product that is being purchased",
            "nullable": true
          },
          "product_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProductType"
              }
            ],
            "nullable": true
          },
          "product_tax_code": {
            "type": "string",
            "description": "The tax code for the product",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Description for the item",
            "nullable": true
          },
          "sku": {
            "type": "string",
            "description": "Stock Keeping Unit (SKU) or the item identifier for this item.",
            "nullable": true
          },
          "upc": {
            "type": "string",
            "description": "Universal Product Code for the item.",
            "nullable": true
          },
          "commodity_code": {
            "type": "string",
            "description": "Code describing a commodity or a group of commodities pertaining to goods classification.",
            "nullable": true
          },
          "unit_of_measure": {
            "type": "string",
            "description": "Unit of measure used for the item quantity.",
            "nullable": true
          },
          "total_amount": {
            "type": "integer",
            "format": "int64",
            "description": "Total amount for the item.",
            "nullable": true
          },
          "unit_discount_amount": {
            "type": "integer",
            "format": "int64",
            "description": "Discount amount applied to this item.",
            "nullable": true
          }
        }
      },
      "PartnerApplicationDetails": {
        "type": "object",
        "description": "Information identifying partner / external platform details",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the partner/external platform",
            "nullable": true
          },
          "version": {
            "type": "string",
            "description": "Version of the partner/external platform",
            "example": "1.0.0",
            "nullable": true
          },
          "integrator": {
            "type": "string",
            "description": "Integrator",
            "nullable": true
          }
        }
      },
      "PartnerMerchantIdentifierDetails": {
        "type": "object",
        "description": "Information identifying partner and merchant application initiating the request",
        "properties": {
          "partner_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PartnerApplicationDetails"
              }
            ],
            "nullable": true
          },
          "merchant_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MerchantApplicationDetails"
              }
            ],
            "nullable": true
          }
        }
      },
      "PauseOption": {
        "type": "string",
        "enum": [
          "immediately",
          "end_of_term",
          "specific_date"
        ]
      },
      "PauseSubscriptionRequest": {
        "type": "object",
        "description": "Request payload for pausing a subscription.",
        "properties": {
          "pause_option": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PauseOption"
              }
            ],
            "nullable": true
          },
          "pause_at": {
            "type": "string",
            "description": "Optional date when the subscription should be paused (if not provided, pauses immediately)",
            "nullable": true
          }
        }
      },
      "PauseSubscriptionResponse": {
        "type": "object",
        "description": "Response payload returned after successfully pausing a subscription.",
        "required": [
          "id",
          "status",
          "profile_id",
          "merchant_id",
          "customer_id"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/SubscriptionId"
          },
          "status": {
            "$ref": "#/components/schemas/SubscriptionStatus"
          },
          "merchant_reference_id": {
            "type": "string",
            "description": "Merchant specific Unique identifier.",
            "nullable": true
          },
          "profile_id": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "merchant_id": {
            "$ref": "#/components/schemas/MerchantId"
          },
          "customer_id": {
            "$ref": "#/components/schemas/CustomerId"
          },
          "paused_at": {
            "type": "string",
            "description": "Date when the subscription was paused",
            "nullable": true
          }
        }
      },
      "PayLaterData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "klarna_redirect"
            ],
            "properties": {
              "klarna_redirect": {
                "type": "object",
                "description": "For KlarnaRedirect as PayLater Option",
                "properties": {
                  "billing_email": {
                    "type": "string",
                    "description": "The billing email",
                    "nullable": true
                  },
                  "billing_country": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/CountryAlpha2"
                      }
                    ],
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "klarna_sdk"
            ],
            "properties": {
              "klarna_sdk": {
                "type": "object",
                "description": "For Klarna Sdk as PayLater Option",
                "required": [
                  "token"
                ],
                "properties": {
                  "token": {
                    "type": "string",
                    "description": "The token for the sdk workflow"
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "affirm_redirect"
            ],
            "properties": {
              "affirm_redirect": {
                "type": "object",
                "description": "For Affirm redirect as PayLater Option"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "afterpay_clearpay_redirect"
            ],
            "properties": {
              "afterpay_clearpay_redirect": {
                "type": "object",
                "description": "For AfterpayClearpay redirect as PayLater Option",
                "properties": {
                  "billing_email": {
                    "type": "string",
                    "description": "The billing email",
                    "nullable": true
                  },
                  "billing_name": {
                    "type": "string",
                    "description": "The billing name",
                    "nullable": true
                  }
                }
              }
            }
          },
          {
            "type": "object",
            "required": [
              "pay_bright_redirect"
            ],
            "properties": {
              "pay_bright_redirect": {
                "type": "object",
                "description": "For PayBright Redirect as PayLater Option"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "flexiti_redirect"
            ],
            "properties": {
              "flexiti_redirect": {
                "type": "object",
                "description": "For Flexiti Redirect as PayLater long term finance Option"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "walley_redirect"
            ],
            "properties": {
              "walley_redirect": {
                "type": "object",
                "description": "For WalleyRedirect as PayLater Option"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "alma_redirect"
            ],
            "properties": {
              "alma_redirect": {
                "type": "object",
                "description": "For Alma Redirection as PayLater Option"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "atome_redirect"
            ],
            "properties": {
              "atome_redirect": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "breadpay_redirect"
            ],
            "properties": {
              "breadpay_redirect": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "payjustnow_redirect"
            ],
            "properties": {
              "payjustnow_redirect": {
                "type": "object"
              }
            }
          }
        ]
      },
      "PayPalWalletData": {
        "type": "object",
        "required": [
          "token"
        ],
        "properties": {
          "token": {
            "type": "string",
            "description": "Token generated for the Apple pay"
          }
        }
      },
      "PaymentChannel": {
        "oneOf": [
          {
            "type": "string",
            "enum": [
              "ecommerce"
            ]
          },
          {
            "type": "string",
            "enum": [
              "mail_order"
            ]
          },
          {
            "type": "string",
            "enum": [
              "telephone_order"
            ]
          },
          {
            "type": "object",
            "required": [
              "other"
            ],
            "properties": {
              "other": {
                "type": "string"
              }
            }
          }
        ],
        "description": "Describes the channel through which the payment was initiated."
      },
      "PaymentCreatePaymentLinkConfig": {
        "allOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentLinkConfigRequest"
              }
            ],
            "nullable": true
          },
          {
            "type": "object"
          }
        ],
        "description": "Configure a custom payment link for the particular payment"
      },
      "PaymentData": {
        "type": "object",
        "description": "Represents the payment data used in the 3DS decision rule.",
        "required": [
          "amount",
          "currency"
        ],
        "properties": {
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "The amount of the payment in minor units (e.g., cents for USD)."
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          }
        }
      },
      "PaymentDetails": {
        "type": "object",
        "properties": {
          "payment_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethod"
              }
            ],
            "nullable": true
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "payment_method_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodDataRequest"
              }
            ],
            "nullable": true
          },
          "setup_future_usage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FutureUsage"
              }
            ],
            "nullable": true
          },
          "customer_acceptance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerAcceptance"
              }
            ],
            "nullable": true
          },
          "return_url": {
            "type": "string",
            "description": "The url to which user must be redirected to after completion of the purchase",
            "nullable": true
          },
          "capture_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CaptureMethod"
              }
            ],
            "nullable": true
          },
          "authentication_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthenticationType"
              }
            ],
            "nullable": true
          },
          "payment_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentType"
              }
            ],
            "nullable": true
          },
          "payment_method_id": {
            "type": "string",
            "example": "pm_examplexxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "nullable": true
          }
        }
      },
      "PaymentExperience": {
        "type": "string",
        "description": "To indicate the type of payment experience that the customer would go through",
        "enum": [
          "redirect_to_url",
          "invoke_sdk_client",
          "display_qr_code",
          "one_click",
          "link_wallet",
          "invoke_payment_app",
          "display_wait_screen",
          "collect_otp"
        ]
      },
      "PaymentExperienceTypes": {
        "type": "object",
        "required": [
          "eligible_connectors"
        ],
        "properties": {
          "payment_experience_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentExperience"
              }
            ],
            "nullable": true
          },
          "eligible_connectors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Reserved. Always empty on merchant-facing responses; raw connector\nnames are never exposed on the merchant surface (leak #18). Wallet/\npay-later routing is decided server-side by the engine, not the browser.",
            "example": []
          }
        }
      },
      "PaymentId": {
        "type": "string",
        "description": "A type for payment_id that can be used for payment ids"
      },
      "PaymentLinkBackgroundImageConfig": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "URL of the image",
            "example": "https://tensorrail.com/favicon.ico"
          },
          "position": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ElementPosition"
              }
            ],
            "nullable": true
          },
          "size": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ElementSize"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentLinkConfigRequest": {
        "type": "object",
        "properties": {
          "theme": {
            "type": "string",
            "description": "custom theme for the payment link",
            "example": "#4E6ADD",
            "nullable": true,
            "maxLength": 255
          },
          "logo": {
            "type": "string",
            "description": "merchant display logo",
            "example": "https://i.pinimg.com/736x/4d/83/5c/4d835ca8aafbbb15f84d07d926fda473.jpg",
            "nullable": true,
            "maxLength": 255
          },
          "seller_name": {
            "type": "string",
            "description": "Custom merchant name for payment link",
            "example": "tensorrail",
            "nullable": true,
            "maxLength": 255
          },
          "sdk_layout": {
            "type": "string",
            "description": "Custom layout for sdk",
            "example": "accordion",
            "nullable": true,
            "maxLength": 255
          },
          "display_sdk_only": {
            "type": "boolean",
            "description": "Display only the sdk for payment link",
            "default": false,
            "example": true,
            "nullable": true
          },
          "enabled_saved_payment_method": {
            "type": "boolean",
            "description": "Enable saved payment method option for payment link",
            "default": false,
            "example": true,
            "nullable": true
          },
          "hide_card_nickname_field": {
            "type": "boolean",
            "description": "Hide card nickname field option for payment link",
            "default": false,
            "example": true,
            "nullable": true
          },
          "show_card_form_by_default": {
            "type": "boolean",
            "description": "Show card form by default for payment link",
            "default": true,
            "example": true,
            "nullable": true
          },
          "transaction_details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentLinkTransactionDetails"
            },
            "description": "Dynamic details related to merchant to be rendered in payment link",
            "nullable": true
          },
          "background_image": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentLinkBackgroundImageConfig"
              }
            ],
            "nullable": true
          },
          "details_layout": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentLinkDetailsLayout"
              }
            ],
            "nullable": true
          },
          "payment_button_text": {
            "type": "string",
            "description": "Text for payment link's handle confirm button",
            "nullable": true
          },
          "custom_message_for_card_terms": {
            "type": "string",
            "description": "Text for customizing message for card terms",
            "nullable": true
          },
          "custom_message_for_payment_method_types": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodsConfig"
              }
            ],
            "nullable": true
          },
          "payment_button_colour": {
            "type": "string",
            "description": "Custom background colour for payment link's handle confirm button",
            "nullable": true
          },
          "skip_status_screen": {
            "type": "boolean",
            "description": "Skip the status screen after payment completion",
            "nullable": true
          },
          "payment_button_text_colour": {
            "type": "string",
            "description": "Custom text colour for payment link's handle confirm button",
            "nullable": true
          },
          "background_colour": {
            "type": "string",
            "description": "Custom background colour for the payment link",
            "nullable": true
          },
          "sdk_ui_rules": {
            "type": "object",
            "description": "SDK configuration rules",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "payment_link_ui_rules": {
            "type": "object",
            "description": "Payment link configuration rules",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "enable_button_only_on_form_ready": {
            "type": "boolean",
            "description": "Flag to enable the button only when the payment form is ready for submission",
            "nullable": true
          },
          "payment_form_header_text": {
            "type": "string",
            "description": "Optional header for the SDK's payment form",
            "nullable": true
          },
          "payment_form_label_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentLinkSdkLabelType"
              }
            ],
            "nullable": true
          },
          "show_card_terms": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentLinkShowSdkTerms"
              }
            ],
            "nullable": true
          },
          "is_setup_mandate_flow": {
            "type": "boolean",
            "description": "Boolean to control payment button text for setup mandate calls",
            "nullable": true
          },
          "color_icon_card_cvc_error": {
            "type": "string",
            "description": "Hex color for the CVC icon during error state",
            "nullable": true
          },
          "payment_method_order": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodOrderConfig"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentLinkDetailsLayout": {
        "type": "string",
        "enum": [
          "layout1",
          "layout2"
        ]
      },
      "PaymentLinkListConstraints": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int64",
            "description": "limit on the number of objects to return",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "description": "The time at which payment link is created",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          },
          "created.lt": {
            "type": "string",
            "format": "date-time",
            "description": "Time less than the payment link created time",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          },
          "created.gt": {
            "type": "string",
            "format": "date-time",
            "description": "Time greater than the payment link created time",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          },
          "created.lte": {
            "type": "string",
            "format": "date-time",
            "description": "Time less than or equals to the payment link created time",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          },
          "created.gte": {
            "type": "string",
            "format": "date-time",
            "description": "Time greater than or equals to the payment link created time",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PaymentLinkResponse": {
        "type": "object",
        "required": [
          "link",
          "payment_link_id"
        ],
        "properties": {
          "link": {
            "type": "string",
            "description": "URL for rendering the open payment link"
          },
          "secure_link": {
            "type": "string",
            "description": "URL for rendering the secure payment link",
            "nullable": true
          },
          "payment_link_id": {
            "type": "string",
            "description": "Identifier for the payment link"
          }
        }
      },
      "PaymentLinkSdkLabelType": {
        "type": "string",
        "enum": [
          "above",
          "floating",
          "never"
        ]
      },
      "PaymentLinkShowSdkTerms": {
        "type": "string",
        "enum": [
          "always",
          "auto",
          "never"
        ]
      },
      "PaymentLinkStatus": {
        "type": "string",
        "description": "Status Of the Payment Link",
        "enum": [
          "active",
          "expired"
        ]
      },
      "PaymentLinkTransactionDetails": {
        "type": "object",
        "required": [
          "key",
          "value"
        ],
        "properties": {
          "key": {
            "type": "string",
            "description": "Key for the transaction details",
            "example": "Policy-Number",
            "maxLength": 255
          },
          "value": {
            "type": "string",
            "description": "Value for the transaction details",
            "example": "297472368473924",
            "maxLength": 255
          },
          "ui_configuration": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionDetailsUiConfiguration"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentListResponse": {
        "type": "object",
        "required": [
          "size",
          "data"
        ],
        "properties": {
          "size": {
            "type": "integer",
            "description": "The number of payments included in the list",
            "minimum": 0
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentsResponse"
            }
          }
        }
      },
      "PaymentMethod": {
        "type": "string",
        "description": "Indicates the type of payment method. Eg: 'card', 'wallet', etc.",
        "enum": [
          "card",
          "card_redirect",
          "pay_later",
          "wallet",
          "bank_redirect",
          "bank_transfer",
          "crypto",
          "bank_debit",
          "reward",
          "real_time_payment",
          "upi",
          "voucher",
          "gift_card",
          "open_banking",
          "mobile_payment",
          "network_token"
        ]
      },
      "PaymentMethodConfig": {
        "type": "object",
        "description": "Custom T&C messages for a specific payment method",
        "required": [
          "payment_method",
          "payment_method_types"
        ],
        "properties": {
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "payment_method_types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomTerms"
            },
            "description": "Payment Method Types",
            "example": [
              {
                "message": {
                  "display_mode": "custom",
                  "value": "Sample message"
                },
                "payment_method_type": "credit"
              }
            ]
          }
        }
      },
      "PaymentMethodCreate": {
        "type": "object",
        "required": [
          "payment_method"
        ],
        "properties": {
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "payment_method_issuer": {
            "type": "string",
            "description": "The name of the bank/ provider issuing the payment method to the end user",
            "example": "Citibank",
            "nullable": true
          },
          "payment_method_issuer_code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodIssuerCode"
              }
            ],
            "nullable": true
          },
          "card": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardDetail"
              }
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.",
            "nullable": true
          },
          "customer_id": {
            "type": "string",
            "description": "The unique identifier of the customer.",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 64,
            "minLength": 1
          },
          "card_network": {
            "type": "string",
            "description": "The card network",
            "example": "Visa",
            "nullable": true
          },
          "bank_transfer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Bank"
              }
            ],
            "nullable": true
          },
          "bank_transfer_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BankTransfer"
              }
            ],
            "nullable": true
          },
          "wallet": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Wallet"
              }
            ],
            "nullable": true
          },
          "client_secret": {
            "type": "string",
            "description": "For Client based calls, SDK will use the client_secret\nin order to call /payment_methods\nClient secret will be generated whenever a new\npayment method is created",
            "nullable": true
          },
          "payment_method_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodCreateData"
              }
            ],
            "nullable": true
          },
          "billing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PaymentMethodCreateData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "card"
            ],
            "properties": {
              "card": {
                "$ref": "#/components/schemas/CardDetail"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "bank_debit"
            ],
            "properties": {
              "bank_debit": {
                "$ref": "#/components/schemas/BankDebitDetail"
              }
            }
          }
        ]
      },
      "PaymentMethodData": {
        "oneOf": [
          {
            "type": "object",
            "title": "Card",
            "required": [
              "card"
            ],
            "properties": {
              "card": {
                "$ref": "#/components/schemas/Card"
              }
            }
          },
          {
            "type": "object",
            "title": "CardRedirect",
            "required": [
              "card_redirect"
            ],
            "properties": {
              "card_redirect": {
                "$ref": "#/components/schemas/CardRedirectData"
              }
            }
          },
          {
            "type": "object",
            "title": "Wallet",
            "required": [
              "wallet"
            ],
            "properties": {
              "wallet": {
                "$ref": "#/components/schemas/WalletData"
              }
            }
          },
          {
            "type": "object",
            "title": "PayLater",
            "required": [
              "pay_later"
            ],
            "properties": {
              "pay_later": {
                "$ref": "#/components/schemas/PayLaterData"
              }
            }
          },
          {
            "type": "object",
            "title": "BankRedirect",
            "required": [
              "bank_redirect"
            ],
            "properties": {
              "bank_redirect": {
                "$ref": "#/components/schemas/BankRedirectData"
              }
            }
          },
          {
            "type": "object",
            "title": "BankDebit",
            "required": [
              "bank_debit"
            ],
            "properties": {
              "bank_debit": {
                "$ref": "#/components/schemas/BankDebitData"
              }
            }
          },
          {
            "type": "object",
            "title": "BankTransfer",
            "required": [
              "bank_transfer"
            ],
            "properties": {
              "bank_transfer": {
                "$ref": "#/components/schemas/BankTransferData"
              }
            }
          },
          {
            "type": "object",
            "title": "RealTimePayment",
            "required": [
              "real_time_payment"
            ],
            "properties": {
              "real_time_payment": {
                "$ref": "#/components/schemas/RealTimePaymentData"
              }
            }
          },
          {
            "type": "object",
            "title": "Crypto",
            "required": [
              "crypto"
            ],
            "properties": {
              "crypto": {
                "$ref": "#/components/schemas/CryptoData"
              }
            }
          },
          {
            "type": "string",
            "title": "MandatePayment",
            "enum": [
              "mandate_payment"
            ]
          },
          {
            "type": "string",
            "title": "Reward",
            "enum": [
              "reward"
            ]
          },
          {
            "type": "object",
            "title": "Upi",
            "required": [
              "upi"
            ],
            "properties": {
              "upi": {
                "$ref": "#/components/schemas/UpiData"
              }
            }
          },
          {
            "type": "object",
            "title": "Voucher",
            "required": [
              "voucher"
            ],
            "properties": {
              "voucher": {
                "$ref": "#/components/schemas/VoucherData"
              }
            }
          },
          {
            "type": "object",
            "title": "GiftCard",
            "required": [
              "gift_card"
            ],
            "properties": {
              "gift_card": {
                "$ref": "#/components/schemas/GiftCardData"
              }
            }
          },
          {
            "type": "object",
            "title": "CardToken",
            "required": [
              "card_token"
            ],
            "properties": {
              "card_token": {
                "$ref": "#/components/schemas/CardToken"
              }
            }
          },
          {
            "type": "object",
            "title": "OpenBanking",
            "required": [
              "open_banking"
            ],
            "properties": {
              "open_banking": {
                "$ref": "#/components/schemas/OpenBankingData"
              }
            }
          },
          {
            "type": "object",
            "title": "MobilePayment",
            "required": [
              "mobile_payment"
            ],
            "properties": {
              "mobile_payment": {
                "$ref": "#/components/schemas/MobilePaymentData"
              }
            }
          },
          {
            "type": "object",
            "title": "NetworkToken",
            "required": [
              "network_token"
            ],
            "properties": {
              "network_token": {
                "$ref": "#/components/schemas/NetworkTokenData"
              }
            }
          },
          {
            "type": "object",
            "title": "PspToken",
            "required": [
              "psp_token"
            ],
            "properties": {
              "psp_token": {
                "$ref": "#/components/schemas/PspTokenData"
              }
            }
          }
        ]
      },
      "PaymentMethodDataRequest": {
        "allOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodData"
              }
            ],
            "nullable": true
          },
          {
            "type": "object",
            "properties": {
              "billing": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Address"
                  }
                ],
                "nullable": true
              }
            }
          }
        ],
        "description": "The payment method information provided for making a payment"
      },
      "PaymentMethodDataWalletInfo": {
        "type": "object",
        "properties": {
          "last4": {
            "type": "string",
            "description": "Last 4 digits of the card number",
            "nullable": true
          },
          "card_network": {
            "type": "string",
            "description": "The information of the payment method",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "The type of payment method",
            "nullable": true
          },
          "card_exp_month": {
            "type": "string",
            "description": "The card's expiry month",
            "example": "10",
            "nullable": true
          },
          "card_exp_year": {
            "type": "string",
            "description": "The card's expiry year",
            "example": "25",
            "nullable": true
          },
          "auth_code": {
            "type": "string",
            "description": "Unique authorisation code for the payment",
            "example": "003225",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address associated with the wallet (e.g. PayPal email)",
            "example": "johntest@test.com",
            "nullable": true
          }
        }
      },
      "PaymentMethodDeleteResponse": {
        "type": "object",
        "required": [
          "payment_method_id",
          "deleted"
        ],
        "properties": {
          "payment_method_id": {
            "type": "string",
            "description": "The unique identifier of the Payment method",
            "example": "card_rGK4Vi5iSW70MY7J2mIg"
          },
          "deleted": {
            "type": "boolean",
            "description": "Whether payment method was deleted or not",
            "example": true
          }
        }
      },
      "PaymentMethodIssuerCode": {
        "type": "string",
        "enum": [
          "jp_hdfc",
          "jp_icici",
          "jp_googlepay",
          "jp_applepay",
          "jp_phonepay",
          "jp_wechat",
          "jp_sofort",
          "jp_giropay",
          "jp_sepa",
          "jp_bacs"
        ]
      },
      "PaymentMethodListInstallmentAmountDetails": {
        "type": "object",
        "description": "Amount breakdown for a single installment plan",
        "required": [
          "amount_per_installment",
          "total_amount"
        ],
        "properties": {
          "amount_per_installment": {
            "type": "number",
            "format": "double",
            "description": "Amount charged per installment in major units"
          },
          "total_amount": {
            "type": "number",
            "format": "double",
            "description": "Total amount across all installments in major units (may differ slightly from order amount due to ceiling)"
          }
        }
      },
      "PaymentMethodListInstallmentOption": {
        "type": "object",
        "description": "Installment options for a payment method, as returned in the payment method list response",
        "required": [
          "payment_method",
          "available_plans"
        ],
        "properties": {
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "available_plans": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentMethodListInstallmentPlan"
            },
            "description": "Individual installment plans with computed amounts"
          }
        }
      },
      "PaymentMethodListInstallmentPlan": {
        "type": "object",
        "description": "A single installment plan with pre-computed amount breakdown",
        "required": [
          "number_of_installments",
          "billing_frequency",
          "interest_rate",
          "amount_details"
        ],
        "properties": {
          "number_of_installments": {
            "type": "integer",
            "format": "int32",
            "description": "Number of installments for this plan",
            "minimum": 0
          },
          "billing_frequency": {
            "$ref": "#/components/schemas/BillingFrequency"
          },
          "interest_rate": {
            "type": "number",
            "format": "double",
            "description": "Interest rate as a percentage"
          },
          "amount_details": {
            "$ref": "#/components/schemas/PaymentMethodListInstallmentAmountDetails"
          }
        }
      },
      "PaymentMethodListIntentData": {
        "type": "object",
        "description": "Intent-only payment details returned as part of the Payment Method List response",
        "required": [
          "payment_id",
          "status",
          "amount",
          "attempt_count"
        ],
        "properties": {
          "payment_id": {
            "type": "string",
            "description": "Unique identifier for the payment"
          },
          "status": {
            "$ref": "#/components/schemas/IntentStatus"
          },
          "amount": {
            "$ref": "#/components/schemas/MinorUnit"
          },
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Currency"
              }
            ],
            "nullable": true
          },
          "client_secret": {
            "type": "string",
            "description": "Client secret for client-side payment confirmation",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "A description for the payment",
            "nullable": true
          },
          "customer_id": {
            "type": "string",
            "description": "The customer identifier",
            "nullable": true
          },
          "return_url": {
            "type": "string",
            "description": "The URL to redirect to after payment completion",
            "nullable": true
          },
          "setup_future_usage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FutureUsage"
              }
            ],
            "nullable": true
          },
          "billing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "shipping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "Additional metadata",
            "nullable": true
          },
          "order_details": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Order details for the payment",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the payment was created",
            "nullable": true
          },
          "expires_on": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the client secret expires",
            "nullable": true
          },
          "profile_id": {
            "type": "string",
            "description": "The profile identifier",
            "nullable": true
          },
          "merchant_order_reference_id": {
            "type": "string",
            "description": "Merchant-provided reference identifier",
            "nullable": true
          },
          "attempt_count": {
            "type": "integer",
            "format": "int32",
            "description": "Number of payment attempts made"
          },
          "installment_options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentMethodListInstallmentOption"
            },
            "description": "Installment options available for this payment",
            "nullable": true
          }
        }
      },
      "PaymentMethodListResponse": {
        "type": "object",
        "required": [
          "currency",
          "payment_methods",
          "mandate_payment",
          "show_surcharge_breakup_screen",
          "request_external_three_ds_authentication",
          "is_tax_calculation_enabled",
          "sdk_next_action",
          "is_guest_customer"
        ],
        "properties": {
          "redirect_url": {
            "type": "string",
            "description": "Redirect URL of the merchant",
            "example": "https://www.google.com",
            "nullable": true
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "payment_methods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResponsePaymentMethodsEnabled"
            },
            "description": "Information about the payment method"
          },
          "mandate_payment": {
            "$ref": "#/components/schemas/MandateType"
          },
          "merchant_name": {
            "type": "string",
            "nullable": true
          },
          "checkout_branding": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CheckoutBranding"
              }
            ],
            "nullable": true
          },
          "payment_method_order": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodOrderConfig"
              }
            ],
            "nullable": true
          },
          "show_surcharge_breakup_screen": {
            "type": "boolean",
            "description": "flag to indicate if surcharge and tax breakup screen should be shown or not"
          },
          "payment_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentType"
              }
            ],
            "nullable": true
          },
          "request_external_three_ds_authentication": {
            "type": "boolean",
            "description": "flag to indicate whether to perform external 3ds authentication",
            "example": true
          },
          "collect_shipping_details_from_wallets": {
            "type": "boolean",
            "description": "flag that indicates whether to collect shipping details from wallets or from the customer",
            "nullable": true
          },
          "collect_billing_details_from_wallets": {
            "type": "boolean",
            "description": "flag that indicates whether to collect billing details from wallets or from the customer",
            "nullable": true
          },
          "is_tax_calculation_enabled": {
            "type": "boolean",
            "description": "flag that indicates whether to calculate tax on the order amount"
          },
          "sdk_next_action": {
            "$ref": "#/components/schemas/SdkNextAction"
          },
          "is_guest_customer": {
            "type": "boolean",
            "description": "indicates whether this is a guest customer flow"
          },
          "intent_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodListIntentData"
              }
            ],
            "nullable": true
          },
          "card_checkout_config": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardCheckoutConfig"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentMethodMetaData": {
        "type": "object",
        "description": "Represents metadata about the payment method used in the 3DS decision rule.",
        "required": [
          "card_network",
          "card_discovery"
        ],
        "properties": {
          "card_network": {
            "$ref": "#/components/schemas/CardNetwork"
          },
          "card_discovery": {
            "$ref": "#/components/schemas/CardDiscovery"
          }
        }
      },
      "PaymentMethodOrderConfig": {
        "type": "object",
        "description": "Merchant-configured ordering of payment methods on the hosted checkout.",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Master switch; the checkout applies the ordering only when true",
            "nullable": true
          },
          "default_order": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Method identifiers in display order, e.g. [\"upi\", \"card\", \"wallet\"]",
            "nullable": true
          },
          "country_overrides": {
            "type": "object",
            "description": "Country-specific order overriding default_order, keyed by ISO 3166-1 alpha-2",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "disabled_methods": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Methods hidden from the checkout entirely",
            "nullable": true
          }
        }
      },
      "PaymentMethodResponse": {
        "type": "object",
        "required": [
          "merchant_id",
          "payment_method_id",
          "payment_method"
        ],
        "properties": {
          "merchant_id": {
            "type": "string",
            "description": "Unique identifier for a merchant",
            "example": "merchant_1671528864"
          },
          "customer_id": {
            "type": "string",
            "description": "The unique identifier of the customer.",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 64,
            "minLength": 1
          },
          "payment_method_id": {
            "type": "string",
            "description": "The unique identifier of the Payment method",
            "example": "card_rGK4Vi5iSW70MY7J2mIg"
          },
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "card": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardDetailFromLocker"
              }
            ],
            "nullable": true
          },
          "recurring_enabled": {
            "type": "boolean",
            "description": "Indicates whether the payment method supports recurring payments. Optional.",
            "example": true,
            "nullable": true
          },
          "installment_payment_enabled": {
            "type": "boolean",
            "description": "Indicates whether the payment method is eligible for installment payments (e.g., EMI, BNPL). Optional.",
            "example": true,
            "nullable": true
          },
          "payment_experience": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentExperience"
            },
            "description": "Type of payment experience enabled with the connector",
            "example": [
              "redirect_to_url"
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "description": "A timestamp (ISO 8601 code) that determines when the payment method was created",
            "example": "2023-01-18T11:04:09.922Z",
            "nullable": true
          },
          "bank_transfer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Bank"
              }
            ],
            "nullable": true
          },
          "last_used_at": {
            "type": "string",
            "format": "date-time",
            "example": "2024-02-24T11:04:09.922Z",
            "nullable": true
          },
          "client_secret": {
            "type": "string",
            "description": "For Client based calls",
            "nullable": true
          }
        }
      },
      "PaymentMethodType": {
        "type": "string",
        "description": "Indicates the sub type of payment method. Eg: 'google_pay' & 'apple_pay' for wallets.",
        "enum": [
          "ach",
          "affirm",
          "afterpay_clearpay",
          "alfamart",
          "ali_pay",
          "ali_pay_hk",
          "alma",
          "amazon_pay",
          "paysera",
          "apple_pay",
          "atome",
          "bacs",
          "bancontact_card",
          "becs",
          "benefit",
          "bizum",
          "blik",
          "bluecode",
          "boleto",
          "bca_bank_transfer",
          "bni_va",
          "breadpay",
          "bri_va",
          "bhn_card_network",
          "card_redirect",
          "cimb_va",
          "classic",
          "credit",
          "crypto_currency",
          "cashapp",
          "dana",
          "danamon_va",
          "debit",
          "duit_now",
          "efecty",
          "eft",
          "eps",
          "flexiti",
          "fps",
          "evoucher",
          "giropay",
          "givex",
          "google_pay",
          "go_pay",
          "gcash",
          "ideal",
          "interac",
          "indomaret",
          "klarna",
          "kakao_pay",
          "local_bank_redirect",
          "mandiri_va",
          "knet",
          "mb_way",
          "mobile_pay",
          "momo",
          "momo_atm",
          "multibanco",
          "online_banking_thailand",
          "online_banking_czech_republic",
          "online_banking_finland",
          "online_banking_fpx",
          "online_banking_poland",
          "online_banking_slovakia",
          "oxxo",
          "pago_efectivo",
          "permata_bank_transfer",
          "open_banking_uk",
          "pay_bright",
          "payjustnow",
          "paypal",
          "paze",
          "pix",
          "pix_automatico_qr",
          "pix_automatico_push",
          "pay_safe_card",
          "przelewy24",
          "prompt_pay",
          "pse",
          "qris",
          "red_compra",
          "red_pagos",
          "samsung_pay",
          "sepa",
          "sepa_bank_transfer",
          "sepa_guarenteed_debit",
          "skrill",
          "sofort",
          "swish",
          "touch_n_go",
          "trustly",
          "twint",
          "upi_collect",
          "upi_intent",
          "upi_qr",
          "vipps",
          "viet_qr",
          "venmo",
          "walley",
          "we_chat_pay",
          "seven_eleven",
          "lawson",
          "mini_stop",
          "family_mart",
          "seicomart",
          "pay_easy",
          "local_bank_transfer",
          "mifinity",
          "open_banking_pis",
          "direct_carrier_billing",
          "instant_bank_transfer",
          "instant_bank_transfer_finland",
          "instant_bank_transfer_poland",
          "revolut_pay",
          "indonesian_bank_transfer",
          "open_banking",
          "network_token"
        ]
      },
      "PaymentMethodUpdate": {
        "type": "object",
        "properties": {
          "card": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CardDetailUpdate"
              }
            ],
            "nullable": true
          },
          "wallet": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodDataWalletInfo"
              }
            ],
            "nullable": true
          },
          "client_secret": {
            "type": "string",
            "description": "This is a 15 minute expiry token which shall be used from the client to authenticate and perform sessions from the SDK",
            "example": "secret_k2uj3he2893eiu2d",
            "nullable": true,
            "maxLength": 128
          }
        },
        "additionalProperties": false
      },
      "PaymentMethodsConfig": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/PaymentMethodConfig"
        },
        "description": "List of custom T&C messages grouped by payment method"
      },
      "PaymentProcessingDetails": {
        "type": "object",
        "required": [
          "payment_processing_certificate",
          "payment_processing_certificate_key"
        ],
        "properties": {
          "payment_processing_certificate": {
            "type": "string"
          },
          "payment_processing_certificate_key": {
            "type": "string"
          }
        }
      },
      "PaymentProcessingDetailsAt": {
        "oneOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentProcessingDetails"
              },
              {
                "type": "object",
                "required": [
                  "payment_processing_details_at"
                ],
                "properties": {
                  "payment_processing_details_at": {
                    "type": "string",
                    "enum": [
                      "TensorRail"
                    ]
                  }
                }
              }
            ]
          },
          {
            "type": "object",
            "required": [
              "payment_processing_details_at"
            ],
            "properties": {
              "payment_processing_details_at": {
                "type": "string",
                "enum": [
                  "Connector"
                ]
              }
            }
          }
        ],
        "discriminator": {
          "propertyName": "payment_processing_details_at"
        }
      },
      "PaymentResponseData": {
        "type": "object",
        "required": [
          "payment_id",
          "status",
          "amount",
          "currency"
        ],
        "properties": {
          "payment_id": {
            "$ref": "#/components/schemas/PaymentId"
          },
          "status": {
            "$ref": "#/components/schemas/IntentStatus"
          },
          "amount": {
            "$ref": "#/components/schemas/MinorUnit"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "profile_id": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProfileId"
              }
            ],
            "nullable": true
          },
          "connector": {
            "type": "string",
            "nullable": true,
            "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor."
          },
          "payment_method_id": {
            "type": "string",
            "description": "Identifier for Payment Method",
            "example": "pm_examplexxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "nullable": true
          },
          "return_url": {
            "type": "string",
            "description": "The url to which user must be redirected to after completion of the purchase",
            "nullable": true
          },
          "next_action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextActionData"
              }
            ],
            "nullable": true
          },
          "payment_experience": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentExperience"
              }
            ],
            "nullable": true
          },
          "error_code": {
            "type": "string",
            "nullable": true
          },
          "error_message": {
            "type": "string",
            "nullable": true
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "client_secret": {
            "type": "string",
            "description": "This is a token which expires after 15 minutes, used from the client to authenticate and create sessions from the SDK",
            "nullable": true
          },
          "billing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "shipping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "payment_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentType"
              }
            ],
            "nullable": true
          },
          "payment_token": {
            "type": "string",
            "example": "token_sxJdmpUnpNsJk5VWzcjl",
            "nullable": true
          }
        }
      },
      "PaymentType": {
        "type": "string",
        "description": "The type of the payment that differentiates between normal and various types of mandate payments. Use 'setup_mandate' in case of zero auth flow.",
        "enum": [
          "normal",
          "new_mandate",
          "setup_mandate",
          "recurring_mandate",
          "installment"
        ]
      },
      "PaymentsCancelPostCaptureRequest": {
        "type": "object",
        "description": "Request to cancel a payment when the payment is already captured",
        "properties": {
          "cancellation_reason": {
            "type": "string",
            "description": "The reason for the payment cancel",
            "nullable": true
          }
        }
      },
      "PaymentsCancelRequest": {
        "type": "object",
        "properties": {
          "cancellation_reason": {
            "type": "string",
            "description": "The reason for the payment cancel",
            "nullable": true
          },
          "merchant_connector_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MerchantConnectorDetailsWrap"
              }
            ],
            "nullable": true
          },
          "all_keys_required": {
            "type": "boolean",
            "description": "If enabled, provides whole connector response",
            "nullable": true
          }
        }
      },
      "PaymentsCaptureRequest": {
        "type": "object",
        "properties": {
          "merchant_id": {
            "type": "string",
            "description": "The unique identifier for the merchant. This is usually inferred from the API key.",
            "nullable": true
          },
          "amount_to_capture": {
            "type": "integer",
            "format": "int64",
            "description": "The amount to capture, in the lowest denomination of the currency. If omitted, the entire `amount_capturable` of the payment will be captured. Must be less than or equal to the current `amount_capturable`.",
            "example": 6540,
            "nullable": true
          },
          "refund_uncaptured_amount": {
            "type": "boolean",
            "description": "Decider to refund the uncaptured amount. (Currently not fully supported or behavior may vary by connector).",
            "nullable": true
          },
          "statement_descriptor_suffix": {
            "type": "string",
            "description": "A dynamic suffix that appears on your customer's credit card statement. This is concatenated with the (shortened) descriptor prefix set on your account to form the complete statement descriptor. The combined length should not exceed connector-specific limits (typically 22 characters).",
            "nullable": true
          },
          "statement_descriptor_prefix": {
            "type": "string",
            "description": "An optional prefix for the statement descriptor that appears on your customer's credit card statement. This can override the default prefix set on your merchant account. The combined length of prefix and suffix should not exceed connector-specific limits (typically 22 characters).",
            "nullable": true
          },
          "merchant_connector_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MerchantConnectorDetailsWrap"
              }
            ],
            "nullable": true
          },
          "all_keys_required": {
            "type": "boolean",
            "description": "If true, returns stringified connector raw response body",
            "nullable": true
          }
        }
      },
      "PaymentsCompleteAuthorizeRequest": {
        "type": "object",
        "properties": {
          "shipping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "client_secret": {
            "type": "string",
            "description": "Client Secret",
            "nullable": true
          },
          "threeds_method_comp_ind": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ThreeDsCompletionIndicator"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentsConfirmRequest": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "The primary amount for the payment, provided in the lowest denomination of the specified currency (e.g., 6540 for $65.40 USD). This field is mandatory for creating a payment.",
            "example": 6540,
            "nullable": true,
            "minimum": 0
          },
          "order_tax_amount": {
            "type": "integer",
            "format": "int64",
            "description": "Total tax amount applicable to the order, in the lowest denomination of the currency.",
            "example": 6540,
            "nullable": true
          },
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Currency"
              }
            ],
            "nullable": true
          },
          "amount_to_capture": {
            "type": "integer",
            "format": "int64",
            "description": "The amount to be captured from the user's payment method, in the lowest denomination. If not provided, and `capture_method` is `automatic`, the full payment `amount` will be captured. If `capture_method` is `manual`, this can be specified in the `/capture` call. Must be less than or equal to the authorized amount.",
            "example": 6540,
            "nullable": true
          },
          "shipping_cost": {
            "type": "integer",
            "format": "int64",
            "description": "The shipping cost for the payment. This is required for tax calculation in some regions.",
            "example": 6540,
            "nullable": true
          },
          "payment_id": {
            "type": "string",
            "description": "Optional. A merchant-provided unique identifier for the payment, up to 64 characters\n(e.g., \"pay_examplexxxxxxxxxxxxxxxxxxx\"). If provided, it ensures idempotency for the\npayment creation request. If omitted, TensorRail generates a unique ID for the payment\n(a 4-character prefix plus 20 generated characters, so 24 in total).",
            "example": "pay_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 62,
            "minLength": 1
          },
          "routing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StraightThroughAlgorithm"
              }
            ],
            "nullable": true
          },
          "connector": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Connector"
            },
            "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor.",
            "nullable": true
          },
          "capture_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CaptureMethod"
              }
            ],
            "nullable": true
          },
          "authentication_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthenticationType"
              }
            ],
            "default": "three_ds",
            "nullable": true
          },
          "billing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "confirm": {
            "type": "boolean",
            "description": "If set to `true`, TensorRail attempts to confirm and authorize the payment immediately after creation, provided sufficient payment method details are included. If `false` or omitted (default is `false`), the payment is created with a status such as `requires_payment_method` or `requires_confirmation`, and a separate `POST /payments/{payment_id}/confirm` call is necessary to proceed with authorization.",
            "default": false,
            "example": true,
            "nullable": true
          },
          "customer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDetails"
              }
            ],
            "nullable": true
          },
          "customer_id": {
            "type": "string",
            "description": "The identifier for the customer",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 64,
            "minLength": 1
          },
          "off_session": {
            "type": "boolean",
            "description": "Set to true to indicate that the customer is not in your checkout flow during this payment, and therefore is unable to authenticate. This parameter is intended for scenarios where you collect card details and charge them later. When making a recurring payment by passing a mandate_id, this parameter is mandatory",
            "example": true,
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "An arbitrary string attached to the payment. Often useful for displaying to users or for your own internal record-keeping.",
            "example": "It's my first payment request",
            "nullable": true
          },
          "return_url": {
            "type": "string",
            "description": "The URL to redirect the customer to after they complete the payment process or authentication. This is crucial for flows that involve off-site redirection (e.g., 3DS, some bank redirects, wallet payments).",
            "example": "https://tensorrail.com",
            "nullable": true,
            "maxLength": 2048
          },
          "setup_future_usage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FutureUsage"
              }
            ],
            "nullable": true
          },
          "payment_method_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodDataRequest"
              }
            ],
            "nullable": true
          },
          "payment_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethod"
              }
            ],
            "nullable": true
          },
          "payment_token": {
            "type": "string",
            "description": "As TensorRail tokenises the sensitive details about the payments method, it provides the payment_token as a reference to a stored payment method, ensuring that the sensitive details are not exposed in any manner.",
            "example": "187282ab-40ef-47a9-9206-5099ba31e432",
            "nullable": true
          },
          "shipping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "statement_descriptor_name": {
            "type": "string",
            "description": "For non-card charges, you can use this value as the complete description that appears on your customers\u2019 statements. Must contain at least one letter, maximum 22 characters. To be deprecated soon, use billing_descriptor instead.",
            "deprecated": true,
            "example": "TensorRail Router",
            "nullable": true,
            "maxLength": 255
          },
          "statement_descriptor_suffix": {
            "type": "string",
            "description": "Provides information about a card payment that customers see on their statements. Concatenated with the prefix (shortened descriptor) or statement descriptor that\u2019s set on the account to form the complete statement descriptor. Maximum 22 characters for the concatenated descriptor. To be deprecated soon, use billing_descriptor instead.",
            "deprecated": true,
            "example": "Payment for shoes purchase",
            "nullable": true,
            "maxLength": 255
          },
          "order_details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderDetailsWithAmount"
            },
            "description": "Use this object to capture the details about the different products for which the payment is being made. The sum of amount across different products here should be equal to the overall payment amount",
            "example": "[{\n        \"product_name\": \"Apple iPhone 16\",\n        \"quantity\": 1,\n        \"amount\" : 69000\n        \"product_img_link\" : \"https://dummy-img-link.com\"\n    }]",
            "nullable": true
          },
          "client_secret": {
            "type": "string",
            "description": "Client-side confirmation token. **Publishable-key only, and optional.**\nSend `client_secret` only when confirming the payment from the client\nside with a publishable API key. When confirming server-side with a\nsecret API key, DO NOT send `client_secret` \u2014 the request is rejected\nif it is present. (FIX 3: annotation reconciled to runtime reality \u2014\nsecret-key confirm must not carry client_secret.)",
            "example": "pay_EXAMPLE_PAYMENT_ID_secret_EXAMPLE_CLIENT_SECRET",
            "nullable": true
          },
          "mandate_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MandateData"
              }
            ],
            "nullable": true
          },
          "customer_acceptance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerAcceptance"
              }
            ],
            "nullable": true
          },
          "mandate_id": {
            "type": "string",
            "description": "A unique identifier to link the payment to a mandate. To do Recurring payments after a mandate has been created, pass the mandate_id instead of payment_method_data",
            "example": "mandate_iwer89rnjef349dni3",
            "nullable": true,
            "maxLength": 64
          },
          "browser_info": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BrowserInformation"
              }
            ],
            "nullable": true
          },
          "payment_experience": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentExperience"
              }
            ],
            "nullable": true
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "merchant_connector_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MerchantConnectorDetailsWrap"
              }
            ],
            "nullable": true
          },
          "allowed_payment_method_types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentMethodType"
            },
            "description": "Use this parameter to restrict the Payment Method Types to show for a given PaymentIntent",
            "nullable": true
          },
          "retry_action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RetryAction"
              }
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.",
            "nullable": true
          },
          "connector_metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ConnectorMetadata"
              }
            ],
            "nullable": true
          },
          "payment_link": {
            "type": "boolean",
            "description": "Whether to generate the payment link for this payment or not (if applicable)",
            "default": false,
            "example": true,
            "nullable": true
          },
          "payment_link_config": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentCreatePaymentLinkConfig"
              }
            ],
            "nullable": true
          },
          "payment_link_config_id": {
            "type": "string",
            "description": "Custom payment link config id set at business profile, send only if business_specific_configs is configured",
            "nullable": true
          },
          "payment_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentType"
              }
            ],
            "nullable": true
          },
          "request_incremental_authorization": {
            "type": "boolean",
            "description": "Request an incremental authorization, i.e., increase the authorized amount on a confirmed payment before you capture it.",
            "nullable": true
          },
          "session_expiry": {
            "type": "integer",
            "format": "int32",
            "description": "Will be used to expire client secret after certain amount of time to be supplied in seconds\n(900) for 15 mins",
            "example": 900,
            "nullable": true,
            "minimum": 0
          },
          "frm_metadata": {
            "type": "object",
            "description": "Additional data related to some frm(Fraud Risk Management) connectors",
            "nullable": true
          },
          "request_external_three_ds_authentication": {
            "type": "boolean",
            "description": "Whether to perform external authentication (if applicable)",
            "example": true,
            "nullable": true
          },
          "three_ds_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ExternalThreeDsData"
              }
            ],
            "nullable": true
          },
          "recurring_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecurringDetails"
              }
            ],
            "nullable": true
          },
          "request_extended_authorization": {
            "type": "boolean",
            "description": "Optional boolean value to extent authorization period of this payment\n\ncapture method must be manual or manual_multiple",
            "default": false,
            "nullable": true
          },
          "merchant_order_reference_id": {
            "type": "string",
            "description": "Your unique identifier for this payment or order. This ID helps you reconcile payments on your system. If provided, it is passed to the connector if supported.",
            "example": "Custom_Order_id_123",
            "nullable": true,
            "maxLength": 255
          },
          "skip_external_tax_calculation": {
            "type": "boolean",
            "description": "Whether to calculate tax for this payment intent",
            "nullable": true
          },
          "psd2_sca_exemption_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ScaExemptionType"
              }
            ],
            "nullable": true
          },
          "ctp_service_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CtpServiceDetails"
              }
            ],
            "nullable": true
          },
          "force_3ds_challenge": {
            "type": "boolean",
            "description": "Indicates if 3ds challenge is forced",
            "nullable": true
          },
          "threeds_method_comp_ind": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ThreeDsCompletionIndicator"
              }
            ],
            "nullable": true
          },
          "is_iframe_redirection_enabled": {
            "type": "boolean",
            "description": "Indicates if the redirection has to open in the iframe",
            "nullable": true
          },
          "all_keys_required": {
            "type": "boolean",
            "description": "If enabled, provides whole connector response",
            "nullable": true
          },
          "payment_channel": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentChannel"
              }
            ],
            "nullable": true
          },
          "tax_status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TaxStatus"
              }
            ],
            "nullable": true
          },
          "discount_amount": {
            "type": "integer",
            "format": "int64",
            "description": "Total amount of the discount you have applied to the order or transaction.",
            "example": 6540,
            "nullable": true
          },
          "shipping_amount_tax": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MinorUnit"
              }
            ],
            "nullable": true
          },
          "duty_amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MinorUnit"
              }
            ],
            "nullable": true
          },
          "order_date": {
            "type": "string",
            "format": "date-time",
            "description": "Date the payer placed the order.",
            "nullable": true
          },
          "enable_partial_authorization": {
            "type": "boolean",
            "description": "Allow partial authorization for this payment",
            "default": false,
            "nullable": true
          },
          "is_stored_credential": {
            "type": "boolean",
            "description": "Boolean flag indicating whether this payment method is stored and has been previously used for payments",
            "example": true,
            "nullable": true
          },
          "mit_category": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MitCategory"
              }
            ],
            "nullable": true
          },
          "billing_descriptor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingDescriptor"
              }
            ],
            "nullable": true
          },
          "tokenization": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Tokenization"
              }
            ],
            "nullable": true
          },
          "partner_merchant_identifier_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PartnerMerchantIdentifierDetails"
              }
            ],
            "nullable": true
          },
          "installment_options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstallmentOption"
            },
            "description": "Installment payment options grouped by payment method. When provided, the payment is treated as an installment payment.",
            "nullable": true
          },
          "installment_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstallmentRequest"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentsCreateRequest": {
        "type": "object",
        "required": [
          "amount",
          "currency"
        ],
        "properties": {
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "The primary amount for the payment, provided in the lowest denomination of the specified currency (e.g., 6540 for $65.40 USD). This field is mandatory for creating a payment.",
            "minimum": 0
          },
          "order_tax_amount": {
            "type": "integer",
            "format": "int64",
            "description": "Total tax amount applicable to the order, in the lowest denomination of the currency.",
            "example": 6540,
            "nullable": true
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "amount_to_capture": {
            "type": "integer",
            "format": "int64",
            "description": "The amount to be captured from the user's payment method, in the lowest denomination. If not provided, and `capture_method` is `automatic`, the full payment `amount` will be captured. If `capture_method` is `manual`, this can be specified in the `/capture` call. Must be less than or equal to the authorized amount.",
            "example": 6540,
            "nullable": true
          },
          "shipping_cost": {
            "type": "integer",
            "format": "int64",
            "description": "The shipping cost for the payment. This is required for tax calculation in some regions.",
            "example": 6540,
            "nullable": true
          },
          "payment_id": {
            "type": "string",
            "description": "Optional. A merchant-provided unique identifier for the payment, up to 64 characters\n(e.g., \"pay_examplexxxxxxxxxxxxxxxxxxx\"). If provided, it ensures idempotency for the\npayment creation request. If omitted, TensorRail generates a unique ID for the payment\n(a 4-character prefix plus 20 generated characters, so 24 in total).",
            "example": "pay_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 62,
            "minLength": 1
          },
          "routing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StraightThroughAlgorithm"
              }
            ],
            "nullable": true
          },
          "connector": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Connector"
            },
            "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor.",
            "nullable": true
          },
          "capture_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CaptureMethod"
              }
            ],
            "nullable": true
          },
          "authentication_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthenticationType"
              }
            ],
            "default": "three_ds",
            "nullable": true
          },
          "billing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "confirm": {
            "type": "boolean",
            "description": "If set to `true`, TensorRail attempts to confirm and authorize the payment immediately after creation, provided sufficient payment method details are included. If `false` or omitted (default is `false`), the payment is created with a status such as `requires_payment_method` or `requires_confirmation`, and a separate `POST /payments/{payment_id}/confirm` call is necessary to proceed with authorization.",
            "default": false,
            "example": true,
            "nullable": true
          },
          "customer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDetails"
              }
            ],
            "nullable": true
          },
          "customer_id": {
            "type": "string",
            "description": "The identifier for the customer",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 64,
            "minLength": 1
          },
          "off_session": {
            "type": "boolean",
            "description": "Set to true to indicate that the customer is not in your checkout flow during this payment, and therefore is unable to authenticate. This parameter is intended for scenarios where you collect card details and charge them later. When making a recurring payment by passing a mandate_id, this parameter is mandatory",
            "example": true,
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "An arbitrary string attached to the payment. Often useful for displaying to users or for your own internal record-keeping.",
            "example": "It's my first payment request",
            "nullable": true
          },
          "return_url": {
            "type": "string",
            "description": "The URL to redirect the customer to after they complete the payment process or authentication. This is crucial for flows that involve off-site redirection (e.g., 3DS, some bank redirects, wallet payments).",
            "example": "https://tensorrail.com",
            "nullable": true,
            "maxLength": 2048
          },
          "setup_future_usage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FutureUsage"
              }
            ],
            "nullable": true
          },
          "payment_method_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodDataRequest"
              }
            ],
            "nullable": true
          },
          "payment_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethod"
              }
            ],
            "nullable": true
          },
          "payment_token": {
            "type": "string",
            "description": "As TensorRail tokenises the sensitive details about the payments method, it provides the payment_token as a reference to a stored payment method, ensuring that the sensitive details are not exposed in any manner.",
            "example": "187282ab-40ef-47a9-9206-5099ba31e432",
            "nullable": true
          },
          "shipping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "statement_descriptor_name": {
            "type": "string",
            "description": "For non-card charges, you can use this value as the complete description that appears on your customers\u2019 statements. Must contain at least one letter, maximum 22 characters. To be deprecated soon, use billing_descriptor instead.",
            "deprecated": true,
            "example": "TensorRail Router",
            "nullable": true,
            "maxLength": 255
          },
          "statement_descriptor_suffix": {
            "type": "string",
            "description": "Provides information about a card payment that customers see on their statements. Concatenated with the prefix (shortened descriptor) or statement descriptor that\u2019s set on the account to form the complete statement descriptor. Maximum 22 characters for the concatenated descriptor. To be deprecated soon, use billing_descriptor instead.",
            "deprecated": true,
            "example": "Payment for shoes purchase",
            "nullable": true,
            "maxLength": 255
          },
          "order_details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderDetailsWithAmount"
            },
            "description": "Use this object to capture the details about the different products for which the payment is being made. The sum of amount across different products here should be equal to the overall payment amount",
            "example": "[{\n        \"product_name\": \"Apple iPhone 16\",\n        \"quantity\": 1,\n        \"amount\" : 69000\n        \"product_img_link\" : \"https://dummy-img-link.com\"\n    }]",
            "nullable": true
          },
          "mandate_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MandateData"
              }
            ],
            "nullable": true
          },
          "customer_acceptance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerAcceptance"
              }
            ],
            "nullable": true
          },
          "mandate_id": {
            "type": "string",
            "description": "A unique identifier to link the payment to a mandate. To do Recurring payments after a mandate has been created, pass the mandate_id instead of payment_method_data",
            "example": "mandate_iwer89rnjef349dni3",
            "nullable": true,
            "maxLength": 64
          },
          "browser_info": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BrowserInformation"
              }
            ],
            "nullable": true
          },
          "payment_experience": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentExperience"
              }
            ],
            "nullable": true
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "business_country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountryAlpha2"
              }
            ],
            "nullable": true
          },
          "business_label": {
            "type": "string",
            "description": "Business label of the merchant for this payment.\nTo be deprecated soon. Pass the profile_id instead",
            "example": "food",
            "nullable": true
          },
          "merchant_connector_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MerchantConnectorDetailsWrap"
              }
            ],
            "nullable": true
          },
          "allowed_payment_method_types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentMethodType"
            },
            "description": "Use this parameter to restrict the Payment Method Types to show for a given PaymentIntent",
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.",
            "nullable": true
          },
          "connector_metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ConnectorMetadata"
              }
            ],
            "nullable": true
          },
          "payment_link": {
            "type": "boolean",
            "description": "Whether to generate the payment link for this payment or not (if applicable)",
            "default": false,
            "example": true,
            "nullable": true
          },
          "payment_link_config": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentCreatePaymentLinkConfig"
              }
            ],
            "nullable": true
          },
          "payment_link_config_id": {
            "type": "string",
            "description": "Custom payment link config id set at business profile, send only if business_specific_configs is configured",
            "nullable": true
          },
          "profile_id": {
            "type": "string",
            "description": "The business profile to be used for this payment, if not passed the default business profile associated with the merchant account will be used. It is mandatory in case multiple business profiles have been set up.",
            "nullable": true
          },
          "surcharge_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RequestSurchargeDetails"
              }
            ],
            "nullable": true
          },
          "payment_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentType"
              }
            ],
            "nullable": true
          },
          "request_incremental_authorization": {
            "type": "boolean",
            "description": "Request an incremental authorization, i.e., increase the authorized amount on a confirmed payment before you capture it.",
            "nullable": true
          },
          "session_expiry": {
            "type": "integer",
            "format": "int32",
            "description": "Will be used to expire client secret after certain amount of time to be supplied in seconds\n(900) for 15 mins",
            "example": 900,
            "nullable": true,
            "minimum": 0
          },
          "frm_metadata": {
            "type": "object",
            "description": "Additional data related to some frm(Fraud Risk Management) connectors",
            "nullable": true
          },
          "request_external_three_ds_authentication": {
            "type": "boolean",
            "description": "Whether to perform external authentication (if applicable)",
            "example": true,
            "nullable": true
          },
          "three_ds_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ExternalThreeDsData"
              }
            ],
            "nullable": true
          },
          "recurring_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecurringDetails"
              }
            ],
            "nullable": true
          },
          "request_extended_authorization": {
            "type": "boolean",
            "description": "Optional boolean value to extent authorization period of this payment\n\ncapture method must be manual or manual_multiple",
            "default": false,
            "nullable": true
          },
          "merchant_order_reference_id": {
            "type": "string",
            "description": "Your unique identifier for this payment or order. This ID helps you reconcile payments on your system. If provided, it is passed to the connector if supported.",
            "example": "Custom_Order_id_123",
            "nullable": true,
            "maxLength": 255
          },
          "skip_external_tax_calculation": {
            "type": "boolean",
            "description": "Whether to calculate tax for this payment intent",
            "nullable": true
          },
          "psd2_sca_exemption_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ScaExemptionType"
              }
            ],
            "nullable": true
          },
          "ctp_service_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CtpServiceDetails"
              }
            ],
            "nullable": true
          },
          "force_3ds_challenge": {
            "type": "boolean",
            "description": "Indicates if 3ds challenge is forced",
            "nullable": true
          },
          "threeds_method_comp_ind": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ThreeDsCompletionIndicator"
              }
            ],
            "nullable": true
          },
          "is_iframe_redirection_enabled": {
            "type": "boolean",
            "description": "Indicates if the redirection has to open in the iframe",
            "nullable": true
          },
          "all_keys_required": {
            "type": "boolean",
            "description": "If enabled, provides whole connector response",
            "nullable": true
          },
          "payment_channel": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentChannel"
              }
            ],
            "nullable": true
          },
          "tax_status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TaxStatus"
              }
            ],
            "nullable": true
          },
          "discount_amount": {
            "type": "integer",
            "format": "int64",
            "description": "Total amount of the discount you have applied to the order or transaction.",
            "example": 6540,
            "nullable": true
          },
          "shipping_amount_tax": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MinorUnit"
              }
            ],
            "nullable": true
          },
          "duty_amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MinorUnit"
              }
            ],
            "nullable": true
          },
          "order_date": {
            "type": "string",
            "format": "date-time",
            "description": "Date the payer placed the order.",
            "nullable": true
          },
          "enable_partial_authorization": {
            "type": "boolean",
            "description": "Allow partial authorization for this payment",
            "default": false,
            "nullable": true
          },
          "enable_overcapture": {
            "type": "boolean",
            "description": "Boolean indicating whether to enable overcapture for this payment",
            "example": true,
            "nullable": true
          },
          "is_stored_credential": {
            "type": "boolean",
            "description": "Boolean flag indicating whether this payment method is stored and has been previously used for payments",
            "example": true,
            "nullable": true
          },
          "mit_category": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MitCategory"
              }
            ],
            "nullable": true
          },
          "billing_descriptor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingDescriptor"
              }
            ],
            "nullable": true
          },
          "tokenization": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Tokenization"
              }
            ],
            "nullable": true
          },
          "partner_merchant_identifier_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PartnerMerchantIdentifierDetails"
              }
            ],
            "nullable": true
          },
          "installment_options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstallmentOption"
            },
            "description": "Installment payment options grouped by payment method. When provided, the payment is treated as an installment payment.",
            "nullable": true
          },
          "installment_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstallmentRequest"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentsCreateResponseOpenApi": {
        "type": "object",
        "required": [
          "payment_id",
          "status",
          "amount",
          "net_amount",
          "amount_capturable",
          "currency",
          "payment_method"
        ],
        "properties": {
          "payment_id": {
            "type": "string",
            "description": "Unique identifier for the payment. This ensures idempotency for multiple payments\nthat have been done by a single merchant.",
            "example": "pay_examplexxxxxxxxxxxxxxxxxxx",
            "maxLength": 62,
            "minLength": 1
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IntentStatus"
              }
            ],
            "default": "requires_confirmation"
          },
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "The payment amount. Amount for the payment in lowest denomination of the currency. (i.e) in cents for USD denomination, in paisa for INR denomination etc.,",
            "example": 6540
          },
          "net_amount": {
            "type": "integer",
            "format": "int64",
            "description": "The payment net amount. net_amount = amount + surcharge_details.surcharge_amount + surcharge_details.tax_amount + shipping_cost + order_tax_amount,\nIf no surcharge_details, shipping_cost, order_tax_amount, net_amount = amount",
            "example": 6540
          },
          "shipping_cost": {
            "type": "integer",
            "format": "int64",
            "description": "The shipping cost for the payment.",
            "example": 6540,
            "nullable": true
          },
          "amount_capturable": {
            "type": "integer",
            "format": "int64",
            "description": "The amount (in minor units) that can still be captured for this payment. This is relevant when `capture_method` is `manual`. Once fully captured, or if `capture_method` is `automatic` and payment succeeded, this will be 0.",
            "example": 6540,
            "minimum": 100
          },
          "amount_received": {
            "type": "integer",
            "format": "int64",
            "description": "The total amount (in minor units) that has been captured for this payment. On a sandbox rail this may reflect the authorized amount when `status` is `succeeded`, even if `capture_method` was `manual`.",
            "example": 6540,
            "nullable": true
          },
          "client_secret": {
            "type": "string",
            "description": "A secret token unique to this payment intent. It is primarily used by client-side applications (e.g., TensorRail SDKs) to authenticate actions like confirming the payment or handling next actions. This secret should be handled carefully and not exposed publicly beyond its intended client-side use.",
            "example": "pay_EXAMPLE_PAYMENT_ID_secret_EXAMPLE_CLIENT_SECRET",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp indicating when this payment intent was created, in ISO 8601 format.",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          },
          "modified_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp indicating when this payment intent was last modified, in ISO 8601 format.",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "customer_id": {
            "type": "string",
            "description": "The identifier for the customer object. If not provided the customer ID will be autogenerated.\nThis field will be deprecated soon. Please refer to `customer.id`",
            "deprecated": true,
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 64,
            "minLength": 1
          },
          "description": {
            "type": "string",
            "description": "An arbitrary string providing a description for the payment, often useful for display or internal record-keeping.",
            "example": "It's my first payment request",
            "nullable": true
          },
          "mandate_id": {
            "type": "string",
            "description": "A unique identifier to link the payment to a mandate, can be used instead of payment_method_data, in case of setting up recurring payments",
            "example": "mandate_iwer89rnjef349dni3",
            "nullable": true,
            "maxLength": 255
          },
          "setup_future_usage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FutureUsage"
              }
            ],
            "nullable": true
          },
          "capture_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CaptureMethod"
              }
            ],
            "nullable": true
          },
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "return_url": {
            "type": "string",
            "description": "The URL to redirect after the completion of the operation",
            "example": "https://tensorrail.com",
            "nullable": true
          },
          "next_action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextActionData"
              }
            ],
            "nullable": true
          },
          "error_code": {
            "type": "string",
            "description": "The connector-specific error code from the last failed payment attempt associated with this payment intent.",
            "example": "E0001",
            "nullable": true
          },
          "error_message": {
            "type": "string",
            "description": "A human-readable error message from the last failed payment attempt associated with this payment intent.",
            "example": "Failed while verifying the card",
            "nullable": true
          },
          "error_reason": {
            "type": "string",
            "description": "The specific reason the payment route gave, with processor identity removed.\n\n`error_message` is the stable, canonical decline text \u2014 the same string for every decline\nof that class, which is what makes it safe to switch on but useless for working out what\nto change. This carries the route's own words instead: \"param payAmount invalid, more than\n100\" tells an integrator their amount is below the minimum, where \"The payment was\ndeclined.\" tells them nothing.\n\nEvery known processor name is stripped before it leaves the engine (see\n`tensorrail_api::errors::psp_mask`), because this field reaches the hosted payment page as\nwell as the merchant, and that page reads the engine directly.\n\nAbsent when the route gave no reason of its own. Do NOT branch on it \u2014 the text is the\nprocessor's and can change without notice. Branch on `error_code`.",
            "example": "param payAmount invalid, more than 100",
            "nullable": true
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.",
            "nullable": true
          },
          "reference_id": {
            "type": "string",
            "description": "reference(Identifier) to the payment at connector side",
            "example": "993672945374576J",
            "nullable": true
          },
          "payment_link": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentLinkResponse"
              }
            ],
            "nullable": true
          },
          "expires_on": {
            "type": "string",
            "format": "date-time",
            "description": "Date Time for expiry of the payment",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          },
          "payment_method_id": {
            "type": "string",
            "description": "A unique identifier for the payment method used in this payment. If the payment method was saved or tokenized, this ID can be used to reference it for future transactions or recurring payments.\nRefer `payment_method_tokenization_details` for detailed view of payment method tokenization",
            "nullable": true
          },
          "merchant_order_reference_id": {
            "type": "string",
            "description": "Merchant's identifier for the payment/invoice. This will be sent to the connector\nif the connector provides support to accept multiple reference ids.\nIn case the connector supports only one reference id, TensorRail's Payment ID will be sent as reference.",
            "example": "Custom_Order_id_123",
            "nullable": true,
            "maxLength": 255
          },
          "order_tax_amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MinorUnit"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentsEligibilityRequest": {
        "type": "object",
        "required": [
          "client_secret",
          "payment_method_type",
          "payment_method_data"
        ],
        "properties": {
          "client_secret": {
            "type": "string",
            "description": "Token used for client side verification",
            "example": "pay_EXAMPLE_PAYMENT_ID_secret_EXAMPLE_CLIENT_SECRET"
          },
          "payment_method_type": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "payment_method_subtype": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "payment_method_data": {
            "$ref": "#/components/schemas/EligibilityPaymentMethodDataRequest"
          },
          "browser_info": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BrowserInformation"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentsEligibilityResponse": {
        "type": "object",
        "required": [
          "payment_id",
          "sdk_next_action"
        ],
        "properties": {
          "payment_id": {
            "type": "string",
            "description": "The identifier for the payment"
          },
          "sdk_next_action": {
            "$ref": "#/components/schemas/SdkNextAction"
          }
        }
      },
      "PaymentsExternalAuthenticationRequest": {
        "type": "object",
        "required": [
          "device_channel",
          "threeds_method_comp_ind"
        ],
        "properties": {
          "client_secret": {
            "type": "string",
            "description": "Client Secret",
            "nullable": true
          },
          "sdk_information": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SdkInformation"
              }
            ],
            "nullable": true
          },
          "device_channel": {
            "$ref": "#/components/schemas/DeviceChannel"
          },
          "threeds_method_comp_ind": {
            "$ref": "#/components/schemas/ThreeDsCompletionIndicator"
          }
        }
      },
      "PaymentsExternalAuthenticationResponse": {
        "type": "object",
        "required": [
          "trans_status",
          "three_ds_requestor_url"
        ],
        "properties": {
          "trans_status": {
            "$ref": "#/components/schemas/TransactionStatus"
          },
          "acs_url": {
            "type": "string",
            "description": "Access Server URL to be used for challenge submission",
            "nullable": true
          },
          "challenge_request": {
            "type": "string",
            "description": "Challenge request which should be sent to acs_url",
            "nullable": true
          },
          "challenge_request_key": {
            "type": "string",
            "description": "Challenge request key which should be set as form field name for creq",
            "nullable": true
          },
          "acs_reference_number": {
            "type": "string",
            "description": "Unique identifier assigned by the EMVCo(Europay, Mastercard and Visa)",
            "nullable": true
          },
          "acs_trans_id": {
            "type": "string",
            "description": "Unique identifier assigned by the ACS to identify a single transaction",
            "nullable": true
          },
          "three_dsserver_trans_id": {
            "type": "string",
            "description": "Unique identifier assigned by the 3DS Server to identify a single transaction",
            "nullable": true
          },
          "acs_signed_content": {
            "type": "string",
            "description": "Contains the JWS object created by the ACS for the ARes(Authentication Response) message",
            "nullable": true
          },
          "three_ds_requestor_url": {
            "type": "string",
            "description": "Three DS Requestor URL"
          },
          "three_ds_requestor_app_url": {
            "type": "string",
            "description": "Merchant app declaring their URL within the CReq message so that the Authentication app can call the Merchant app after OOB authentication has occurred",
            "nullable": true
          },
          "error_message": {
            "type": "string",
            "description": "Error message if any",
            "nullable": true
          }
        }
      },
      "PaymentsIncrementalAuthorizationRequest": {
        "type": "object",
        "required": [
          "amount"
        ],
        "properties": {
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "The total amount including previously authorized amount and additional amount",
            "example": 6540
          },
          "reason": {
            "type": "string",
            "description": "Reason for incremental authorization",
            "nullable": true
          }
        }
      },
      "PaymentsPostSessionTokensRequest": {
        "type": "object",
        "required": [
          "payment_method_type",
          "payment_method"
        ],
        "properties": {
          "client_secret": {
            "type": "string",
            "description": "It's a token used for client side verification.",
            "nullable": true
          },
          "payment_method_type": {
            "$ref": "#/components/schemas/PaymentMethodType"
          },
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          }
        }
      },
      "PaymentsPostSessionTokensResponse": {
        "type": "object",
        "required": [
          "payment_id",
          "status"
        ],
        "properties": {
          "payment_id": {
            "type": "string",
            "description": "The identifier for the payment"
          },
          "next_action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextActionData"
              }
            ],
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IntentStatus"
              }
            ],
            "default": "requires_confirmation"
          }
        }
      },
      "PaymentsResponse": {
        "type": "object",
        "required": [
          "payment_id",
          "status",
          "amount",
          "net_amount",
          "amount_capturable",
          "currency",
          "payment_method"
        ],
        "properties": {
          "payment_id": {
            "type": "string",
            "description": "Unique identifier for the payment. This ensures idempotency for multiple payments\nthat have been done by a single merchant.",
            "example": "pay_examplexxxxxxxxxxxxxxxxxxx",
            "maxLength": 62,
            "minLength": 1
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IntentStatus"
              }
            ],
            "default": "requires_confirmation"
          },
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "The payment amount. Amount for the payment in lowest denomination of the currency. (i.e) in cents for USD denomination, in paisa for INR denomination etc.,",
            "example": 6540
          },
          "net_amount": {
            "type": "integer",
            "format": "int64",
            "description": "The payment net amount. net_amount = amount + surcharge_details.surcharge_amount + surcharge_details.tax_amount + shipping_cost + order_tax_amount,\nIf no surcharge_details, shipping_cost, order_tax_amount, net_amount = amount",
            "example": 6540
          },
          "shipping_cost": {
            "type": "integer",
            "format": "int64",
            "description": "The shipping cost for the payment.",
            "example": 6540,
            "nullable": true
          },
          "amount_capturable": {
            "type": "integer",
            "format": "int64",
            "description": "The amount (in minor units) that can still be captured for this payment. This is relevant when `capture_method` is `manual`. Once fully captured, or if `capture_method` is `automatic` and payment succeeded, this will be 0.",
            "example": 6540,
            "minimum": 100
          },
          "amount_received": {
            "type": "integer",
            "format": "int64",
            "description": "The total amount (in minor units) that has been captured for this payment. On a sandbox rail this may reflect the authorized amount when `status` is `succeeded`, even if `capture_method` was `manual`.",
            "example": 6540,
            "nullable": true
          },
          "client_secret": {
            "type": "string",
            "description": "A secret token unique to this payment intent. It is primarily used by client-side applications (e.g., TensorRail SDKs) to authenticate actions like confirming the payment or handling next actions. This secret should be handled carefully and not exposed publicly beyond its intended client-side use.",
            "example": "pay_EXAMPLE_PAYMENT_ID_secret_EXAMPLE_CLIENT_SECRET",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp indicating when this payment intent was created, in ISO 8601 format.",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          },
          "modified_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp indicating when this payment intent was last modified, in ISO 8601 format.",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "customer_id": {
            "type": "string",
            "description": "The identifier for the customer object. If not provided the customer ID will be autogenerated.\nThis field will be deprecated soon. Please refer to `customer.id`",
            "deprecated": true,
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 64,
            "minLength": 1
          },
          "customer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDetailsResponse"
              }
            ],
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "An arbitrary string providing a description for the payment, often useful for display or internal record-keeping.",
            "example": "It's my first payment request",
            "nullable": true
          },
          "mandate_id": {
            "type": "string",
            "description": "A unique identifier to link the payment to a mandate, can be used instead of payment_method_data, in case of setting up recurring payments",
            "example": "mandate_iwer89rnjef349dni3",
            "nullable": true,
            "maxLength": 255
          },
          "setup_future_usage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FutureUsage"
              }
            ],
            "nullable": true
          },
          "capture_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CaptureMethod"
              }
            ],
            "nullable": true
          },
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "return_url": {
            "type": "string",
            "description": "The URL to redirect after the completion of the operation",
            "example": "https://tensorrail.com",
            "nullable": true
          },
          "next_action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NextActionData"
              }
            ],
            "nullable": true
          },
          "error_code": {
            "type": "string",
            "description": "The connector-specific error code from the last failed payment attempt associated with this payment intent.",
            "example": "E0001",
            "nullable": true
          },
          "error_message": {
            "type": "string",
            "description": "A human-readable error message from the last failed payment attempt associated with this payment intent.",
            "example": "Failed while verifying the card",
            "nullable": true
          },
          "error_reason": {
            "type": "string",
            "description": "The specific reason the payment route gave, with processor identity removed.\n\n`error_message` is the stable, canonical decline text \u2014 the same string for every decline\nof that class, which is what makes it safe to switch on but useless for working out what\nto change. This carries the route's own words instead: \"param payAmount invalid, more than\n100\" tells an integrator their amount is below the minimum, where \"The payment was\ndeclined.\" tells them nothing.\n\nEvery known processor name is stripped before it leaves the engine (see\n`tensorrail_api::errors::psp_mask`), because this field reaches the hosted payment page as\nwell as the merchant, and that page reads the engine directly.\n\nAbsent when the route gave no reason of its own. Do NOT branch on it \u2014 the text is the\nprocessor's and can change without notice. Branch on `error_code`.",
            "example": "param payAmount invalid, more than 100",
            "nullable": true
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.",
            "nullable": true
          },
          "reference_id": {
            "type": "string",
            "description": "reference(Identifier) to the payment at connector side",
            "example": "993672945374576J",
            "nullable": true
          },
          "payment_link": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentLinkResponse"
              }
            ],
            "nullable": true
          },
          "expires_on": {
            "type": "string",
            "format": "date-time",
            "description": "Date Time for expiry of the payment",
            "example": "2022-09-10T10:11:12Z",
            "nullable": true
          },
          "payment_method_id": {
            "type": "string",
            "description": "A unique identifier for the payment method used in this payment. If the payment method was saved or tokenized, this ID can be used to reference it for future transactions or recurring payments.\nRefer `payment_method_tokenization_details` for detailed view of payment method tokenization",
            "nullable": true
          },
          "merchant_order_reference_id": {
            "type": "string",
            "description": "Merchant's identifier for the payment/invoice. This will be sent to the connector\nif the connector provides support to accept multiple reference ids.\nIn case the connector supports only one reference id, TensorRail's Payment ID will be sent as reference.",
            "example": "Custom_Order_id_123",
            "nullable": true,
            "maxLength": 255
          },
          "order_tax_amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MinorUnit"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentsSessionRequest": {
        "type": "object",
        "required": [
          "payment_id",
          "wallets"
        ],
        "properties": {
          "payment_id": {
            "type": "string",
            "description": "The identifier for the payment"
          },
          "client_secret": {
            "type": "string",
            "description": "This is a token which expires after 15 minutes, used from the client to authenticate and create sessions from the SDK",
            "nullable": true
          },
          "wallets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentMethodType"
            },
            "description": "The list of the supported wallets"
          },
          "merchant_connector_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MerchantConnectorDetailsWrap"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentsSessionResponse": {
        "type": "object",
        "required": [
          "payment_id",
          "client_secret",
          "session_token"
        ],
        "properties": {
          "payment_id": {
            "type": "string",
            "description": "The identifier for the payment"
          },
          "client_secret": {
            "type": "string",
            "description": "This is a token which expires after 15 minutes, used from the client to authenticate and create sessions from the SDK"
          },
          "session_token": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SessionToken"
            },
            "description": "The list of session token object"
          }
        }
      },
      "PaymentsUpdateMetadataRequest": {
        "type": "object",
        "required": [
          "metadata"
        ],
        "properties": {
          "metadata": {
            "type": "object",
            "description": "Metadata is useful for storing additional, unstructured information on an object."
          },
          "feature_metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FeatureMetadata"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PaymentsUpdateMetadataResponse": {
        "type": "object",
        "required": [
          "payment_id",
          "status"
        ],
        "properties": {
          "payment_id": {
            "type": "string",
            "description": "The identifier for the payment"
          },
          "metadata": {
            "type": "object",
            "description": "Metadata is useful for storing additional, unstructured information on an object.",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IntentStatus"
              }
            ],
            "default": "requires_confirmation"
          },
          "feature_metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FeatureMetadata"
              }
            ],
            "nullable": true
          }
        }
      },
      "PaymentsUpdateRequest": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "The primary amount for the payment, provided in the lowest denomination of the specified currency (e.g., 6540 for $65.40 USD). This field is mandatory for creating a payment.",
            "example": 6540,
            "nullable": true,
            "minimum": 0
          },
          "order_tax_amount": {
            "type": "integer",
            "format": "int64",
            "description": "Total tax amount applicable to the order, in the lowest denomination of the currency.",
            "example": 6540,
            "nullable": true
          },
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Currency"
              }
            ],
            "nullable": true
          },
          "amount_to_capture": {
            "type": "integer",
            "format": "int64",
            "description": "The amount to be captured from the user's payment method, in the lowest denomination. If not provided, and `capture_method` is `automatic`, the full payment `amount` will be captured. If `capture_method` is `manual`, this can be specified in the `/capture` call. Must be less than or equal to the authorized amount.",
            "example": 6540,
            "nullable": true
          },
          "shipping_cost": {
            "type": "integer",
            "format": "int64",
            "description": "The shipping cost for the payment. This is required for tax calculation in some regions.",
            "example": 6540,
            "nullable": true
          },
          "payment_id": {
            "type": "string",
            "description": "Optional. A merchant-provided unique identifier for the payment, up to 64 characters\n(e.g., \"pay_examplexxxxxxxxxxxxxxxxxxx\"). If provided, it ensures idempotency for the\npayment creation request. If omitted, TensorRail generates a unique ID for the payment\n(a 4-character prefix plus 20 generated characters, so 24 in total).",
            "example": "pay_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 62,
            "minLength": 1
          },
          "routing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StraightThroughAlgorithm"
              }
            ],
            "nullable": true
          },
          "connector": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Connector"
            },
            "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor.",
            "nullable": true
          },
          "capture_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CaptureMethod"
              }
            ],
            "nullable": true
          },
          "authentication_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AuthenticationType"
              }
            ],
            "default": "three_ds",
            "nullable": true
          },
          "billing": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "confirm": {
            "type": "boolean",
            "description": "If set to `true`, TensorRail attempts to confirm and authorize the payment immediately after creation, provided sufficient payment method details are included. If `false` or omitted (default is `false`), the payment is created with a status such as `requires_payment_method` or `requires_confirmation`, and a separate `POST /payments/{payment_id}/confirm` call is necessary to proceed with authorization.",
            "default": false,
            "example": true,
            "nullable": true
          },
          "customer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDetails"
              }
            ],
            "nullable": true
          },
          "customer_id": {
            "type": "string",
            "description": "The identifier for the customer",
            "example": "cus_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 64,
            "minLength": 1
          },
          "off_session": {
            "type": "boolean",
            "description": "Set to true to indicate that the customer is not in your checkout flow during this payment, and therefore is unable to authenticate. This parameter is intended for scenarios where you collect card details and charge them later. When making a recurring payment by passing a mandate_id, this parameter is mandatory",
            "example": true,
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "An arbitrary string attached to the payment. Often useful for displaying to users or for your own internal record-keeping.",
            "example": "It's my first payment request",
            "nullable": true
          },
          "return_url": {
            "type": "string",
            "description": "The URL to redirect the customer to after they complete the payment process or authentication. This is crucial for flows that involve off-site redirection (e.g., 3DS, some bank redirects, wallet payments).",
            "example": "https://tensorrail.com",
            "nullable": true,
            "maxLength": 2048
          },
          "setup_future_usage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FutureUsage"
              }
            ],
            "nullable": true
          },
          "payment_method_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodDataRequest"
              }
            ],
            "nullable": true
          },
          "payment_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethod"
              }
            ],
            "nullable": true
          },
          "payment_token": {
            "type": "string",
            "description": "As TensorRail tokenises the sensitive details about the payments method, it provides the payment_token as a reference to a stored payment method, ensuring that the sensitive details are not exposed in any manner.",
            "example": "187282ab-40ef-47a9-9206-5099ba31e432",
            "nullable": true
          },
          "shipping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          },
          "statement_descriptor_name": {
            "type": "string",
            "description": "For non-card charges, you can use this value as the complete description that appears on your customers\u2019 statements. Must contain at least one letter, maximum 22 characters. To be deprecated soon, use billing_descriptor instead.",
            "deprecated": true,
            "example": "TensorRail Router",
            "nullable": true,
            "maxLength": 255
          },
          "statement_descriptor_suffix": {
            "type": "string",
            "description": "Provides information about a card payment that customers see on their statements. Concatenated with the prefix (shortened descriptor) or statement descriptor that\u2019s set on the account to form the complete statement descriptor. Maximum 22 characters for the concatenated descriptor. To be deprecated soon, use billing_descriptor instead.",
            "deprecated": true,
            "example": "Payment for shoes purchase",
            "nullable": true,
            "maxLength": 255
          },
          "order_details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderDetailsWithAmount"
            },
            "description": "Use this object to capture the details about the different products for which the payment is being made. The sum of amount across different products here should be equal to the overall payment amount",
            "example": "[{\n        \"product_name\": \"Apple iPhone 16\",\n        \"quantity\": 1,\n        \"amount\" : 69000\n        \"product_img_link\" : \"https://dummy-img-link.com\"\n    }]",
            "nullable": true
          },
          "mandate_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MandateData"
              }
            ],
            "nullable": true
          },
          "customer_acceptance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerAcceptance"
              }
            ],
            "nullable": true
          },
          "browser_info": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BrowserInformation"
              }
            ],
            "nullable": true
          },
          "payment_experience": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentExperience"
              }
            ],
            "nullable": true
          },
          "payment_method_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodType"
              }
            ],
            "nullable": true
          },
          "merchant_connector_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MerchantConnectorDetailsWrap"
              }
            ],
            "nullable": true
          },
          "allowed_payment_method_types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentMethodType"
            },
            "description": "Use this parameter to restrict the Payment Method Types to show for a given PaymentIntent",
            "nullable": true
          },
          "retry_action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RetryAction"
              }
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.",
            "nullable": true
          },
          "connector_metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ConnectorMetadata"
              }
            ],
            "nullable": true
          },
          "payment_link": {
            "type": "boolean",
            "description": "Whether to generate the payment link for this payment or not (if applicable)",
            "default": false,
            "example": true,
            "nullable": true
          },
          "payment_link_config": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentCreatePaymentLinkConfig"
              }
            ],
            "nullable": true
          },
          "payment_link_config_id": {
            "type": "string",
            "description": "Custom payment link config id set at business profile, send only if business_specific_configs is configured",
            "nullable": true
          },
          "surcharge_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RequestSurchargeDetails"
              }
            ],
            "nullable": true
          },
          "payment_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentType"
              }
            ],
            "nullable": true
          },
          "request_incremental_authorization": {
            "type": "boolean",
            "description": "Request an incremental authorization, i.e., increase the authorized amount on a confirmed payment before you capture it.",
            "nullable": true
          },
          "session_expiry": {
            "type": "integer",
            "format": "int32",
            "description": "Will be used to expire client secret after certain amount of time to be supplied in seconds\n(900) for 15 mins",
            "example": 900,
            "nullable": true,
            "minimum": 0
          },
          "frm_metadata": {
            "type": "object",
            "description": "Additional data related to some frm(Fraud Risk Management) connectors",
            "nullable": true
          },
          "request_external_three_ds_authentication": {
            "type": "boolean",
            "description": "Whether to perform external authentication (if applicable)",
            "example": true,
            "nullable": true
          },
          "three_ds_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ExternalThreeDsData"
              }
            ],
            "nullable": true
          },
          "recurring_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecurringDetails"
              }
            ],
            "nullable": true
          },
          "request_extended_authorization": {
            "type": "boolean",
            "description": "Optional boolean value to extent authorization period of this payment\n\ncapture method must be manual or manual_multiple",
            "default": false,
            "nullable": true
          },
          "merchant_order_reference_id": {
            "type": "string",
            "description": "Your unique identifier for this payment or order. This ID helps you reconcile payments on your system. If provided, it is passed to the connector if supported.",
            "example": "Custom_Order_id_123",
            "nullable": true,
            "maxLength": 255
          },
          "skip_external_tax_calculation": {
            "type": "boolean",
            "description": "Whether to calculate tax for this payment intent",
            "nullable": true
          },
          "psd2_sca_exemption_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ScaExemptionType"
              }
            ],
            "nullable": true
          },
          "ctp_service_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CtpServiceDetails"
              }
            ],
            "nullable": true
          },
          "force_3ds_challenge": {
            "type": "boolean",
            "description": "Indicates if 3ds challenge is forced",
            "nullable": true
          },
          "threeds_method_comp_ind": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ThreeDsCompletionIndicator"
              }
            ],
            "nullable": true
          },
          "is_iframe_redirection_enabled": {
            "type": "boolean",
            "description": "Indicates if the redirection has to open in the iframe",
            "nullable": true
          },
          "all_keys_required": {
            "type": "boolean",
            "description": "If enabled, provides whole connector response",
            "nullable": true
          },
          "payment_channel": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentChannel"
              }
            ],
            "nullable": true
          },
          "tax_status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TaxStatus"
              }
            ],
            "nullable": true
          },
          "discount_amount": {
            "type": "integer",
            "format": "int64",
            "description": "Total amount of the discount you have applied to the order or transaction.",
            "example": 6540,
            "nullable": true
          },
          "shipping_amount_tax": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MinorUnit"
              }
            ],
            "nullable": true
          },
          "duty_amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MinorUnit"
              }
            ],
            "nullable": true
          },
          "order_date": {
            "type": "string",
            "format": "date-time",
            "description": "Date the payer placed the order.",
            "nullable": true
          },
          "enable_partial_authorization": {
            "type": "boolean",
            "description": "Allow partial authorization for this payment",
            "default": false,
            "nullable": true
          },
          "enable_overcapture": {
            "type": "boolean",
            "description": "Boolean indicating whether to enable overcapture for this payment",
            "example": true,
            "nullable": true
          },
          "is_stored_credential": {
            "type": "boolean",
            "description": "Boolean flag indicating whether this payment method is stored and has been previously used for payments",
            "example": true,
            "nullable": true
          },
          "mit_category": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MitCategory"
              }
            ],
            "nullable": true
          },
          "billing_descriptor": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BillingDescriptor"
              }
            ],
            "nullable": true
          },
          "tokenization": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Tokenization"
              }
            ],
            "nullable": true
          },
          "partner_merchant_identifier_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PartnerMerchantIdentifierDetails"
              }
            ],
            "nullable": true
          },
          "installment_options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InstallmentOption"
            },
            "description": "Installment payment options grouped by payment method. When provided, the payment is treated as an installment payment.",
            "nullable": true
          },
          "installment_data": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InstallmentRequest"
              }
            ],
            "nullable": true
          }
        }
      },
      "Paypal": {
        "type": "object",
        "required": [
          "email",
          "telephone_number",
          "paypal_id"
        ],
        "properties": {
          "email": {
            "type": "string",
            "description": "Email linked with paypal account",
            "example": "john.doe@example.com"
          },
          "telephone_number": {
            "type": "string",
            "description": "mobile number linked to paypal account",
            "example": "16608213349"
          },
          "paypal_id": {
            "type": "string",
            "description": "id of the paypal account",
            "example": "G83KXTJ5EHCQ2"
          }
        }
      },
      "PaypalFlow": {
        "type": "string",
        "enum": [
          "checkout"
        ]
      },
      "PaypalRedirection": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "paypal's email address",
            "example": "johntest@test.com",
            "nullable": true,
            "maxLength": 255
          }
        }
      },
      "PaypalSessionTokenResponse": {
        "type": "object",
        "required": [
          "connector",
          "session_token",
          "sdk_next_action"
        ],
        "properties": {
          "connector": {
            "type": "string",
            "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor."
          },
          "session_token": {
            "type": "string",
            "description": "The session token for PayPal"
          },
          "sdk_next_action": {
            "$ref": "#/components/schemas/SdkNextAction"
          },
          "client_token": {
            "type": "string",
            "description": "Authorization token used by client to initiate sdk",
            "nullable": true
          },
          "transaction_info": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaypalTransactionInfo"
              }
            ],
            "nullable": true
          },
          "data_user_id_token": {
            "type": "string",
            "description": "User token required for returning customer flow, used by client to initiate sdk",
            "nullable": true
          }
        }
      },
      "PaypalTransactionInfo": {
        "type": "object",
        "required": [
          "flow",
          "currency_code",
          "total_price"
        ],
        "properties": {
          "flow": {
            "$ref": "#/components/schemas/PaypalFlow"
          },
          "currency_code": {
            "$ref": "#/components/schemas/Currency"
          },
          "total_price": {
            "type": "string",
            "description": "Total price",
            "example": "38.02"
          }
        }
      },
      "PayseraData": {
        "type": "object"
      },
      "PazeSessionTokenResponse": {
        "type": "object",
        "required": [
          "client_id",
          "client_name",
          "client_profile_id",
          "transaction_currency_code",
          "transaction_amount"
        ],
        "properties": {
          "client_id": {
            "type": "string",
            "description": "Paze Client ID"
          },
          "client_name": {
            "type": "string",
            "description": "Client Name to be displayed on the Paze screen"
          },
          "client_profile_id": {
            "type": "string",
            "description": "Paze Client Profile ID"
          },
          "transaction_currency_code": {
            "$ref": "#/components/schemas/Currency"
          },
          "transaction_amount": {
            "type": "string",
            "description": "The transaction amount",
            "example": "38.02"
          },
          "email_address": {
            "type": "string",
            "description": "Email Address",
            "example": "johntest@test.com",
            "nullable": true,
            "maxLength": 255
          }
        }
      },
      "PazeWalletData": {
        "type": "object",
        "required": [
          "complete_response"
        ],
        "properties": {
          "complete_response": {
            "type": "string"
          }
        }
      },
      "PeriodUnit": {
        "type": "string",
        "enum": [
          "Day",
          "Week",
          "Month",
          "Year"
        ]
      },
      "PhoneDetails": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string",
            "description": "The contact number",
            "example": "9123456789",
            "nullable": true
          },
          "country_code": {
            "type": "string",
            "description": "The country code attached to the number",
            "example": "+1",
            "nullable": true
          }
        }
      },
      "PixAdditionalDetails": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "immediate"
            ],
            "properties": {
              "immediate": {
                "$ref": "#/components/schemas/ImmediateExpirationTime"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "scheduled"
            ],
            "properties": {
              "scheduled": {
                "$ref": "#/components/schemas/ScheduledExpirationTime"
              }
            }
          }
        ]
      },
      "PixAutomaticoAdditionalDetails": {
        "oneOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/PixAutomaticoPushDetails"
              },
              {
                "type": "object",
                "required": [
                  "type"
                ],
                "properties": {
                  "type": {
                    "type": "string",
                    "enum": [
                      "pix_automatico_push"
                    ]
                  }
                }
              }
            ]
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "PixAutomaticoPushDetails": {
        "type": "object",
        "required": [
          "time"
        ],
        "properties": {
          "time": {
            "type": "integer",
            "format": "int32",
            "description": "Time in seconds until which the push notification is valid",
            "example": 3600,
            "minimum": 0
          }
        }
      },
      "PixBankTransfer": {
        "type": "object",
        "required": [
          "bank_account_number",
          "pix_key"
        ],
        "properties": {
          "bank_name": {
            "type": "string",
            "description": "Bank name",
            "example": "Deutsche Bank",
            "nullable": true
          },
          "bank_branch": {
            "type": "string",
            "description": "Bank branch",
            "example": "3707",
            "nullable": true
          },
          "bank_account_number": {
            "type": "string",
            "description": "Bank account number is an unique identifier assigned by a bank to a customer.",
            "example": "000123456"
          },
          "pix_key": {
            "type": "string",
            "description": "Unique key for pix customer",
            "example": "000123456"
          },
          "tax_id": {
            "type": "string",
            "description": "Individual taxpayer identification number",
            "example": "000123456",
            "nullable": true
          }
        }
      },
      "PixKey": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "type",
              "value"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "cpf"
                ]
              },
              "value": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "value"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "cnpj"
                ]
              },
              "value": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "value"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "email"
                ]
              },
              "value": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "value"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "phone"
                ]
              },
              "value": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "value"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "evp_token"
                ]
              },
              "value": {
                "type": "string"
              }
            }
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "PollConfig": {
        "type": "object",
        "required": [
          "delay_in_secs",
          "frequency"
        ],
        "properties": {
          "delay_in_secs": {
            "type": "integer",
            "format": "int32",
            "description": "Interval of the poll",
            "minimum": 0
          },
          "frequency": {
            "type": "integer",
            "format": "int32",
            "description": "Frequency of the poll",
            "minimum": 0
          }
        }
      },
      "PollResponse": {
        "type": "object",
        "required": [
          "poll_id",
          "status"
        ],
        "properties": {
          "poll_id": {
            "type": "string",
            "description": "The poll id"
          },
          "status": {
            "$ref": "#/components/schemas/PollStatus"
          }
        }
      },
      "PollStatus": {
        "type": "string",
        "enum": [
          "pending",
          "completed",
          "not_found"
        ]
      },
      "ProcessorPaymentToken": {
        "type": "object",
        "description": "Processor payment token for MIT payments where payment_method_data is not available",
        "required": [
          "processor_payment_token"
        ],
        "properties": {
          "processor_payment_token": {
            "type": "string"
          },
          "merchant_connector_id": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ProductType": {
        "type": "string",
        "enum": [
          "physical",
          "digital",
          "travel",
          "ride",
          "event",
          "accommodation"
        ]
      },
      "ProfileId": {
        "type": "string",
        "description": "A type for profile_id that can be used for business profile ids"
      },
      "PspTokenData": {
        "type": "object",
        "description": "An opaque token minted by the card secure-fields widget the merchant's account is assigned\n(typically `pm_*`, `tok_*` or an encrypted-card blob). TensorRail NEVER sees the raw PAN; the\ntoken is meaningful only to the processor that minted it, so it cannot be replayed elsewhere.",
        "required": [
          "token",
          "card_holder_name"
        ],
        "properties": {
          "token": {
            "type": "string",
            "description": "The opaque PSP-minted token from the secure-fields widget.",
            "example": "pm_1NxxxxYYYY"
          },
          "card_holder_name": {
            "type": "string",
            "description": "The card holder's name",
            "example": "John Test"
          }
        }
      },
      "RealTimePaymentData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "fps"
            ],
            "properties": {
              "fps": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "duit_now"
            ],
            "properties": {
              "duit_now": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "prompt_pay"
            ],
            "properties": {
              "prompt_pay": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "viet_qr"
            ],
            "properties": {
              "viet_qr": {
                "type": "object"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "qris"
            ],
            "properties": {
              "qris": {
                "type": "object"
              }
            }
          }
        ]
      },
      "ReceiverDetails": {
        "type": "object",
        "required": [
          "amount_received"
        ],
        "properties": {
          "amount_received": {
            "type": "integer",
            "format": "int64",
            "description": "The amount received by receiver"
          },
          "amount_charged": {
            "type": "integer",
            "format": "int64",
            "description": "The amount charged by ACH",
            "nullable": true
          },
          "amount_remaining": {
            "type": "integer",
            "format": "int64",
            "description": "The amount remaining to be sent via ACH",
            "nullable": true
          }
        }
      },
      "RecurringDetails": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "type",
              "data"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "mandate_id"
                ]
              },
              "data": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "data"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "payment_method_id"
                ]
              },
              "data": {
                "type": "string"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "data"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "processor_payment_token"
                ]
              },
              "data": {
                "$ref": "#/components/schemas/ProcessorPaymentToken"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "data"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "network_transaction_id_and_card_details"
                ]
              },
              "data": {
                "$ref": "#/components/schemas/NetworkTransactionIdAndCardDetails"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "data"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "network_transaction_id_and_network_token_details"
                ]
              },
              "data": {
                "$ref": "#/components/schemas/NetworkTransactionIdAndNetworkTokenDetails"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "data"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "network_transaction_id_and_decrypted_wallet_token_details"
                ]
              },
              "data": {
                "$ref": "#/components/schemas/NetworkTransactionIdAndDecryptedWalletTokenDetails"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "data"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "card_with_limited_data"
                ]
              },
              "data": {
                "$ref": "#/components/schemas/CardWithLimitedData"
              }
            }
          }
        ],
        "description": "Details required for recurring payment",
        "discriminator": {
          "propertyName": "type"
        }
      },
      "RecurringPaymentIntervalUnit": {
        "type": "string",
        "enum": [
          "year",
          "month",
          "day",
          "hour",
          "minute"
        ]
      },
      "RedirectResponse": {
        "type": "object",
        "properties": {
          "param": {
            "type": "string",
            "nullable": true
          },
          "json_payload": {
            "type": "object",
            "nullable": true
          }
        }
      },
      "RefundListRequest": {
        "allOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/TimeRange"
              }
            ],
            "nullable": true
          },
          {
            "type": "object",
            "properties": {
              "payment_id": {
                "type": "string",
                "description": "The identifier for the payment",
                "nullable": true
              },
              "refund_id": {
                "type": "string",
                "description": "The identifier for the refund",
                "nullable": true
              },
              "profile_id": {
                "type": "string",
                "description": "The identifier for business profile",
                "nullable": true
              },
              "limit": {
                "type": "integer",
                "format": "int64",
                "description": "Limit on the number of objects to return",
                "nullable": true
              },
              "offset": {
                "type": "integer",
                "format": "int64",
                "description": "The starting point within a list of objects",
                "nullable": true
              },
              "amount_filter": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AmountFilter"
                  }
                ],
                "nullable": true
              },
              "connector": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor.",
                "nullable": true
              },
              "merchant_connector_id": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "The list of merchant connector ids to filter the refunds list for selected label",
                "nullable": true
              },
              "currency": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Currency"
                },
                "description": "The list of currencies to filter refunds list",
                "nullable": true
              },
              "refund_status": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RefundStatus"
                },
                "description": "The list of refund statuses to filter refunds list",
                "nullable": true
              }
            }
          }
        ]
      },
      "RefundListResponse": {
        "type": "object",
        "required": [
          "count",
          "total_count",
          "data"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "The number of refunds included in the list",
            "minimum": 0
          },
          "total_count": {
            "type": "integer",
            "format": "int64",
            "description": "The total number of refunds in the list"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RefundResponse"
            },
            "description": "The List of refund response object"
          }
        }
      },
      "RefundRequest": {
        "type": "object",
        "required": [
          "payment_id"
        ],
        "properties": {
          "payment_id": {
            "type": "string",
            "description": "The payment id against which refund is to be initiated",
            "example": "pay_examplexxxxxxxxxxxxxxxxxxx",
            "maxLength": 62,
            "minLength": 1
          },
          "refund_id": {
            "type": "string",
            "description": "Unique Identifier for the Refund. This is to ensure idempotency for multiple partial refunds initiated against the same payment. If this is not passed by the merchant, this field shall be auto generated and provided in the API response. It is recommended to generate uuid(v4) as the refund_id.",
            "example": "ref_examplexxxxxxxxxxxxxxxxxxx",
            "nullable": true,
            "maxLength": 64,
            "minLength": 1
          },
          "merchant_id": {
            "type": "string",
            "description": "The identifier for the Merchant Account",
            "example": "y3oqhf46pyzuxjbcn2giaqnb44",
            "nullable": true,
            "maxLength": 255
          },
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "Total amount for which the refund is to be initiated. Amount for the payment in lowest denomination of the currency. (i.e) in cents for USD denomination, in paisa for INR denomination etc., If not provided, this will default to the full payment amount",
            "example": 6540,
            "nullable": true,
            "minimum": 100
          },
          "reason": {
            "type": "string",
            "description": "Reason for the refund. Often useful for displaying to users and your customer support executive. Some rails accept only one of these values: `duplicate`, `fraudulent`, or `requested_by_customer`.",
            "example": "Customer returned the product",
            "nullable": true,
            "maxLength": 255
          },
          "refund_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RefundType"
              }
            ],
            "default": "Instant",
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.",
            "nullable": true
          },
          "merchant_connector_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MerchantConnectorDetailsWrap"
              }
            ],
            "nullable": true
          },
          "all_keys_required": {
            "type": "boolean",
            "description": "If true, returns stringified connector raw response body",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RefundResponse": {
        "type": "object",
        "required": [
          "refund_id",
          "payment_id",
          "amount",
          "currency",
          "status"
        ],
        "properties": {
          "refund_id": {
            "type": "string",
            "description": "Unique Identifier for the refund"
          },
          "payment_id": {
            "type": "string",
            "description": "The payment id against which refund is initiated"
          },
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "The refund amount, which should be less than or equal to the total payment amount. Amount for the payment in lowest denomination of the currency. (i.e) in cents for USD denomination, in paisa for INR denomination etc",
            "example": 6540,
            "minimum": 100
          },
          "currency": {
            "type": "string",
            "description": "The three-letter ISO currency code"
          },
          "status": {
            "$ref": "#/components/schemas/RefundStatus"
          },
          "reason": {
            "type": "string",
            "description": "An arbitrary string attached to the object. Often useful for displaying to users and your customer support executive",
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object",
            "nullable": true
          },
          "error_message": {
            "type": "string",
            "description": "The error message",
            "nullable": true
          },
          "error_code": {
            "type": "string",
            "description": "The code for the error",
            "nullable": true
          },
          "unified_code": {
            "type": "string",
            "description": "Error code unified across the connectors is received here if there was an error while calling connector",
            "nullable": true
          },
          "unified_message": {
            "type": "string",
            "description": "Error message unified across the connectors is received here if there was an error while calling connector",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp at which refund is created",
            "nullable": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp at which refund is updated",
            "nullable": true
          }
        }
      },
      "RefundStatus": {
        "type": "string",
        "description": "The status for refunds",
        "enum": [
          "succeeded",
          "failed",
          "pending",
          "review"
        ]
      },
      "RefundType": {
        "type": "string",
        "description": "To indicate whether to refund needs to be instant or scheduled",
        "enum": [
          "scheduled",
          "instant"
        ]
      },
      "RefundUpdateRequest": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "description": "An arbitrary string attached to the object. Often useful for displaying to users and your customer support executive",
            "example": "Customer returned the product",
            "nullable": true,
            "maxLength": 255
          },
          "metadata": {
            "type": "object",
            "description": "You can specify up to 50 keys, with key names up to 40 characters long and values up to 500 characters long. Metadata is useful for storing additional, structured information on an object.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RefundableCreditsHandling": {
        "type": "string",
        "enum": [
          "no_action",
          "schedule_refund"
        ]
      },
      "RequestSurchargeDetails": {
        "type": "object",
        "description": "Details of surcharge applied on this payment, if applicable",
        "required": [
          "surcharge_amount"
        ],
        "properties": {
          "surcharge_amount": {
            "type": "integer",
            "format": "int64",
            "example": 6540
          },
          "tax_amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MinorUnit"
              }
            ],
            "nullable": true
          }
        }
      },
      "RequiredFieldInfo": {
        "type": "object",
        "description": "Required fields info used while listing the payment_method_data",
        "required": [
          "required_field",
          "display_name",
          "field_type"
        ],
        "properties": {
          "required_field": {
            "type": "string",
            "description": "Required field for a payment_method through a payment_method_type"
          },
          "display_name": {
            "type": "string",
            "description": "Display name of the required field in the front-end"
          },
          "field_type": {
            "$ref": "#/components/schemas/FieldType"
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "ResponsePaymentMethodTypes": {
        "type": "object",
        "required": [
          "payment_method_type"
        ],
        "properties": {
          "payment_method_type": {
            "$ref": "#/components/schemas/PaymentMethodType"
          },
          "payment_experience": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentExperienceTypes"
            },
            "description": "The list of payment experiences enabled, if applicable for a payment method type",
            "nullable": true
          },
          "card_networks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CardNetworkTypes"
            },
            "description": "The list of card networks enabled, if applicable for a payment method type",
            "nullable": true
          },
          "bank_names": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BankCodeResponse"
            },
            "description": "The list of banks enabled, if applicable for a payment method type . To be deprecated soon.",
            "deprecated": true,
            "nullable": true
          },
          "bank_debits": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BankDebitTypes"
              }
            ],
            "nullable": true
          },
          "bank_transfers": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BankTransferTypes"
              }
            ],
            "nullable": true
          },
          "required_fields": {
            "type": "object",
            "description": "Required fields for the payment_method_type.",
            "additionalProperties": {
              "$ref": "#/components/schemas/RequiredFieldInfo"
            },
            "nullable": true
          },
          "surcharge_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SurchargeDetailsResponse"
              }
            ],
            "nullable": true
          },
          "pm_auth_connector": {
            "type": "string",
            "description": "auth service connector label for this payment method type, if exists",
            "nullable": true
          }
        }
      },
      "ResponsePaymentMethodsEnabled": {
        "type": "object",
        "required": [
          "payment_method",
          "payment_method_types"
        ],
        "properties": {
          "payment_method": {
            "$ref": "#/components/schemas/PaymentMethod"
          },
          "payment_method_types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResponsePaymentMethodTypes"
            },
            "description": "The list of payment method types enabled for a connector account"
          }
        }
      },
      "ResumeOption": {
        "type": "string",
        "enum": [
          "immediately",
          "specific_date"
        ]
      },
      "ResumeSubscriptionRequest": {
        "type": "object",
        "description": "Request payload for resuming a subscription.",
        "properties": {
          "resume_option": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResumeOption"
              }
            ],
            "nullable": true
          },
          "resume_date": {
            "type": "string",
            "description": "Optional date when the subscription should be resumed (if not provided, resumes immediately)",
            "nullable": true
          },
          "charges_handling": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ChargesHandling"
              }
            ],
            "nullable": true
          },
          "unpaid_invoices_handling": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UnpaidInvoicesHandling"
              }
            ],
            "nullable": true
          }
        }
      },
      "ResumeSubscriptionResponse": {
        "type": "object",
        "description": "Response payload returned after successfully resuming a subscription.",
        "required": [
          "id",
          "status",
          "profile_id",
          "merchant_id",
          "customer_id"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/SubscriptionId"
          },
          "status": {
            "$ref": "#/components/schemas/SubscriptionStatus"
          },
          "merchant_reference_id": {
            "type": "string",
            "description": "Merchant specific Unique identifier.",
            "nullable": true
          },
          "profile_id": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "merchant_id": {
            "$ref": "#/components/schemas/MerchantId"
          },
          "customer_id": {
            "$ref": "#/components/schemas/CustomerId"
          },
          "next_billing_at": {
            "type": "string",
            "description": "Date when the subscription was resumed",
            "nullable": true
          }
        }
      },
      "RetrievePaymentLinkResponse": {
        "type": "object",
        "required": [
          "payment_link_id",
          "merchant_id",
          "link_to_pay",
          "amount",
          "created_at",
          "status"
        ],
        "properties": {
          "payment_link_id": {
            "type": "string",
            "description": "Identifier for Payment Link"
          },
          "merchant_id": {
            "type": "string",
            "description": "Identifier for Merchant"
          },
          "link_to_pay": {
            "type": "string",
            "description": "Open payment link (without any security checks and listing SPMs)"
          },
          "amount": {
            "type": "integer",
            "format": "int64",
            "description": "The payment amount. Amount for the payment in the lowest denomination of the currency",
            "example": 6540
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of Payment Link creation"
          },
          "expiry": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time of Expiration for Payment Link",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Description for Payment Link",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/PaymentLinkStatus"
          },
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Currency"
              }
            ],
            "nullable": true
          },
          "secure_link": {
            "type": "string",
            "description": "Secure payment link (with security checks and listing saved payment methods)",
            "nullable": true
          }
        }
      },
      "RetryAction": {
        "type": "string",
        "description": "Denotes the retry action",
        "enum": [
          "manual_retry",
          "requeue"
        ]
      },
      "RevolutPayData": {
        "type": "object"
      },
      "RoutableConnectorChoice": {
        "type": "object",
        "description": "Routable Connector chosen for a payment",
        "required": [
          "connector"
        ],
        "properties": {
          "connector": {
            "$ref": "#/components/schemas/RoutableConnectors",
            "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor."
          },
          "merchant_connector_id": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "RoutableConnectors": {
        "type": "string",
        "description": "Processor identifier assigned by TensorRail. Routing is managed for your account; you do not select a processor."
      },
      "SamsungPayAmountDetails": {
        "type": "object",
        "required": [
          "option",
          "currency_code",
          "total"
        ],
        "properties": {
          "option": {
            "$ref": "#/components/schemas/SamsungPayAmountFormat"
          },
          "currency_code": {
            "$ref": "#/components/schemas/Currency"
          },
          "total": {
            "type": "string",
            "description": "The total amount of the transaction",
            "example": "38.02"
          }
        }
      },
      "SamsungPayAmountFormat": {
        "type": "string",
        "enum": [
          "FORMAT_TOTAL_PRICE_ONLY",
          "FORMAT_TOTAL_ESTIMATED_AMOUNT"
        ]
      },
      "SamsungPayAppWalletData": {
        "type": "object",
        "required": [
          "3_d_s",
          "payment_card_brand",
          "payment_currency_type",
          "payment_last4_fpan"
        ],
        "properties": {
          "3_d_s": {
            "$ref": "#/components/schemas/SamsungPayTokenData"
          },
          "payment_card_brand": {
            "$ref": "#/components/schemas/SamsungPayCardBrand"
          },
          "payment_currency_type": {
            "type": "string",
            "description": "Currency type of the payment"
          },
          "payment_last4_dpan": {
            "type": "string",
            "description": "Last 4 digits of the device specific card number",
            "nullable": true
          },
          "payment_last4_fpan": {
            "type": "string",
            "description": "Last 4 digits of the card number"
          },
          "merchant_ref": {
            "type": "string",
            "description": "Merchant reference id that was passed in the session call request",
            "nullable": true
          },
          "method": {
            "type": "string",
            "description": "Specifies authentication method used",
            "nullable": true
          },
          "recurring_payment": {
            "type": "boolean",
            "description": "Value if credential is enabled for recurring payment",
            "nullable": true
          }
        }
      },
      "SamsungPayCardBrand": {
        "type": "string",
        "enum": [
          "visa",
          "mastercard",
          "amex",
          "discover",
          "unknown"
        ]
      },
      "SamsungPayMerchantPaymentInformation": {
        "type": "object",
        "required": [
          "name",
          "country_code"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Merchant name, this will be displayed on the Samsung Pay screen"
          },
          "url": {
            "type": "string",
            "description": "Merchant domain that process payments, required for web payments",
            "nullable": true
          },
          "country_code": {
            "$ref": "#/components/schemas/CountryAlpha2"
          }
        }
      },
      "SamsungPayProtocolType": {
        "type": "string",
        "enum": [
          "PROTOCOL3DS"
        ]
      },
      "SamsungPaySessionTokenResponse": {
        "type": "object",
        "required": [
          "version",
          "service_id",
          "order_number",
          "merchant",
          "amount",
          "protocol",
          "allowed_brands",
          "billing_address_required",
          "shipping_address_required"
        ],
        "properties": {
          "version": {
            "type": "string",
            "description": "Samsung Pay API version"
          },
          "service_id": {
            "type": "string",
            "description": "Samsung Pay service ID to which session call needs to be made"
          },
          "order_number": {
            "type": "string",
            "description": "Order number of the transaction"
          },
          "merchant": {
            "$ref": "#/components/schemas/SamsungPayMerchantPaymentInformation"
          },
          "amount": {
            "$ref": "#/components/schemas/SamsungPayAmountDetails"
          },
          "protocol": {
            "$ref": "#/components/schemas/SamsungPayProtocolType"
          },
          "allowed_brands": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of supported card brands"
          },
          "billing_address_required": {
            "type": "boolean",
            "description": "Is billing address required to be collected from wallet"
          },
          "shipping_address_required": {
            "type": "boolean",
            "description": "Is shipping address required to be collected from wallet"
          }
        }
      },
      "SamsungPayTokenData": {
        "type": "object",
        "required": [
          "version",
          "data"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "3DS type used by Samsung Pay",
            "nullable": true
          },
          "version": {
            "type": "string",
            "description": "3DS version used by Samsung Pay"
          },
          "data": {
            "type": "string",
            "description": "Samsung Pay encrypted payment credential data"
          }
        }
      },
      "SamsungPayWalletCredentials": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/SamsungPayWebWalletData"
          },
          {
            "$ref": "#/components/schemas/SamsungPayAppWalletData"
          }
        ]
      },
      "SamsungPayWalletData": {
        "type": "object",
        "required": [
          "payment_credential"
        ],
        "properties": {
          "payment_credential": {
            "$ref": "#/components/schemas/SamsungPayWalletCredentials"
          }
        }
      },
      "SamsungPayWebWalletData": {
        "type": "object",
        "required": [
          "card_brand",
          "card_last4digits",
          "3_d_s"
        ],
        "properties": {
          "method": {
            "type": "string",
            "description": "Specifies authentication method used",
            "nullable": true
          },
          "recurring_payment": {
            "type": "boolean",
            "description": "Value if credential is enabled for recurring payment",
            "nullable": true
          },
          "card_brand": {
            "$ref": "#/components/schemas/SamsungPayCardBrand"
          },
          "card_last4digits": {
            "type": "string",
            "description": "Last 4 digits of the card number"
          },
          "3_d_s": {
            "$ref": "#/components/schemas/SamsungPayTokenData"
          }
        }
      },
      "ScaExemptionType": {
        "type": "string",
        "description": "SCA Exemptions types available for authentication",
        "enum": [
          "low_value",
          "transaction_risk_analysis"
        ]
      },
      "ScheduledExpirationTime": {
        "type": "object",
        "required": [
          "date"
        ],
        "properties": {
          "date": {
            "type": "string",
            "description": "Expiration time in terms of date, format: YYYY-MM-DD",
            "example": "2026-07-08"
          },
          "validity_after_expiration": {
            "type": "integer",
            "format": "int32",
            "description": "Days after expiration date for which the QR code remains valid",
            "example": 10,
            "nullable": true,
            "minimum": 0
          },
          "pix_key": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PixKey"
              }
            ],
            "nullable": true
          }
        }
      },
      "SdkDisplayMode": {
        "type": "string",
        "description": "Display mode options for controlling how messages are shown.",
        "enum": [
          "default_sdk_message",
          "custom_message",
          "hidden"
        ]
      },
      "SdkInformation": {
        "type": "object",
        "description": "SDK Information if request is from SDK",
        "required": [
          "sdk_app_id",
          "sdk_enc_data",
          "sdk_ephem_pub_key",
          "sdk_trans_id",
          "sdk_reference_number",
          "sdk_max_timeout"
        ],
        "properties": {
          "sdk_app_id": {
            "type": "string",
            "description": "Unique ID created on installations of the 3DS Requestor App on a Consumer Device"
          },
          "sdk_enc_data": {
            "type": "string",
            "description": "JWE Object containing data encrypted by the SDK for the DS to decrypt"
          },
          "sdk_ephem_pub_key": {
            "type": "object",
            "description": "Public key component of the ephemeral key pair generated by the 3DS SDK",
            "additionalProperties": {
              "type": "string"
            }
          },
          "sdk_trans_id": {
            "type": "string",
            "description": "Unique transaction identifier assigned by the 3DS SDK"
          },
          "sdk_reference_number": {
            "type": "string",
            "description": "Identifies the vendor and version for the 3DS SDK that is integrated in a 3DS Requestor App"
          },
          "sdk_max_timeout": {
            "type": "integer",
            "format": "int32",
            "description": "Indicates maximum amount of time in minutes",
            "minimum": 0
          },
          "sdk_type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SdkType"
              }
            ],
            "nullable": true
          },
          "device_details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DeviceDetails"
              }
            ],
            "nullable": true
          }
        }
      },
      "SdkNextAction": {
        "type": "object",
        "required": [
          "next_action"
        ],
        "properties": {
          "next_action": {
            "$ref": "#/components/schemas/NextActionCall"
          }
        }
      },
      "SdkNextActionData": {
        "type": "object",
        "required": [
          "next_action"
        ],
        "properties": {
          "next_action": {
            "$ref": "#/components/schemas/NextActionCall"
          },
          "order_id": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SdkType": {
        "type": "string",
        "description": "Enum representing the type of 3DS SDK.",
        "enum": [
          "01",
          "02",
          "03",
          "04",
          "05"
        ]
      },
      "SecretInfoToInitiateSdk": {
        "type": "object",
        "required": [
          "display",
          "payment"
        ],
        "properties": {
          "display": {
            "type": "string"
          },
          "payment": {
            "type": "string"
          }
        }
      },
      "SepaAndBacsBillingDetails": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The Email ID for SEPA and BACS billing",
            "example": "example@me.com",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The billing name for SEPA and BACS billing",
            "example": "Jane Doe",
            "nullable": true
          }
        }
      },
      "SepaBankTransfer": {
        "type": "object",
        "required": [
          "iban",
          "bic"
        ],
        "properties": {
          "bank_name": {
            "type": "string",
            "description": "Bank name",
            "example": "Deutsche Bank",
            "nullable": true
          },
          "bank_country_code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CountryAlpha2"
              }
            ],
            "nullable": true
          },
          "bank_city": {
            "type": "string",
            "description": "Bank city",
            "example": "California",
            "nullable": true
          },
          "iban": {
            "type": "string",
            "description": "International Bank Account Number (iban) - used in many countries for identifying a bank along with it's customer.",
            "example": "DE89370400440532013000"
          },
          "bic": {
            "type": "string",
            "description": "[8 / 11 digits] Bank Identifier Code (bic) / Swift Code - used in many countries for identifying a bank and it's branches",
            "example": "HSBCGB2LXXX"
          }
        }
      },
      "SepaBankTransferInstructions": {
        "type": "object",
        "required": [
          "account_holder_name",
          "bic",
          "country",
          "iban",
          "reference"
        ],
        "properties": {
          "account_holder_name": {
            "type": "string",
            "example": "Jane Doe"
          },
          "bic": {
            "type": "string",
            "example": "9123456789"
          },
          "country": {
            "type": "string"
          },
          "iban": {
            "type": "string",
            "example": "123456789"
          },
          "reference": {
            "type": "string",
            "example": "U2PVVSEV4V9Y"
          }
        }
      },
      "SessionToken": {
        "oneOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/GpaySessionTokenResponse"
              },
              {
                "type": "object",
                "required": [
                  "wallet_name"
                ],
                "properties": {
                  "wallet_name": {
                    "type": "string",
                    "enum": [
                      "google_pay"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/SamsungPaySessionTokenResponse"
              },
              {
                "type": "object",
                "required": [
                  "wallet_name"
                ],
                "properties": {
                  "wallet_name": {
                    "type": "string",
                    "enum": [
                      "samsung_pay"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/KlarnaSessionTokenResponse"
              },
              {
                "type": "object",
                "required": [
                  "wallet_name"
                ],
                "properties": {
                  "wallet_name": {
                    "type": "string",
                    "enum": [
                      "klarna"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaypalSessionTokenResponse"
              },
              {
                "type": "object",
                "required": [
                  "wallet_name"
                ],
                "properties": {
                  "wallet_name": {
                    "type": "string",
                    "enum": [
                      "paypal"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApplepaySessionTokenResponse"
              },
              {
                "type": "object",
                "required": [
                  "wallet_name"
                ],
                "properties": {
                  "wallet_name": {
                    "type": "string",
                    "enum": [
                      "apple_pay"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpenBankingSessionToken"
              },
              {
                "type": "object",
                "required": [
                  "wallet_name"
                ],
                "properties": {
                  "wallet_name": {
                    "type": "string",
                    "enum": [
                      "open_banking"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/PazeSessionTokenResponse"
              },
              {
                "type": "object",
                "required": [
                  "wallet_name"
                ],
                "properties": {
                  "wallet_name": {
                    "type": "string",
                    "enum": [
                      "paze"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClickToPaySessionResponse"
              },
              {
                "type": "object",
                "required": [
                  "wallet_name"
                ],
                "properties": {
                  "wallet_name": {
                    "type": "string",
                    "enum": [
                      "click_to_pay"
                    ]
                  }
                }
              }
            ]
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/AmazonPaySessionTokenResponse"
              },
              {
                "type": "object",
                "required": [
                  "wallet_name"
                ],
                "properties": {
                  "wallet_name": {
                    "type": "string",
                    "enum": [
                      "amazon_pay"
                    ]
                  }
                }
              }
            ]
          },
          {
            "type": "object",
            "required": [
              "wallet_name"
            ],
            "properties": {
              "wallet_name": {
                "type": "string",
                "enum": [
                  "no_session_token_received"
                ]
              }
            }
          }
        ],
        "discriminator": {
          "propertyName": "wallet_name"
        }
      },
      "SessionTokenInfo": {
        "allOf": [
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentProcessingDetailsAt"
              }
            ],
            "nullable": true
          },
          {
            "type": "object",
            "required": [
              "certificate",
              "certificate_keys",
              "merchant_identifier",
              "display_name",
              "initiative"
            ],
            "properties": {
              "certificate": {
                "type": "string"
              },
              "certificate_keys": {
                "type": "string"
              },
              "merchant_identifier": {
                "type": "string"
              },
              "display_name": {
                "type": "string"
              },
              "initiative": {
                "$ref": "#/components/schemas/ApplepayInitiative"
              },
              "initiative_context": {
                "type": "string",
                "nullable": true
              },
              "merchant_business_country": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CountryAlpha2"
                  }
                ],
                "nullable": true
              }
            }
          }
        ]
      },
      "SizeVariants": {
        "type": "string",
        "enum": [
          "cover",
          "contain"
        ]
      },
      "SkrillData": {
        "type": "object"
      },
      "StraightThroughAlgorithm": {
        "oneOf": [
          {
            "type": "object",
            "title": "Single",
            "required": [
              "type",
              "data"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "single"
                ]
              },
              "data": {
                "$ref": "#/components/schemas/RoutableConnectorChoice"
              }
            }
          },
          {
            "type": "object",
            "title": "Priority",
            "required": [
              "type",
              "data"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "priority"
                ]
              },
              "data": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RoutableConnectorChoice"
                }
              }
            }
          },
          {
            "type": "object",
            "title": "VolumeSplit",
            "required": [
              "type",
              "data"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "volume_split"
                ]
              },
              "data": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ConnectorVolumeSplit"
                }
              }
            }
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "StringMinorUnit": {
        "type": "string",
        "description": "Connector specific types to send"
      },
      "SubmitEvidenceRequest": {
        "type": "object",
        "required": [
          "dispute_id"
        ],
        "properties": {
          "dispute_id": {
            "type": "string",
            "description": "Dispute Id"
          },
          "access_activity_log": {
            "type": "string",
            "description": "Logs showing the usage of service by customer",
            "nullable": true
          },
          "billing_address": {
            "type": "string",
            "description": "Billing address of the customer",
            "nullable": true
          },
          "cancellation_policy": {
            "type": "string",
            "description": "File Id of cancellation policy",
            "nullable": true
          },
          "cancellation_policy_disclosure": {
            "type": "string",
            "description": "Details of showing cancellation policy to customer before purchase",
            "nullable": true
          },
          "cancellation_rebuttal": {
            "type": "string",
            "description": "Details telling why customer's subscription was not cancelled",
            "nullable": true
          },
          "customer_communication": {
            "type": "string",
            "description": "File Id of customer communication",
            "nullable": true
          },
          "customer_email_address": {
            "type": "string",
            "description": "Customer email address",
            "nullable": true
          },
          "customer_name": {
            "type": "string",
            "description": "Customer name",
            "nullable": true
          },
          "customer_purchase_ip": {
            "type": "string",
            "description": "IP address of the customer",
            "nullable": true
          },
          "customer_signature": {
            "type": "string",
            "description": "Fild Id of customer signature",
            "nullable": true
          },
          "product_description": {
            "type": "string",
            "description": "Product Description",
            "nullable": true
          },
          "receipt": {
            "type": "string",
            "description": "File Id of receipt",
            "nullable": true
          },
          "refund_policy": {
            "type": "string",
            "description": "File Id of refund policy",
            "nullable": true
          },
          "refund_policy_disclosure": {
            "type": "string",
            "description": "Details of showing refund policy to customer before purchase",
            "nullable": true
          },
          "refund_refusal_explanation": {
            "type": "string",
            "description": "Details why customer is not entitled to refund",
            "nullable": true
          },
          "service_date": {
            "type": "string",
            "description": "Customer service date",
            "nullable": true
          },
          "service_documentation": {
            "type": "string",
            "description": "File Id service documentation",
            "nullable": true
          },
          "shipping_address": {
            "type": "string",
            "description": "Shipping address of the customer",
            "nullable": true
          },
          "shipping_carrier": {
            "type": "string",
            "description": "Delivery service that shipped the product",
            "nullable": true
          },
          "shipping_date": {
            "type": "string",
            "description": "Shipping date",
            "nullable": true
          },
          "shipping_documentation": {
            "type": "string",
            "description": "File Id shipping documentation",
            "nullable": true
          },
          "shipping_tracking_number": {
            "type": "string",
            "description": "Tracking number of shipped product",
            "nullable": true
          },
          "invoice_showing_distinct_transactions": {
            "type": "string",
            "description": "File Id showing two distinct transactions when customer claims a payment was charged twice",
            "nullable": true
          },
          "recurring_transaction_agreement": {
            "type": "string",
            "description": "File Id of recurring transaction agreement",
            "nullable": true
          },
          "uncategorized_file": {
            "type": "string",
            "description": "Any additional supporting file",
            "nullable": true
          },
          "uncategorized_text": {
            "type": "string",
            "description": "Any additional evidence statements",
            "nullable": true
          }
        }
      },
      "SubscriptionId": {
        "type": "string",
        "description": "A type for subscription_id that can be used for subscription ids"
      },
      "SubscriptionItemPrices": {
        "type": "object",
        "required": [
          "price_id",
          "amount",
          "currency",
          "interval",
          "interval_count"
        ],
        "properties": {
          "price_id": {
            "type": "string"
          },
          "item_id": {
            "type": "string",
            "nullable": true
          },
          "amount": {
            "$ref": "#/components/schemas/MinorUnit"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "interval": {
            "$ref": "#/components/schemas/PeriodUnit"
          },
          "interval_count": {
            "type": "integer",
            "format": "int64"
          },
          "trial_period": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "trial_period_unit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PeriodUnit"
              }
            ],
            "nullable": true
          }
        }
      },
      "SubscriptionItemType": {
        "type": "string",
        "enum": [
          "plan",
          "addon"
        ]
      },
      "SubscriptionLineItem": {
        "type": "object",
        "required": [
          "item_id",
          "item_type",
          "description",
          "amount",
          "currency",
          "quantity"
        ],
        "properties": {
          "item_id": {
            "type": "string",
            "description": "Unique identifier for the line item."
          },
          "item_type": {
            "type": "string",
            "description": "Type of the line item."
          },
          "description": {
            "type": "string",
            "description": "Description of the line item."
          },
          "amount": {
            "$ref": "#/components/schemas/MinorUnit"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "quantity": {
            "type": "integer",
            "format": "int64",
            "description": "Quantity of the line item."
          }
        }
      },
      "SubscriptionResponse": {
        "type": "object",
        "description": "Response payload returned after successfully creating a subscription.\n\nIncludes details such as subscription ID, status, plan, merchant, and customer info.",
        "required": [
          "id",
          "status",
          "profile_id",
          "merchant_id",
          "customer_id"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/SubscriptionId"
          },
          "merchant_reference_id": {
            "type": "string",
            "description": "Merchant specific Unique identifier.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/SubscriptionStatus"
          },
          "plan_id": {
            "type": "string",
            "description": "Identifier for the associated subscription plan.",
            "nullable": true
          },
          "item_price_id": {
            "type": "string",
            "description": "Identifier for the associated item_price_id for the subscription.",
            "nullable": true
          },
          "profile_id": {
            "$ref": "#/components/schemas/ProfileId"
          },
          "client_secret": {
            "type": "string",
            "description": "This is a token which expires after 15 minutes, used from the client to authenticate and create sessions from the SDK",
            "nullable": true
          },
          "merchant_id": {
            "$ref": "#/components/schemas/MerchantId"
          },
          "coupon_code": {
            "type": "string",
            "description": "Optional coupon code applied to this subscription.",
            "nullable": true
          },
          "customer_id": {
            "$ref": "#/components/schemas/CustomerId"
          },
          "payment": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentResponseData"
              }
            ],
            "nullable": true
          },
          "amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/MinorUnit"
              }
            ],
            "nullable": true
          },
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Currency"
              }
            ],
            "nullable": true
          },
          "invoice": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Invoice"
              }
            ],
            "nullable": true
          }
        }
      },
      "SubscriptionStatus": {
        "type": "string",
        "description": "Possible states of a subscription lifecycle.\n\n- `Created`: Subscription was created but not yet activated.\n- `Active`: Subscription is currently active.\n- `InActive`: Subscription is inactive.\n- `Pending`: Subscription is pending activation.\n- `Trial`: Subscription is in a trial period.\n- `Paused`: Subscription is paused.\n- `Unpaid`: Subscription is unpaid.\n- `Onetime`: Subscription is a one-time payment.\n- `Cancelled`: Subscription has been cancelled.\n- `Failed`: Subscription has failed.",
        "enum": [
          "active",
          "created",
          "in_active",
          "pending",
          "trial",
          "paused",
          "unpaid",
          "onetime",
          "cancelled",
          "failed"
        ]
      },
      "SurchargeDetailsResponse": {
        "type": "object",
        "required": [
          "surcharge",
          "display_surcharge_amount",
          "display_tax_on_surcharge_amount",
          "display_total_surcharge_amount"
        ],
        "properties": {
          "surcharge": {
            "$ref": "#/components/schemas/SurchargeResponse"
          },
          "tax_on_surcharge": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SurchargePercentage"
              }
            ],
            "nullable": true
          },
          "display_surcharge_amount": {
            "type": "number",
            "format": "double",
            "description": "surcharge amount for this payment"
          },
          "display_tax_on_surcharge_amount": {
            "type": "number",
            "format": "double",
            "description": "tax on surcharge amount for this payment"
          },
          "display_total_surcharge_amount": {
            "type": "number",
            "format": "double",
            "description": "sum of display_surcharge_amount and display_tax_on_surcharge_amount"
          }
        }
      },
      "SurchargePercentage": {
        "type": "object",
        "required": [
          "percentage"
        ],
        "properties": {
          "percentage": {
            "type": "number",
            "format": "float"
          }
        }
      },
      "SurchargeResponse": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "type",
              "value"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "fixed"
                ]
              },
              "value": {
                "$ref": "#/components/schemas/MinorUnit"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "type",
              "value"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "rate"
                ]
              },
              "value": {
                "$ref": "#/components/schemas/SurchargePercentage"
              }
            }
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "SwishQrData": {
        "type": "object"
      },
      "TaxStatus": {
        "type": "string",
        "enum": [
          "taxable",
          "exempt"
        ]
      },
      "ThirdPartySdkSessionResponse": {
        "type": "object",
        "required": [
          "secrets"
        ],
        "properties": {
          "secrets": {
            "$ref": "#/components/schemas/SecretInfoToInitiateSdk"
          }
        }
      },
      "ThreeDSDecision": {
        "type": "string",
        "description": "Enum representing the possible outcomes of the 3DS Decision Rule Engine.",
        "enum": [
          "no_three_ds",
          "challenge_requested",
          "challenge_preferred",
          "three_ds_exemption_requested_tra",
          "three_ds_exemption_requested_low_value",
          "issuer_three_ds_exemption_requested"
        ]
      },
      "ThreeDsCompletionIndicator": {
        "type": "string",
        "description": "Indicates if 3DS method data was successfully completed or not",
        "enum": [
          "Y",
          "N",
          "U"
        ]
      },
      "ThreeDsData": {
        "type": "object",
        "required": [
          "three_ds_server_transaction_id",
          "maximum_supported_3ds_version",
          "connector_authentication_id",
          "three_ds_method_data",
          "three_ds_method_url",
          "message_version",
          "directory_server_id"
        ],
        "properties": {
          "three_ds_server_transaction_id": {
            "type": "string",
            "description": "The unique identifier for this authentication from the 3DS server."
          },
          "maximum_supported_3ds_version": {
            "type": "string",
            "description": "The maximum supported 3DS version."
          },
          "connector_authentication_id": {
            "type": "string",
            "description": "The unique identifier for this authentication from the connector."
          },
          "three_ds_method_data": {
            "type": "string",
            "description": "The data required to perform the 3DS method."
          },
          "three_ds_method_url": {
            "type": "string",
            "description": "The URL to which the user should be redirected after authentication.",
            "example": "https://example.com/redirect"
          },
          "message_version": {
            "type": "string",
            "description": "The version of the message."
          },
          "directory_server_id": {
            "type": "string",
            "description": "The unique identifier for this authentication."
          }
        }
      },
      "ThreeDsDecisionRuleExecuteRequest": {
        "type": "object",
        "description": "Represents the request to execute a 3DS decision rule.",
        "required": [
          "routing_id",
          "payment"
        ],
        "properties": {
          "routing_id": {
            "type": "string",
            "description": "The ID of the routing algorithm to be executed."
          },
          "payment": {
            "$ref": "#/components/schemas/PaymentData"
          },
          "payment_method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PaymentMethodMetaData"
              }
            ],
            "nullable": true
          },
          "customer_device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDeviceData"
              }
            ],
            "nullable": true
          },
          "issuer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/IssuerData"
              }
            ],
            "nullable": true
          },
          "acquirer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AcquirerData"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ThreeDsDecisionRuleExecuteResponse": {
        "type": "object",
        "description": "Represents the response from executing a 3DS decision rule.",
        "required": [
          "decision"
        ],
        "properties": {
          "decision": {
            "$ref": "#/components/schemas/ThreeDSDecision"
          }
        }
      },
      "TimeRange": {
        "type": "object",
        "description": "A type representing a range of time for filtering, including a mandatory start time and an optional end time.",
        "required": [
          "start_time"
        ],
        "properties": {
          "start_time": {
            "type": "string",
            "format": "date-time",
            "description": "The start time to filter payments list or to get list of filters. To get list of filters start time is needed to be passed"
          },
          "end_time": {
            "type": "string",
            "format": "date-time",
            "description": "The end time to filter payments list or to get list of filters. If not passed the default time is now",
            "nullable": true
          }
        }
      },
      "TokenSource": {
        "type": "string",
        "description": "Source of the token",
        "enum": [
          "google_pay",
          "apple_pay"
        ],
        "example": "google_pay, apple_pay"
      },
      "Tokenization": {
        "type": "string",
        "description": "The type of tokenization to use for the payment method",
        "enum": [
          "skip_psp",
          "tokenize_at_psp"
        ]
      },
      "TouchNGoRedirection": {
        "type": "object"
      },
      "TransactionDetailsUiConfiguration": {
        "type": "object",
        "properties": {
          "position": {
            "type": "integer",
            "format": "int32",
            "description": "Position of the key-value pair in the UI",
            "example": 5,
            "nullable": true
          },
          "is_key_bold": {
            "type": "boolean",
            "description": "Whether the key should be bold",
            "default": false,
            "example": true,
            "nullable": true
          },
          "is_value_bold": {
            "type": "boolean",
            "description": "Whether the value should be bold",
            "default": false,
            "example": true,
            "nullable": true
          }
        }
      },
      "TransactionStatus": {
        "type": "string",
        "description": "Indicates the transaction status",
        "enum": [
          "Y",
          "N",
          "U",
          "A",
          "R",
          "C",
          "D",
          "I"
        ]
      },
      "TrustlyBankTransfer": {
        "type": "object",
        "required": [
          "iban",
          "country_code",
          "account_number",
          "bank_number"
        ],
        "properties": {
          "iban": {
            "type": "string",
            "description": "International Bank Account Number (iban) - used in many countries for identifying a bank along with it's customer.",
            "example": "token_12345"
          },
          "country_code": {
            "$ref": "#/components/schemas/CountryAlpha2"
          },
          "account_number": {
            "type": "string",
            "description": "The account number, identifying the end-user's account in the bank.",
            "example": "69706212"
          },
          "bank_number": {
            "type": "string",
            "description": "The bank number identifying the end-user's bank in the given clearing house.",
            "example": "6112"
          }
        }
      },
      "TrustlyBankTransferData": {
        "type": "object",
        "required": [
          "iban",
          "bank_country_code",
          "bank_account_number",
          "bank_number"
        ],
        "properties": {
          "iban": {
            "type": "string",
            "description": "International Bank Account Number (iban) - used in many countries for identifying a bank along with it's customer.",
            "example": "token_12345"
          },
          "bank_country_code": {
            "$ref": "#/components/schemas/CountryAlpha2"
          },
          "bank_account_number": {
            "type": "string",
            "description": "The account number, identifying the end-user's account in the bank.",
            "example": "69706212"
          },
          "bank_number": {
            "type": "string",
            "description": "The bank number identifying the end-user's bank in the given clearing house.",
            "example": "6112"
          }
        }
      },
      "UnbilledChargesOption": {
        "type": "string",
        "enum": [
          "invoice",
          "delete"
        ]
      },
      "UnpaidInvoicesHandling": {
        "type": "string",
        "enum": [
          "no_action",
          "schedule_payment_collection"
        ]
      },
      "UpdateSubscriptionRequest": {
        "type": "object",
        "required": [
          "plan_id",
          "item_price_id"
        ],
        "properties": {
          "plan_id": {
            "type": "string",
            "description": "Identifier for the associated plan_id."
          },
          "item_price_id": {
            "type": "string",
            "description": "Identifier for the associated item_price_id for the subscription."
          }
        }
      },
      "UpiCollectData": {
        "type": "object",
        "properties": {
          "vpa_id": {
            "type": "string",
            "description": "The Virtual Payment Address (VPA) for UPI collect payment",
            "example": "successtest@iata",
            "nullable": true
          },
          "upi_source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UpiSource"
              }
            ],
            "nullable": true
          }
        }
      },
      "UpiData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "upi_collect"
            ],
            "properties": {
              "upi_collect": {
                "$ref": "#/components/schemas/UpiCollectData"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "upi_intent"
            ],
            "properties": {
              "upi_intent": {
                "$ref": "#/components/schemas/UpiIntentData"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "upi_qr"
            ],
            "properties": {
              "upi_qr": {
                "$ref": "#/components/schemas/UpiQrData"
              }
            }
          }
        ]
      },
      "UpiIntentData": {
        "type": "object",
        "properties": {
          "upi_source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UpiSource"
              }
            ],
            "nullable": true
          },
          "app_name": {
            "type": "string",
            "description": "App name for UPI intent payment",
            "nullable": true
          }
        }
      },
      "UpiQrData": {
        "type": "object",
        "properties": {
          "upi_source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/UpiSource"
              }
            ],
            "nullable": true
          }
        }
      },
      "UpiSource": {
        "type": "string",
        "description": "The source type for UPI payments. This indicates what payment source is being used for the UPI transaction.",
        "enum": [
          "UPI_CC",
          "UPI_CL",
          "UPI_ACCOUNT",
          "UPI_CC_CL",
          "UPI_PPI",
          "UPI_VOUCHER"
        ]
      },
      "Venmo": {
        "type": "object",
        "required": [
          "telephone_number"
        ],
        "properties": {
          "telephone_number": {
            "type": "string",
            "description": "mobile number linked to venmo account",
            "example": "16608213349"
          }
        }
      },
      "VoucherData": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "boleto"
            ],
            "properties": {
              "boleto": {
                "$ref": "#/components/schemas/BoletoVoucherData"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "efecty"
            ]
          },
          {
            "type": "string",
            "enum": [
              "pago_efectivo"
            ]
          },
          {
            "type": "string",
            "enum": [
              "red_compra"
            ]
          },
          {
            "type": "string",
            "enum": [
              "red_pagos"
            ]
          },
          {
            "type": "object",
            "required": [
              "alfamart"
            ],
            "properties": {
              "alfamart": {
                "$ref": "#/components/schemas/AlfamartVoucherData"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "indomaret"
            ],
            "properties": {
              "indomaret": {
                "$ref": "#/components/schemas/IndomaretVoucherData"
              }
            }
          },
          {
            "type": "string",
            "enum": [
              "oxxo"
            ]
          },
          {
            "type": "object",
            "required": [
              "seven_eleven"
            ],
            "properties": {
              "seven_eleven": {
                "$ref": "#/components/schemas/JCSVoucherData"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "lawson"
            ],
            "properties": {
              "lawson": {
                "$ref": "#/components/schemas/JCSVoucherData"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "mini_stop"
            ],
            "properties": {
              "mini_stop": {
                "$ref": "#/components/schemas/JCSVoucherData"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "family_mart"
            ],
            "properties": {
              "family_mart": {
                "$ref": "#/components/schemas/JCSVoucherData"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "seicomart"
            ],
            "properties": {
              "seicomart": {
                "$ref": "#/components/schemas/JCSVoucherData"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "pay_easy"
            ],
            "properties": {
              "pay_easy": {
                "$ref": "#/components/schemas/JCSVoucherData"
              }
            }
          }
        ]
      },
      "Wallet": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "apple_pay_decrypt"
            ],
            "properties": {
              "apple_pay_decrypt": {
                "$ref": "#/components/schemas/ApplePayDecrypt"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "paypal"
            ],
            "properties": {
              "paypal": {
                "$ref": "#/components/schemas/Paypal"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "venmo"
            ],
            "properties": {
              "venmo": {
                "$ref": "#/components/schemas/Venmo"
              }
            }
          }
        ]
      },
      "WalletData": {
        "oneOf": [
          {
            "type": "object",
            "title": "AliPayHkRedirect",
            "required": [
              "ali_pay_hk_redirect"
            ],
            "properties": {
              "ali_pay_hk_redirect": {
                "$ref": "#/components/schemas/AliPayHkRedirection"
              }
            }
          },
          {
            "type": "object",
            "title": "AliPayQr",
            "required": [
              "ali_pay_qr"
            ],
            "properties": {
              "ali_pay_qr": {
                "$ref": "#/components/schemas/AliPayQr"
              }
            }
          },
          {
            "type": "object",
            "title": "AliPayRedirect",
            "required": [
              "ali_pay_redirect"
            ],
            "properties": {
              "ali_pay_redirect": {
                "$ref": "#/components/schemas/AliPayRedirection"
              }
            }
          },
          {
            "type": "object",
            "title": "AmazonPay",
            "required": [
              "amazon_pay"
            ],
            "properties": {
              "amazon_pay": {
                "$ref": "#/components/schemas/AmazonPayWalletData"
              }
            }
          },
          {
            "type": "object",
            "title": "AmazonPayRedirect",
            "required": [
              "amazon_pay_redirect"
            ],
            "properties": {
              "amazon_pay_redirect": {
                "$ref": "#/components/schemas/AmazonPayRedirectData"
              }
            }
          },
          {
            "type": "object",
            "title": "ApplePay",
            "required": [
              "apple_pay"
            ],
            "properties": {
              "apple_pay": {
                "$ref": "#/components/schemas/ApplePayWalletData"
              }
            }
          },
          {
            "type": "object",
            "title": "ApplePayRedirect",
            "required": [
              "apple_pay_redirect"
            ],
            "properties": {
              "apple_pay_redirect": {
                "$ref": "#/components/schemas/ApplePayRedirectData"
              }
            }
          },
          {
            "type": "object",
            "title": "ApplePayThirdPartySdk",
            "required": [
              "apple_pay_third_party_sdk"
            ],
            "properties": {
              "apple_pay_third_party_sdk": {
                "$ref": "#/components/schemas/ApplePayThirdPartySdkData"
              }
            }
          },
          {
            "type": "object",
            "title": "BluecodeRedirect",
            "required": [
              "bluecode_redirect"
            ],
            "properties": {
              "bluecode_redirect": {
                "type": "object",
                "description": "The wallet data for Bluecode QR Code Redirect"
              }
            }
          },
          {
            "type": "object",
            "title": "CashappQr",
            "required": [
              "cashapp_qr"
            ],
            "properties": {
              "cashapp_qr": {
                "$ref": "#/components/schemas/CashappQr"
              }
            }
          },
          {
            "type": "object",
            "title": "DanaRedirect",
            "required": [
              "dana_redirect"
            ],
            "properties": {
              "dana_redirect": {
                "type": "object",
                "description": "Wallet data for DANA redirect flow"
              }
            }
          },
          {
            "type": "object",
            "title": "GcashRedirect",
            "required": [
              "gcash_redirect"
            ],
            "properties": {
              "gcash_redirect": {
                "$ref": "#/components/schemas/GcashRedirection"
              }
            }
          },
          {
            "type": "object",
            "title": "GoPayRedirect",
            "required": [
              "go_pay_redirect"
            ],
            "properties": {
              "go_pay_redirect": {
                "$ref": "#/components/schemas/GoPayRedirection"
              }
            }
          },
          {
            "type": "object",
            "title": "GooglePay",
            "required": [
              "google_pay"
            ],
            "properties": {
              "google_pay": {
                "$ref": "#/components/schemas/GooglePayWalletData"
              }
            }
          },
          {
            "type": "object",
            "title": "GooglePayRedirect",
            "required": [
              "google_pay_redirect"
            ],
            "properties": {
              "google_pay_redirect": {
                "$ref": "#/components/schemas/GooglePayRedirectData"
              }
            }
          },
          {
            "type": "object",
            "title": "GooglePayThirdPartySdk",
            "required": [
              "google_pay_third_party_sdk"
            ],
            "properties": {
              "google_pay_third_party_sdk": {
                "$ref": "#/components/schemas/GooglePayThirdPartySdkData"
              }
            }
          },
          {
            "type": "object",
            "title": "KakaoPayRedirect",
            "required": [
              "kakao_pay_redirect"
            ],
            "properties": {
              "kakao_pay_redirect": {
                "$ref": "#/components/schemas/KakaoPayRedirection"
              }
            }
          },
          {
            "type": "object",
            "title": "MbWayRedirect",
            "required": [
              "mb_way_redirect"
            ],
            "properties": {
              "mb_way_redirect": {
                "$ref": "#/components/schemas/MbWayRedirection"
              }
            }
          },
          {
            "type": "object",
            "title": "Mifinity",
            "required": [
              "mifinity"
            ],
            "properties": {
              "mifinity": {
                "$ref": "#/components/schemas/MifinityData"
              }
            }
          },
          {
            "type": "object",
            "title": "MobilePayRedirect",
            "required": [
              "mobile_pay_redirect"
            ],
            "properties": {
              "mobile_pay_redirect": {
                "$ref": "#/components/schemas/MobilePayRedirection"
              }
            }
          },
          {
            "type": "object",
            "title": "MomoRedirect",
            "required": [
              "momo_redirect"
            ],
            "properties": {
              "momo_redirect": {
                "$ref": "#/components/schemas/MomoRedirection"
              }
            }
          },
          {
            "type": "object",
            "title": "PaypalRedirect",
            "required": [
              "paypal_redirect"
            ],
            "properties": {
              "paypal_redirect": {
                "$ref": "#/components/schemas/PaypalRedirection"
              }
            }
          },
          {
            "type": "object",
            "title": "PaypalSdk",
            "required": [
              "paypal_sdk"
            ],
            "properties": {
              "paypal_sdk": {
                "$ref": "#/components/schemas/PayPalWalletData"
              }
            }
          },
          {
            "type": "object",
            "title": "Paysera",
            "required": [
              "paysera"
            ],
            "properties": {
              "paysera": {
                "$ref": "#/components/schemas/PayseraData"
              }
            }
          },
          {
            "type": "object",
            "title": "Paze",
            "required": [
              "paze"
            ],
            "properties": {
              "paze": {
                "$ref": "#/components/schemas/PazeWalletData"
              }
            }
          },
          {
            "type": "object",
            "title": "RevolutPay",
            "required": [
              "revolut_pay"
            ],
            "properties": {
              "revolut_pay": {
                "$ref": "#/components/schemas/RevolutPayData"
              }
            }
          },
          {
            "type": "object",
            "title": "SamsungPay",
            "required": [
              "samsung_pay"
            ],
            "properties": {
              "samsung_pay": {
                "$ref": "#/components/schemas/SamsungPayWalletData"
              }
            }
          },
          {
            "type": "object",
            "title": "Skrill",
            "required": [
              "skrill"
            ],
            "properties": {
              "skrill": {
                "$ref": "#/components/schemas/SkrillData"
              }
            }
          },
          {
            "type": "object",
            "title": "SwishQr",
            "required": [
              "swish_qr"
            ],
            "properties": {
              "swish_qr": {
                "$ref": "#/components/schemas/SwishQrData"
              }
            }
          },
          {
            "type": "object",
            "title": "TouchNGoRedirect",
            "required": [
              "touch_n_go_redirect"
            ],
            "properties": {
              "touch_n_go_redirect": {
                "$ref": "#/components/schemas/TouchNGoRedirection"
              }
            }
          },
          {
            "type": "object",
            "title": "TwintRedirect",
            "required": [
              "twint_redirect"
            ],
            "properties": {
              "twint_redirect": {
                "type": "object",
                "description": "Wallet data for Twint Redirection"
              }
            }
          },
          {
            "type": "object",
            "title": "VippsRedirect",
            "required": [
              "vipps_redirect"
            ],
            "properties": {
              "vipps_redirect": {
                "type": "object",
                "description": "Wallet data for Vipps Redirection"
              }
            }
          },
          {
            "type": "object",
            "title": "WeChatPayQr",
            "required": [
              "we_chat_pay_qr"
            ],
            "properties": {
              "we_chat_pay_qr": {
                "$ref": "#/components/schemas/WeChatPayQr"
              }
            }
          },
          {
            "type": "object",
            "title": "WeChatPayRedirect",
            "required": [
              "we_chat_pay_redirect"
            ],
            "properties": {
              "we_chat_pay_redirect": {
                "$ref": "#/components/schemas/WeChatPayRedirection"
              }
            }
          }
        ]
      },
      "WeChatPayQr": {
        "type": "object"
      },
      "WeChatPayRedirection": {
        "type": "object"
      }
    },
    "securitySchemes": {
      "api_key": {
        "type": "apiKey",
        "in": "header",
        "name": "api-key",
        "description": "Use the API key created under your merchant account from the TensorRail dashboard. API key is used to authenticate API requests from your merchant server only. Don't expose this key on a website or embed it in a mobile application."
      },
      "ephemeral_key": {
        "type": "apiKey",
        "in": "header",
        "name": "api-key",
        "description": "Ephemeral keys provide temporary access to singular data, such as access to a single customer object for a short period of time."
      },
      "jwt_key": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "publishable_key": {
        "type": "apiKey",
        "in": "header",
        "name": "api-key",
        "description": "Publishable keys are a type of keys that can be public and have limited scope of usage."
      }
    }
  },
  "tags": [
    {
      "name": "Payments",
      "description": "Create, confirm, read and cancel a payment. These work on every rail enabled on your account."
    },
    {
      "name": "Customers",
      "description": "Create and manage the customers you attach payments to."
    },
    {
      "name": "Account",
      "description": "What your own account can present at checkout."
    },
    {
      "name": "Payment links",
      "description": "A hosted page that takes a payment without an integration."
    },
    {
      "name": "Refunds",
      "description": "Return a captured payment in whole or in part."
    },
    {
      "name": "Metadata updates",
      "description": "Change a payment's metadata after it has been sent to the rail."
    },
    {
      "name": "Payment methods",
      "description": "Instruments stored against a customer and charged again later."
    },
    {
      "name": "Mandates",
      "description": "The customer's standing authorization behind a stored instrument."
    },
    {
      "name": "Subscriptions",
      "description": "Recurring billing schedules, run by a billing processor."
    },
    {
      "name": "Manual capture",
      "description": "Authorize now and capture, extend or reverse later."
    },
    {
      "name": "Disputes",
      "description": "Chargebacks raised against a payment, and the evidence you file against them."
    },
    {
      "name": "Card payments",
      "description": "The card-specific half of the payment flow: session tokens, 3-D Secure, authorization top-ups and completion."
    }
  ]
}
