{
  "openapi": "3.0.3",
  "x-mcp": {
    "enabled": true
  },
  "info": {
    "title": "TensorRail API",
    "version": "v1",
    "description": "The TensorRail API for accepting and managing payments.\n\n**Base URL.** `https://api.tensorrail.com`, one base URL for test and live.\n\n**Before you start.** You need a test key from your [dashboard](https://dashboard.tensorrail.com). Every account has test keys, so you can build and test your integration before you go live. Test or live is chosen by the key, not the URL: a test key never moves money and a live key does, and endpoints, requests and responses are the same in both.\n\n**Authentication.** Send your secret key in the `api-key` header on every request from your server. The `/v1` resources take the same key as `Authorization: Bearer <key>`. Never put a secret key in a browser or a mobile app.\n\n```bash\ncurl https://api.tensorrail.com/payments/list \\\n  -H \"api-key: YOUR_TEST_KEY\"\n```\n\n**Errors.** Every error has the same shape: one `error` object with a `type`, a 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**Idempotency.** Send an `Idempotency-Key` header on `POST /payments` and `POST /refunds`, and retry with the same key. A repeated key returns the original resource, even when the body differs, so use one key per operation.\n\n**Payment methods.** One API covers every payment method category: UPI, bank transfer, mobile money, crypto, cards, wallets and pay later. Methods are enabled per account: `GET /account/payment_methods` returns the ones enabled on yours, and your dashboard shows the same. [`GET /v1/capabilities`](https://api.tensorrail.com/v1/capabilities) lists what the platform supports, the same answer for every caller. To add a method or a market, ask us. An endpoint that depends on a feature of the payment method, such as refunds or cards, opens its description with that condition.\n\n**Guides.** [Quickstart](https://docs.tensorrail.com/docs/quickstart/), [Authentication](https://docs.tensorrail.com/docs/authentication/), [Errors and retries](https://docs.tensorrail.com/docs/error-intelligence/), [Error catalog](https://docs.tensorrail.com/docs/error-catalog/), [Testing and sandbox](https://docs.tensorrail.com/docs/testing-and-sandbox/) and [Handle webhooks](https://docs.tensorrail.com/docs/handle-webhooks/).\n"
  },
  "servers": [
    {
      "url": "https://api.tensorrail.com"
    }
  ],
  "paths": {
    "/payments": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Create a payment",
        "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 token from card fields hosted by the card processor": {
                  "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_CARD_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: 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: 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 token from card fields hosted by the card processor": {
                    "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": "List payments",
        "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": "Update a payment",
        "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": "Retrieve a payment",
        "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 in the browser to act on this one payment",
            "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": "Cancel a payment",
        "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": "Confirm a payment",
        "description": "Confirms a payment intent that was previously created with `confirm: false`. This authorizes the payment.\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": {
                      "psp_token": {
                        "card_holder_name": "joseph Doe",
                        "token": "tok_EXAMPLE_FROM_CARD_FIELDS"
                      }
                    },
                    "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": []
          }
        ]
      }
    },
    "/poll/status/{poll_id}": {
      "get": {
        "tags": [
          "Payments"
        ],
        "summary": "Retrieve a 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": "Create a customer",
        "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": "List customers",
        "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": "Retrieve a customer",
        "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": "Update a customer",
        "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": "Delete a customer",
        "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 your account's payment methods",
        "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 in the browser to act on this one payment",
            "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": "List payment links",
        "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": "Retrieve a payment link",
        "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 in the browser to act on this one payment",
            "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/list": {
      "post": {
        "tags": [
          "Refunds"
        ],
        "summary": "List refunds",
        "description": "> **Available on rails that support refunds.** A live refund needs a payment method that supports refunds. Your dashboard shows what is enabled for your account; ask us to enable more.\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": "Retrieve a refund",
        "description": "> **Available on rails that support refunds.** A live refund needs a payment method that supports refunds. Your dashboard shows what is enabled for your account; ask us to enable more.\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": "Update a refund",
        "description": "> **Available on rails that support refunds.** A live refund needs a payment method that supports refunds. Your dashboard shows what is enabled for your account; ask us to enable more.\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": "Update a payment's metadata",
        "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.** That is a rail that can carry a metadata change to a payment after it has been sent. Where the rail does not, 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 can still be modified, is stored and returned with the payment on every rail.\n\n"
      }
    },
    "/customers/payment_methods": {
      "get": {
        "tags": [
          "Payment methods"
        ],
        "summary": "List saved payment methods for a payment",
        "description": "> **Available on rails that support recurring.** That is a rail that can store an instrument and charge it again. On a rail without mandate support 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 a later off-session charge is refused with `ERR_4088`. Treat a `mandate_id` on the first payment as the signal that the instrument can be charged again, not the status of that payment. Ask us to enable recurring for your account.\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 in the browser to act on this one payment",
            "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 a customer's payment methods",
        "description": "> **Available on rails that support recurring.** That is a rail that can store an instrument and charge it again. On a rail without mandate support 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 a later off-session charge is refused with `ERR_4088`. Treat a `mandate_id` on the first payment as the signal that the instrument can be charged again, not the status of that payment. Ask us to enable recurring for your account.\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 in the browser to act on this one payment",
            "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": "Set a customer's default payment method",
        "description": "> **Available on rails that support recurring.** That is a rail that can store an instrument and charge it again. On a rail without mandate support 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 a later off-session charge is refused with `ERR_4088`. Treat a `mandate_id` on the first payment as the signal that the instrument can be charged again, not the status of that payment. Ask us to enable recurring for your account.\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/{method_id}": {
      "get": {
        "tags": [
          "Payment methods"
        ],
        "summary": "Retrieve a payment method",
        "description": "> **Available on rails that support recurring.** That is a rail that can store an instrument and charge it again. On a rail without mandate support 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 a later off-session charge is refused with `ERR_4088`. Treat a `mandate_id` on the first payment as the signal that the instrument can be charged again, not the status of that payment. Ask us to enable recurring for your account.\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": "Delete a payment method",
        "description": "> **Available on rails that support recurring.** That is a rail that can store an instrument and charge it again. On a rail without mandate support 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 a later off-session charge is refused with `ERR_4088`. Treat a `mandate_id` on the first payment as the signal that the instrument can be charged again, not the status of that payment. Ask us to enable recurring for your account.\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": []
          }
        ]
      }
    },
    "/customers/{customer_id}/mandates": {
      "get": {
        "tags": [
          "Mandates"
        ],
        "summary": "List a customer's mandates",
        "description": "> **Available on rails that support recurring.** That is a rail that can store an instrument and charge it again. On a rail without mandate support 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 a later off-session charge is refused with `ERR_4088`. Treat a `mandate_id` on the first payment as the signal that the instrument can be charged again, not the status of that payment. Ask us to enable recurring for your account.\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": "List mandates",
        "description": "> **Available on rails that support recurring.** That is a rail that can store an instrument and charge it again. On a rail without mandate support 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 a later off-session charge is refused with `ERR_4088`. Treat a `mandate_id` on the first payment as the signal that the instrument can be charged again, not the status of that payment. Ask us to enable recurring for your account.\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": "Revoke a mandate",
        "description": "> **Available on rails that support recurring.** That is a rail that can store an instrument and charge it again. On a rail without mandate support 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 a later off-session charge is refused with `ERR_4088`. Treat a `mandate_id` on the first payment as the signal that the instrument can be charged again, not the status of that payment. Ask us to enable recurring for your account.\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": "Retrieve a mandate",
        "description": "> **Available on rails that support recurring.** That is a rail that can store an instrument and charge it again. On a rail without mandate support 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 a later off-session charge is refused with `ERR_4088`. Treat a `mandate_id` on the first payment as the signal that the instrument can be charged again, not the status of that payment. Ask us to enable recurring for your account.\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": []
          }
        ]
      }
    },
    "/payments/{payment_id}/cancel_post_capture": {
      "post": {
        "tags": [
          "Manual capture"
        ],
        "summary": "Cancel a captured payment",
        "description": "> **Available on rails with manual capture.** That is a rail that authorizes now and captures later. A payment captured as it is authorized (`automatic`, `sequential_automatic`) leaves no open authorization to capture, extend or reverse, so build against automatic capture unless manual capture 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": "Capture a payment",
        "description": "> **Available on rails with manual capture.** That is a rail that authorizes now and captures later. A payment captured as it is authorized (`automatic`, `sequential_automatic`) leaves no open authorization to capture, extend or reverse, so build against automatic capture unless manual capture 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": "Accept a dispute",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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": "Get dispute totals",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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": "Submit dispute evidence",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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": "Attach evidence to a dispute",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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": "Delete evidence from a dispute",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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": "Retrieve dispute evidence",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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": "List dispute filters",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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": "List disputes",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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 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": "Retrieve a dispute",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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": "Upload a file",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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,\nsuch as plain text, 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": "Retrieve a file",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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": "Delete a file",
        "description": "> **Available on rails that report disputes.** Disputes raised against your payments appear in these endpoints with their evidence deadline; with none raised, lists are empty.\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": "List card issuers",
        "description": "> **Available on card rails.** Cards are enabled per account; ask us. Card details are entered in card fields hosted by the card processor, and the token those fields return is sent as `payment_method_data.psp_token`. Raw card data sent to payment create or confirm is refused in every mode, sandbox included, with `ERR_2029`.\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": "Create session tokens",
        "description": "> **Available on card rails.** Cards are enabled per account; ask us. Card details are entered in card fields hosted by the card processor, and the token those fields return is sent as `payment_method_data.psp_token`. Raw card data sent to payment create or confirm is refused in every mode, sandbox included, with `ERR_2029`.\n\nCreates the session tokens a wallet payment needs before it is confirmed.",
        "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": "Start 3-D Secure authentication",
        "description": "> **Available on card rails.** Cards are enabled per account; ask us. Card details are entered in card fields hosted by the card processor, and the token those fields return is sent as `payment_method_data.psp_token`. Raw card data sent to payment create or confirm is refused in every mode, sandbox included, with `ERR_2029`.\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": "Complete an authorization",
        "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.** Cards are enabled per account; ask us. Card details are entered in card fields hosted by the card processor, and the token those fields return is sent as `payment_method_data.psp_token`. Raw card data sent to payment create or confirm is refused in every mode, sandbox included, with `ERR_2029`.\n\n"
      }
    },
    "/payments/{payment_id}/extend_authorization": {
      "post": {
        "tags": [
          "Card payments"
        ],
        "summary": "Extend an authorization",
        "description": "> **Available on card rails.** Cards are enabled per account; ask us. Card details are entered in card fields hosted by the card processor, and the token those fields return is sent as `payment_method_data.psp_token`. Raw card data sent to payment create or confirm is refused in every mode, sandbox included, with `ERR_2029`.\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": "Increase an authorized amount",
        "description": "> **Available on card rails.** Cards are enabled per account; ask us. Card details are entered in card fields hosted by the card processor, and the token those fields return is sent as `payment_method_data.psp_token`. Raw card data sent to payment create or confirm is refused in every mode, sandbox included, with `ERR_2029`.\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": "Create post-session tokens",
        "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.** Cards are enabled per account; ask us. Card details are entered in card fields hosted by the card processor, and the token those fields return is sent as `payment_method_data.psp_token`. Raw card data sent to payment create or confirm is refused in every mode, sandbox included, with `ERR_2029`.\n\n"
      }
    },
    "/three_ds_decision/execute": {
      "post": {
        "tags": [
          "Card payments"
        ],
        "summary": "Run a 3-D Secure decision",
        "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.** Cards are enabled per account; ask us. Card details are entered in card fields hosted by the card processor, and the token those fields return is sent as `payment_method_data.psp_token`. Raw card data sent to payment create or confirm is refused in every mode, sandbox included, with `ERR_2029`.\n\n"
      }
    },
    "/v1/account/webhook-deliveries": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List webhook delivery history",
        "operationId": "listAccountWebhookDeliveries",
        "description": "Delivery history for your account, paginated. Scope `webhooks:read`. Fields, filters and errors: [Reporting API](https://docs.tensorrail.com/docs/reporting/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      }
    },
    "/v1/api-keys": {
      "get": {
        "tags": [
          "API keys"
        ],
        "summary": "List API keys",
        "operationId": "listApiKeys",
        "description": "The keys on your account. A key's secret is never returned after it is created. Creating, rotating and revoking keys are done in the dashboard. Fields, filters and errors: [API key management](https://docs.tensorrail.com/docs/api-keys/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      }
    },
    "/v1/audit": {
      "get": {
        "tags": [
          "Reports and exports"
        ],
        "summary": "List audit log entries",
        "operationId": "listAuditLog",
        "description": "Who did what on your account, newest first. Scope `payments:read`. Fields, filters and errors: [Reporting API](https://docs.tensorrail.com/docs/reporting/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      }
    },
    "/v1/balances": {
      "get": {
        "tags": [
          "Balances and transactions"
        ],
        "summary": "Retrieve your balances",
        "operationId": "getBalances",
        "description": "The pending, available and settled amounts for each currency you collect in. Scope `settlements:read`. Fields, filters and errors: [Balances](https://docs.tensorrail.com/docs/balances-and-settlements/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      }
    },
    "/v1/capabilities": {
      "get": {
        "tags": [
          "Capabilities"
        ],
        "summary": "List platform capabilities",
        "operationId": "listCapabilities",
        "description": "The payment methods, markets and currencies the platform supports; the same answer for every caller. What your own account can use is `GET /account/payment_methods`. No key needed. Fields, filters and errors: [Corridors and coverage](https://docs.tensorrail.com/docs/corridors-and-coverage/).",
        "security": [],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      }
    },
    "/v1/currencies": {
      "get": {
        "tags": [
          "Capabilities"
        ],
        "summary": "List currencies",
        "operationId": "listCurrencies",
        "description": "The currencies the API validates, the same for every caller. No key needed. Fields, filters and errors: [Reporting API](https://docs.tensorrail.com/docs/reporting/).",
        "security": [],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      }
    },
    "/v1/exports/transactions.csv": {
      "get": {
        "tags": [
          "Reports and exports"
        ],
        "summary": "Export transactions as CSV",
        "operationId": "exportTransactionsCsv",
        "description": "Your transactions as a CSV file, in one response. Scope `payments:read`. Fields, filters and errors: [CSV exports](https://docs.tensorrail.com/docs/exports/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The CSV file."
          }
        }
      }
    },
    "/v1/exports/{id}": {
      "get": {
        "tags": [
          "Reports and exports"
        ],
        "summary": "Retrieve an export job",
        "operationId": "getExportJob",
        "description": "An export job and its status. Scope `payments:read`. Fields, filters and errors: [CSV exports](https://docs.tensorrail.com/docs/exports/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The export job's id, as `POST /v1/exports` returned it.",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/v1/exports/{id}/download": {
      "get": {
        "tags": [
          "Reports and exports"
        ],
        "summary": "Download an export",
        "operationId": "downloadExport",
        "description": "The file of a finished export job. Scope `payments:read`. Fields, filters and errors: [CSV exports](https://docs.tensorrail.com/docs/exports/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The CSV file."
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The export job's id, as `POST /v1/exports` returned it.",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/v1/payment-links": {
      "get": {
        "tags": [
          "Hosted payment links"
        ],
        "summary": "List hosted payment links",
        "operationId": "listHostedPaymentLinks",
        "description": "The payment links saved on your account. Scope `payments:read`. Fields, filters and errors: [Payment links](https://docs.tensorrail.com/docs/payment-links/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      },
      "post": {
        "tags": [
          "Hosted payment links"
        ],
        "summary": "Save a hosted payment link",
        "operationId": "createHostedPaymentLink",
        "description": "Saves a prepared link on your account, so it appears in the list. Scope `payments:write`. Fields, filters and errors: [Payment links](https://docs.tensorrail.com/docs/payment-links/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "201": {
            "description": "The saved link."
          }
        }
      }
    },
    "/v1/refunds": {
      "get": {
        "tags": [
          "Ledger refunds"
        ],
        "summary": "List ledger refunds",
        "operationId": "listLedgerRefunds",
        "description": "Your refunds with their ledger status, paginated. Scope `refunds:read`. Fields, filters and errors: [Refunds via the Reporting API](https://docs.tensorrail.com/docs/ledger-refunds/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      },
      "post": {
        "tags": [
          "Ledger refunds"
        ],
        "summary": "Create a ledger refund",
        "operationId": "createLedgerRefund",
        "description": "Refunds a payment and records it against your balance. Send an `Idempotency-Key` header. Scope `refunds:write`. Fields, filters and errors: [Refunds via the Reporting API](https://docs.tensorrail.com/docs/ledger-refunds/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The refund, in its current status."
          }
        }
      }
    },
    "/v1/refunds/{id}": {
      "get": {
        "tags": [
          "Ledger refunds"
        ],
        "summary": "Retrieve a ledger refund",
        "operationId": "getLedgerRefund",
        "description": "One refund by its ledger id. Scope `refunds:read`. Fields, filters and errors: [Refunds via the Reporting API](https://docs.tensorrail.com/docs/ledger-refunds/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The ledger refund id, as `POST /v1/refunds` returned it.",
            "schema": {
              "type": "integer"
            }
          }
        ]
      }
    },
    "/v1/scopes": {
      "get": {
        "tags": [
          "API keys"
        ],
        "summary": "List scopes",
        "operationId": "listScopes",
        "description": "Every scope a key can carry. No key needed. Fields, filters and errors: [API key management](https://docs.tensorrail.com/docs/api-keys/).",
        "security": [],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      }
    },
    "/v1/transactions": {
      "get": {
        "tags": [
          "Balances and transactions"
        ],
        "summary": "List transactions",
        "operationId": "listTransactions",
        "description": "The transactions recorded on your account, paginated. Scope `payments:read`. Fields, filters and errors: [Reporting API](https://docs.tensorrail.com/docs/reporting/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      }
    },
    "/v1/webhooks/config": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Retrieve your webhook endpoint",
        "operationId": "getWebhookConfig",
        "description": "The URL your webhooks are sent to. Changing it is done in the dashboard. Scope `webhooks:read`. Fields, filters and errors: [Webhook endpoint and deliveries](https://docs.tensorrail.com/docs/webhook-management/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      }
    },
    "/v1/webhooks/deliveries": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List webhook deliveries",
        "operationId": "listWebhookDeliveries",
        "description": "The events sent to your endpoint and whether each was delivered. Scope `webhooks:read`. Fields, filters and errors: [Webhook endpoint and deliveries](https://docs.tensorrail.com/docs/webhook-management/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      }
    },
    "/v1/webhooks/deliveries/{event_id}/attempts": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List a delivery's attempts",
        "operationId": "listWebhookDeliveryAttempts",
        "description": "Every attempt made to deliver one event. Scope `webhooks:read`. Fields, filters and errors: [Webhook endpoint and deliveries](https://docs.tensorrail.com/docs/webhook-management/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        },
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "description": "The event's id, from the deliveries list.",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/v1/analytics/report": {
      "post": {
        "tags": [
          "Reports and exports"
        ],
        "summary": "Run an analytics report",
        "operationId": "runAnalyticsReport",
        "description": "Daily volume and success rate over a date range. Scope `analytics:read`. Fields, filters and errors: [Reporting API](https://docs.tensorrail.com/docs/reporting/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        }
      }
    },
    "/v1/exports": {
      "post": {
        "tags": [
          "Reports and exports"
        ],
        "summary": "Start an export job",
        "operationId": "createExportJob",
        "description": "Starts an export that runs in the background; poll it, then download the file. Scope `payments:read`. Fields, filters and errors: [CSV exports](https://docs.tensorrail.com/docs/exports/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "202": {
            "description": "The export job."
          }
        }
      }
    },
    "/v1/payment-links/prepare": {
      "post": {
        "tags": [
          "Hosted payment links"
        ],
        "summary": "Prepare a hosted payment link",
        "operationId": "prepareHostedPaymentLink",
        "description": "Creates the payment behind a link and returns the URL to send to the payer. Scope `payments:write`. Fields, filters and errors: [Payment links](https://docs.tensorrail.com/docs/payment-links/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "201": {
            "description": "The payment and its link."
          }
        }
      }
    },
    "/v1/webhooks/deliveries/{event_id}/retry": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Retry a webhook delivery",
        "operationId": "retryWebhookDelivery",
        "description": "Sends one event to your endpoint again. Scope `webhooks:write`. Fields, filters and errors: [Webhook endpoint and deliveries](https://docs.tensorrail.com/docs/webhook-management/).",
        "security": [
          {
            "secret_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "The result."
          }
        },
        "parameters": [
          {
            "name": "event_id",
            "in": "path",
            "required": true,
            "description": "The event's id, from the deliveries list.",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AcceptanceType": {
        "type": "string",
        "description": "This is used to indicate if the mandate was accepted online or offline",
        "enum": [
          "online",
          "offline"
        ]
      },
      "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"
        }
      },
      "ApplePayPaymentData": {
        "oneOf": [
          {
            "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"
        ]
      },
      "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"
          }
        }
      },
      "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": "Identifier assigned by TensorRail. Routing is managed for your account; you do not choose or interpret this value."
          },
          "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"
        ]
      },
      "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"
                  }
                }
              }
            }
          }
        ]
      },
      "BankDebitTypes": {
        "type": "object",
        "required": [
          "eligible_connectors"
        ],
        "properties": {
          "eligible_connectors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Reserved. Always empty.",
            "example": []
          }
        }
      },
      "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": [
              "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"
              }
            }
          }
        ]
      },
      "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.",
            "example": []
          }
        }
      },
      "BillingDescriptor": {
        "type": "object",
        "description": "Billing descriptor information shown on the customer's statement",
        "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
          }
        }
      },
      "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"
        ]
      },
      "CardCheckoutConfig": {
        "type": "object",
        "description": "Client-side (browser-safe) config the hosted payment page uses to mount the card fields hosted\nby the card processor, in an iframe.",
        "required": [
          "provider",
          "publishable_key"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "description": "Identifier of the card form assigned to your account. The hosted checkout uses it; 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:\nit is NOT a TensorRail secret key and cannot be used to move money.",
            "example": "pk_live_EXAMPLE_PUBLISHABLE_KEY"
          }
        }
      },
      "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"
          }
        }
      },
      "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.",
            "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"
              }
            }
          }
        ]
      },
      "CashappQr": {
        "type": "object"
      },
      "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 API 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
          }
        }
      },
      "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"
        ]
      },
      "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"
          }
        }
      },
      "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
          }
        }
      },
      "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 opaque identifiers. 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
              }
            }
          }
        ]
      },
      "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
          }
        }
      },
      "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"
        ]
      },
      "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"
          }
        }
      },
      "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": "Identifier assigned by TensorRail. Routing is managed for your account; you do not choose or interpret this value."
          },
          "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": "Identifier assigned by TensorRail. Routing is managed for your account; you do not choose or interpret this value."
          },
          "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/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"
        ]
      },
      "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
          }
        }
      },
      "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"
          },
          "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
          }
        }
      },
      "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"
          },
          "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, 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 (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. The amount received can differ from the quoted amount; this field records what arrived. 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
          }
        }
      },
      "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"
          }
        }
      },
      "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. Wallet and pay-later routing is\ndecided server-side, not by the browser.",
            "example": []
          }
        }
      },
      "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"
              }
            ]
          }
        }
      },
      "PaymentMethodData": {
        "oneOf": [
          {
            "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": "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": "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"
      },
      "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"
        ]
      },
      "PaymentMethodsConfig": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/PaymentMethodConfig"
        },
        "description": "List of custom T&C messages grouped by payment method"
      },
      "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
          },
          "all_keys_required": {
            "type": "boolean",
            "description": "Reserved. Has no effect on merchant responses.",
            "nullable": true
          }
        }
      },
      "PaymentsCaptureRequest": {
        "type": "object",
        "properties": {
          "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": "Whether to release the uncaptured remainder of the authorization. Behaviour depends on the payment method.",
            "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
          },
          "all_keys_required": {
            "type": "boolean",
            "description": "Reserved. Has no effect on merchant responses.",
            "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
          },
          "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`: the request is rejected\nif it is present.",
            "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
          },
          "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
          },
          "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
          },
          "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": "Reserved. Has no effect on merchant responses.",
            "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
          },
          "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
          },
          "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
          },
          "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
          },
          "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": "Reserved. Has no effect on merchant responses.",
            "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
          },
          "amount_received": {
            "type": "integer",
            "format": "int64",
            "description": "The total amount (in minor units) that has been captured for this payment. In test mode 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 used in the browser, for example by the hosted checkout page, together with a publishable key to confirm the payment or handle next actions. Handle it carefully and do not expose it beyond that 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 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, in its own words, for diagnosis. `error_message` is the stable decline text. Absent when the route gave no reason of its own. Do not branch on this field, because the wording 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
          },
          "manual_retry_allowed": {
            "type": "boolean",
            "description": "If true the payment can be retried with same or different payment method which means the confirm call can be made again.",
            "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
          },
          "livemode": {
            "type": "boolean",
            "description": "Whether the payment was created with a live key (real money) or a test key. Null when the environment was never recorded, which only happens for payments older than this field; treat null as unknown, never as test.",
            "nullable": true
          },
          "customer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerDetailsResponse"
              }
            ],
            "nullable": true
          }
        }
      },
      "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
          },
          "amount_received": {
            "type": "integer",
            "format": "int64",
            "description": "The total amount (in minor units) that has been captured for this payment. In test mode 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 used in the browser, for example by the hosted checkout page, together with a publishable key to confirm the payment or handle next actions. Handle it carefully and do not expose it beyond that 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 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, in its own words, for diagnosis. `error_message` is the stable decline text. Absent when the route gave no reason of its own. Do not branch on this field, because the wording 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
          },
          "manual_retry_allowed": {
            "type": "boolean",
            "description": "If true the payment can be retried with same or different payment method which means the confirm call can be made again.",
            "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
          },
          "livemode": {
            "type": "boolean",
            "description": "Whether the payment was created with a live key (real money) or a test key. Null when the environment was never recorded, which only happens for payments older than this field; treat null as unknown, never as test.",
            "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 in the browser to act on this one payment",
            "nullable": true
          },
          "wallets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentMethodType"
            },
            "description": "The list of the supported wallets"
          }
        }
      },
      "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 in the browser to act on this one payment"
          },
          "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
          },
          "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
          },
          "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
          },
          "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
          },
          "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": "Reserved. Has no effect on merchant responses.",
            "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
          }
        }
      },
      "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": "Identifier assigned by TensorRail. Routing is managed for your account; you do not choose or interpret this value."
          },
          "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"
          }
        }
      },
      "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": "Stored payment token for merchant-initiated 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"
        ]
      },
      "PspTokenData": {
        "type": "object",
        "description": "An opaque token returned by the card fields hosted by the card processor assigned to the merchant's account\n(typically `pm_*`, `tok_*` or an encrypted-card blob). TensorRail NEVER sees the raw PAN; the\ntoken is meaningful only to the form that minted it, so it cannot be replayed elsewhere.",
        "required": [
          "token",
          "card_holder_name"
        ],
        "properties": {
          "token": {
            "type": "string",
            "description": "The opaque token returned by the card fields hosted by the card processor.",
            "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_network_token_details"
                ]
              },
              "data": {
                "$ref": "#/components/schemas/NetworkTransactionIdAndNetworkTokenDetails"
              }
            }
          }
        ],
        "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": "Identifier assigned by TensorRail. Routing is managed for your account; you do not choose or interpret this value.",
                "nullable": true
              },
              "merchant_connector_id": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Rail identifiers to filter refunds by.",
                "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"
          }
        }
      },
      "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
          },
          "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"
        ]
      },
      "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
      },
      "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"
          }
        }
      },
      "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"
      },
      "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"
        }
      },
      "SizeVariants": {
        "type": "string",
        "enum": [
          "cover",
          "contain"
        ]
      },
      "SkrillData": {
        "type": "object"
      },
      "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
          }
        }
      },
      "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
          }
        }
      },
      "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"
          }
        }
      },
      "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"
        ]
      },
      "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"
              }
            }
          }
        ]
      },
      "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 redirect data"
              }
            }
          },
          {
            "type": "object",
            "title": "VippsRedirect",
            "required": [
              "vipps_redirect"
            ],
            "properties": {
              "vipps_redirect": {
                "type": "object",
                "description": "Wallet redirect data"
              }
            }
          },
          {
            "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."
      },
      "secret_key": {
        "type": "http",
        "scheme": "bearer",
        "description": "Your secret `rail_*` key as `Authorization: Bearer <key>`, on the `/v1` resources. The payment API takes the same key in the `api-key` header."
      }
    }
  },
  "tags": [
    {
      "name": "Payments",
      "description": "Create, confirm, read and cancel a payment."
    },
    {
      "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": "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."
    },
    {
      "name": "Hosted payment links",
      "description": "Payment links you create and list on your account; the payer opens each one on the hosted checkout."
    },
    {
      "name": "Ledger refunds",
      "description": "Refunds recorded against your balance first, with their ledger status. The same refunds as the Refunds section, seen from your balance."
    },
    {
      "name": "Balances and transactions",
      "description": "What you hold, per currency, and the transactions behind it."
    },
    {
      "name": "Reports and exports",
      "description": "Reports, the audit log and CSV exports of your transactions."
    },
    {
      "name": "API keys",
      "description": "The keys on your account and the scopes a key can carry."
    },
    {
      "name": "Webhooks",
      "description": "Your webhook endpoint and the deliveries made to it."
    },
    {
      "name": "Capabilities",
      "description": "What the platform supports: payment methods, markets and currencies."
    }
  ],
  "x-tagGroups": [
    {
      "name": "Accept payments",
      "tags": [
        "Payments",
        "Payment links",
        "Hosted payment links",
        "Card payments",
        "Customers",
        "Payment methods",
        "Mandates"
      ]
    },
    {
      "name": "Operate payments",
      "tags": [
        "Manual capture",
        "Metadata updates",
        "Refunds",
        "Disputes"
      ]
    },
    {
      "name": "Account",
      "tags": [
        "Account",
        "API keys",
        "Webhooks",
        "Capabilities"
      ]
    },
    {
      "name": "Money and reconciliation",
      "tags": [
        "Ledger refunds",
        "Balances and transactions",
        "Reports and exports"
      ]
    }
  ]
}
