{
  "openapi": "3.0.3",
  "info": {
    "title": "Payments Direct API",
    "version": 2026.03,
    "license": {
      "name": "Apache 2.0",
      "url": "http://apache.org"
    },
    "description": "Use the Payments Direct API to get quotes, create and manage payments, and manage originator and beneficiary identities.\n\n## API environments\n\nThe Payments Direct API offers the following environments:\n\n| <div style=\"width:90px\">Environment</div>  | Base URL                      | Description                               |\n| ------------------------------------------ | ----------------------------- | ----------------------------------------- |\n| UAT                                       | `https://api.test.ripple.com` | UAT environment with simulated currency. |\n| Production                                 | `https://api.ripple.com`      | Production environment                    |\n\n## API authentication\n\nAll {% $env.PUBLIC_VAR_RPD %} API operations require a Bearer access token specific to the environment you're using. Ripple provides a secure model for authentication and authorization by providing access tokens scoped for a set of credentials.\n\n### Generate client ID and client secret\n\nYou will need your _client ID_ and _client secret_ to obtain an access token.\n\nIf you do not already have your client ID and client secret, do the following:\n\n1. Log into the Ripple Payments UI.\n2. In the left navigation menu, click **Settings**.\n3. Under **Administration**, click **API Credentials**.\n4. In the dropdown list next to the page title, select the access environment. For example, to provision credentials for the test environment, select **UAT** from the dropdown list.\n5. In the upper right corner of the page, click **New Credential**.\n6. Click **Save and Generate Key**.\n\n**Caution:** The *client secret* is displayed only once when you are creating new credentials. You cannot retrieve the secret after exiting this page. Copy and store the client secret securely and share it with authorized individuals in accordance with your organization's security policy.\n\nYou can now use the client ID and client secret to generate access tokens using the [Request an access token](#operation/authenticate) operation.\n\n### Request an access token\n\nTo get an access token, use the [Request an access token](#operation/authenticate) operation with your `client_id` and `client_secret`. The response contains a token in the `access_token` field.\n\nWe recommend rotating your API credentials at regular intervals according to your organization's security policy.\n\n**Note**: Authentication tokens are not a fixed length and can vary, avoid validating tokens based on character length.\n"
  },
  "servers": [
    {
      "url": "https://api.test.ripple.com",
      "description": "UAT environment with simulated currency"
    },
    {
      "url": "https://api.ripple.com",
      "description": "Production environment"
    }
  ],
  "tags": [
    {
      "name": "Authentication",
      "description": "Use these API operations to manage your authentication tokens.\n\n| Operation | Method | Description |\n| --- | --- | --- |\n| [Request an access token](#operation/authenticate) | POST | Request an access token for authentication with Ripple APIs. |\n| [Test access token](#operation/testAuthToken) | GET | Test if an access token can be used for authentication. |\n",
      "x-displayName": "Authentication"
    },
    {
      "name": "IdentitiesV3",
      "x-displayName": "Identities",
      "description": "Use these API operations to manage your identities with **Identity Management v3** (recommended for all new integrations). For more information about identity management, see [Payment identities](/products/payments-direct-2/introduction/concepts/payment-identities) and [Financial instruments](/products/payments-direct-2/introduction/concepts/financial-instruments).\n| Operation | Method | Description |\n| --- | --- | --- |\n| [Create an identity](#operation/createIdentity) | POST | Create a new identity (INDIVIDUAL/BUSINESS; ORIGINATOR/BENEFICIARY). |\n| [Get a list of identities](#operation/getIdentities) | GET | Retrieve a list of identities with optional filters (e.g., `paymentRole`, `identityType`). |\n| [Get an identity by ID](#operation/getIdentityById) | GET | Retrieve a specific identity by `identityId` (latest version by default). |\n| [Get an identity by internal ID](#operation/getIdentityByInternalId) | GET | Retrieve an active identity by client-provided `internalId`. |\n| [Update an identity](#operation/putIdentity) | PUT | Update one or more fields; creates a new version. |\n| [Deactivate an identity](#operation/deactivateIdentityV3) | DELETE | Set the identity state to `DEACTIVATED` (cannot be used for new payments). |\n| [Add a financial instrument](#operation/createFinancialInstrument) | POST | Add a financial instrument to an identity. |\n| [Get a list of financial instruments](#operation/getFinancialInstruments) | GET | Get a list of financial instruments for an identity. |\n| [Get a financial instrument by ID](#operation/getFinancialInstrumentById) | GET | Get a specific financial instrument by `financialInstrumentId`. |\n| [Update a financial instrument](#operation/putFinancialInstrument) | PUT | Update a financial instrument by `financialInstrumentId`. |\n| [Deactivate a financial instrument](#operation/deactivateFinancialInstrumentV3) | DELETE | Deactivate a financial instrument by `financialInstrumentId`. |\n"
    },
    {
      "name": "Quote",
      "x-displayName": "Quotes",
      "description": "Use these API operations to manage your quotes.\n\n\n| Operation | Method | Description |\n| --- | --- | --- |\n| [Create quote collection](#operation/createQuoteCollection) | POST | Create a collection of quotes.  |\n| [Get quote collection](#operation/getQuoteCollection) | GET | Get a quote collection by ID. |\n| [Get a quote](#operation/getQuote) | GET | Get a specific quote by ID.  |\n"
    },
    {
      "name": "PaymentsV2",
      "x-displayName": "Payments",
      "description": "Use these API operations to manage your payments with **Payment Management v3** (recommended for all new integrations).\n\n| Operation | Method | Description |\n| --- | --- | --- |\n| [Search payments](#operation/searchPaymentsV2) | POST | Search for payments based on filtering criteria. |\n| [Create a payment](#operation/createPaymentV2) | POST | Create a payment by accepting a quote. |\n| [Get payment by payment ID](#operation/getPaymentByIdV2) | GET | Get a specific payment by payment ID.  |\n| [Get state transitions by payment ID](#operation/getPaymentStateTransitionsByIdV2) | GET | Get the state transitions for a specific payment by payment ID. |\n| [Update payment labels](#operation/updatePaymentLabelsV2) | PATCH | Update the labels for a specific payment by payment ID. |\n"
    },
    {
      "name": "ledger-public",
      "x-displayName": "Ledger",
      "description": "Use these API operation to fetch ledger transactions and check balances.\n\n| Operation | Method | Description |\n| --- | --- | --- |\n| [Get balances](#operation/getBalances) | GET | View your existing balances  |\n| [Get ledger transactions](#operation/getStatementsTransactionsForCustomer) | GET | View your ledger transactions.  |\n"
    }
  ],
  "paths": {
    "/v2/oauth/token": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "operationId": "authenticate",
        "summary": "Request an access token",
        "parameters": [
          {
            "in": "header",
            "name": "Authorization",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional [base64-encoded](https://datatracker.ietf.org/doc/html/rfc7617) `client_id:client_secret`. If provided here they aren't required in the request body.",
              "example": "Basic ZGVtbzpwQDU1dzByZA=="
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthenticationRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/AuthenticationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the authentication response object that includes the token, type, scopes, and expiry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthenticationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error_description": "Missing required parameter: grant_type",
                  "error": "invalid_request"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error_description": "Unauthorized",
                  "error": "access_denied"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden. Returns `access_denied` when the domain is not enabled, or `unauthorized_client` when the caller (client ID or audience) is not authorized to request a token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error_description": "Service not enabled within domain: <wrong:domain>",
                  "error": "access_denied"
                }
              }
            }
          }
        },
        "description": "Request an access token for authentication with Ripple APIs.\n\nYou need to request a token for the environment you want to authenticate with.\n\n**Note**: The length of the access token isn't fixed, hence it can vary. Avoid validating tokens based on character length.\n\n**Developer guide**\n\n* Learn how to [Request an access token](../developer-guides/request-an-access-token.md).\n\n#### Environments\n\n| Environment | Domain | Description |\n| --- | --- | --- |\n| Test | `api.test.ripple.com` | Test environment with simulated currency. |\n| Production | `api.ripple.com` | Production environment for Ripple Payments Direct |\n",
        "security": [
          {
            "BasicAuth": []
          }
        ]
      }
    },
    "/v2/oauth/token/test": {
      "get": {
        "tags": [
          "Authentication"
        ],
        "operationId": "testAuthToken",
        "security": [
          {
            "Bearer": []
          }
        ],
        "summary": "Test access token",
        "description": "Test if an access token can be used for authentication with Ripple APIs and how much time remains on it.",
        "responses": {
          "200": {
            "description": "If a valid bearer token is supplied, the time remaining before the token expires is returned.",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ValidateTokenResponse"
                  },
                  "type": "array"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                },
                "example": "Invalid Request parameters [Invalid bearer authentication token]"
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/v3/payments/filter": {
      "post": {
        "tags": [
          "PaymentsV2"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "searchPaymentsV2",
        "summary": "Search payments",
        "description": "Returns a paginated list of payments matching the specified filters. You can filter by status, date range, destination country, currency, or custom labels.",
        "requestBody": {
          "description": "Search payments request",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPaymentsRequestV2"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Payments matching the specified filtering criteria.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentsResponseV2"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input variables for the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "badRequest": {
                    "$ref": "#/components/examples/error-bad-request"
                  },
                  "invalidRequestBody": {
                    "$ref": "#/components/examples/error-invalid-request-body"
                  }
                }
              }
            }
          },
          "415": {
            "description": "Missing or unsupported Content-Type header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "unsupportedMediaType": {
                    "$ref": "#/components/examples/error-unsupported-media-type"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "internalServerError": {
                    "$ref": "#/components/examples/error-internal-server"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/payments": {
      "post": {
        "tags": [
          "PaymentsV2"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "createPaymentV2",
        "summary": "Create payment",
        "description": "Initiates a new cross-border payment. Payments are processed asynchronously. Use **Get a payment by ID** to poll for status updates, or **Get state transitions** to view the full status history.\n",
        "requestBody": {
          "description": "create payment request",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentRequestV2"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Valid payment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentV2"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input variables for the payment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "badRequest": {
                    "$ref": "#/components/examples/error-bad-request"
                  },
                  "invalidRequestBody": {
                    "$ref": "#/components/examples/error-invalid-request-body"
                  }
                }
              }
            }
          },
          "402": {
            "description": "Problems related to payment limits.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "insufficientBalance": {
                    "$ref": "#/components/examples/error-insufficient-balance"
                  }
                }
              }
            }
          },
          "403": {
            "description": "The payment already exists and belongs to a different tenant.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "forbidden": {
                    "$ref": "#/components/examples/error-forbidden"
                  }
                }
              }
            }
          },
          "415": {
            "description": "Missing or unsupported Content-Type header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "unsupportedMediaType": {
                    "$ref": "#/components/examples/error-unsupported-media-type"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "internalServerError": {
                    "$ref": "#/components/examples/error-internal-server"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/payments/{paymentId}": {
      "get": {
        "tags": [
          "PaymentsV2"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "getPaymentByIdV2",
        "description": "Returns the current status and full details of a payment, including amounts, beneficiary information, and the associated quote.",
        "summary": "Get a payment by ID",
        "parameters": [
          {
            "in": "path",
            "name": "paymentId",
            "description": "Unique identifier of the payment to get.",
            "example": "7ea3399c-1234-5678-8d8f-d320ea406630",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched payment details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentWithDetailsV2"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input variables for the payment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "badRequest": {
                    "$ref": "#/components/examples/error-bad-request"
                  },
                  "invalidRequestBody": {
                    "$ref": "#/components/examples/error-invalid-request-body"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Payment not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "resourceNotFound": {
                    "$ref": "#/components/examples/error-resource-not-found"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "internalServerError": {
                    "$ref": "#/components/examples/error-internal-server"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/payments/{paymentId}/states": {
      "get": {
        "tags": [
          "PaymentsV2"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "getPaymentStateTransitionsByIdV2",
        "description": "Returns the complete state transition history for a payment, including each status change and its timestamp. Use this to audit payment progress or debug processing issues.",
        "summary": "Get state transitions by payment ID",
        "parameters": [
          {
            "in": "path",
            "name": "paymentId",
            "description": "Unique identifier of the payment for which you want to get state transition information.",
            "example": "7ea3399c-1234-5678-8d8f-d320ea406630",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully fetched payment state transitions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StateTransitionsResponseV2"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input variables for the payment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "badRequest": {
                    "$ref": "#/components/examples/error-bad-request"
                  },
                  "invalidRequestBody": {
                    "$ref": "#/components/examples/error-invalid-request-body"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Payment not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "resourceNotFound": {
                    "$ref": "#/components/examples/error-resource-not-found"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "internalServerError": {
                    "$ref": "#/components/examples/error-internal-server"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/payments/{paymentId}/labels": {
      "patch": {
        "tags": [
          "PaymentsV2"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "updatePaymentLabelsV2",
        "summary": "Update payment labels",
        "description": "Add or remove labels for grouping and categorizing payments (e.g., campaign IDs, workflow tags, or batch identifiers). Labels are optional and mutable; they can be added or removed over the payment's lifetime.",
        "parameters": [
          {
            "in": "path",
            "name": "paymentId",
            "description": "The unique ID that identifies the payment for which you want to update labels.",
            "example": "7ea3399c-1234-5678-8d8f-d320ea406630",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "Labels to add to or remove from the payment.",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePaymentLabelsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated the payment labels.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatePaymentLabelsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input variables for the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "badRequest": {
                    "$ref": "#/components/examples/error-bad-request"
                  },
                  "invalidRequestBody": {
                    "$ref": "#/components/examples/error-invalid-request-body"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Payment not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "resourceNotFound": {
                    "$ref": "#/components/examples/error-resource-not-found"
                  }
                }
              }
            }
          },
          "415": {
            "description": "Missing or unsupported Content-Type header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "unsupportedMediaType": {
                    "$ref": "#/components/examples/error-unsupported-media-type"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentErrorResponse"
                },
                "examples": {
                  "internalServerError": {
                    "$ref": "#/components/examples/error-internal-server"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/identities": {
      "post": {
        "tags": [
          "IdentitiesV3"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "createIdentity",
        "summary": "Create an identity",
        "description": "Create a new payment identity as an `ORIGINATOR` or `BENEFICIARY` for either an `INDIVIDUAL` or `BUSINESS`.\n\nThe request body must follow the v3 identity schema and will be validated against corridor rules where applicable.\n\nOn success, the API returns the new `identityId` and its initial version.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/create-identity-request-v3"
              },
              "examples": {
                "create-individual-originator": {
                  "summary": "INDIVIDUAL ORIGINATOR",
                  "value": {
                    "identityType": "INDIVIDUAL",
                    "paymentRole": "ORIGINATOR",
                    "internalId": "customer-12345-uuid",
                    "nickName": "Alice Sender USD",
                    "tags": [
                      "sender",
                      "priority"
                    ],
                    "validatePayoutRails": [
                      "CO_PSE"
                    ],
                    "individual": {
                      "firstName": "Alice",
                      "lastName": "Chen",
                      "dateOfBirth": "1990-05-14",
                      "citizenship": "US",
                      "address": {
                        "streetAddress": [
                          "123 Main Street"
                        ],
                        "city": "San Francisco",
                        "stateOrProvince": "CA",
                        "postalCode": "94105",
                        "country": "US"
                      }
                    }
                  }
                },
                "create-business-beneficiary": {
                  "summary": "BUSINESS BENEFICIARY",
                  "value": {
                    "identityType": "BUSINESS",
                    "paymentRole": "BENEFICIARY",
                    "nickName": "Widgets Org MX",
                    "tags": [
                      "beneficiary",
                      "mx"
                    ],
                    "validatePayoutRails": [
                      "CO_PSE"
                    ],
                    "business": {
                      "businessName": "Widgets Org",
                      "incorporationCountry": "US",
                      "registration": [
                        {
                          "number": "123ABC",
                          "type": "INCORPORATION_CERTIFICATE"
                        }
                      ],
                      "email": "fake@example.com",
                      "phone": "+1234567890",
                      "address": {
                        "streetAddress": [
                          "123 Example MA"
                        ],
                        "city": "Boston",
                        "stateOrProvince": "MS",
                        "postalCode": "12345",
                        "country": "US"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Identity created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/create-identity-response-v3"
                },
                "example": {
                  "identityId": "99254c4f-f207-4792-a846-06928825018c",
                  "version": "1"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-400": {
                    "$ref": "#/components/examples/error-400-example"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict - An identity with the provided internalId already exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-500": {
                    "$ref": "#/components/examples/error-500-example"
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "IdentitiesV3"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "getIdentities",
        "summary": "Get a list of identities",
        "description": "Retrieve identities for your organization with optional filters.\n\nUse `limit` and `next-token` for pagination. The response includes a `data` array and an optional `nextToken`.\n",
        "parameters": [
          {
            "in": "query",
            "name": "payment-role",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "BENEFICIARY",
            "description": "Filter by payment role."
          },
          {
            "in": "query",
            "name": "nick-name",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 256
            },
            "example": "Alice",
            "description": "Filter by nickname."
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "example": 20,
              "default": 10
            },
            "description": "Maximum number of identities to return. Default value is 10, maximum is 100."
          },
          {
            "in": "query",
            "name": "next-token",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "eyJrZXkxIjoidmFsdWVfMSIsImtleTIiOiJ2YWx1ZTIifQ==",
            "description": "Opaque token to fetch the next page of results."
          }
        ],
        "responses": {
          "200": {
            "description": "A page of identities.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/list-identities-response-v3"
                },
                "examples": {
                  "list-identities-v3": {
                    "value": {
                      "data": [
                        {
                          "identityId": "0116bacc-ffbf-4fa2-a29c-ecd9ea346806",
                          "identityType": "BUSINESS",
                          "paymentRole": "BENEFICIARY",
                          "createdAt": "2025-10-01T16:14:13.200Z",
                          "updatedAt": "2025-10-01T16:14:15.763Z",
                          "identityState": "ACTIVE",
                          "nickName": "testNickName",
                          "tags": [
                            "tag1"
                          ],
                          "version": 2,
                          "schemaVersion": "1.0.0"
                        },
                        {
                          "identityId": "1d927c62-45fa-4f42-b9f8-8210e1a111bb",
                          "identityType": "INDIVIDUAL",
                          "paymentRole": "ORIGINATOR",
                          "createdAt": "2025-10-01T17:20:05.111Z",
                          "updatedAt": "2025-10-01T17:20:06.500Z",
                          "identityState": "ACTIVE",
                          "nickName": "Alice Originator",
                          "tags": [
                            "sender",
                            "priority"
                          ],
                          "version": 1,
                          "schemaVersion": "1.0.0"
                        }
                      ],
                      "nextToken": "eyJrZXkxIjoidmFsdWUifQ=="
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-400": {
                    "$ref": "#/components/examples/error-400-example"
                  }
                }
              }
            }
          },
          "404": {
            "description": "No identities found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-404": {
                    "$ref": "#/components/examples/error-404-example"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-500": {
                    "$ref": "#/components/examples/error-500-example"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/identities/{identity-id}": {
      "get": {
        "tags": [
          "IdentitiesV3"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "getIdentityById",
        "summary": "Get an identity by ID",
        "description": "Retrieve a specific identity by ID.\n\nIf `version` is not provided, the latest version is returned.\n",
        "parameters": [
          {
            "name": "identity-id",
            "in": "path",
            "required": true,
            "description": "The ID of the identity to retrieve.",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "version",
            "description": "Specific version to retrieve. If omitted, returns the latest version.",
            "example": "2",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Identity details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/get-identity-response-v3"
                },
                "examples": {
                  "get-identity-v3": {
                    "value": {
                      "identityId": "9d839f58-7fd3-4913-a27e-48d31973d3f9",
                      "identityState": "ACTIVE",
                      "nickName": "nickName",
                      "tags": [
                        "tag1"
                      ],
                      "version": "2",
                      "schemaVersion": "1.0.0",
                      "createdAt": "2025-10-01T18:46:41.833Z",
                      "updatedAt": "2025-10-01T18:46:47.430Z",
                      "identityType": "BUSINESS",
                      "paymentRole": "BENEFICIARY",
                      "business": {
                        "businessName": "Widgets Org",
                        "address": {
                          "streetAddress": [
                            "123 Example MA"
                          ],
                          "country": "US",
                          "city": "Boston",
                          "stateOrProvince": "MS",
                          "postalCode": "12345"
                        },
                        "email": "fake@example.com",
                        "phone": "+1234567890",
                        "registration": [
                          {
                            "number": "123ABC",
                            "type": "INCORPORATION_CERTIFICATE"
                          }
                        ],
                        "incorporationCountry": "US"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid identity ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-400": {
                    "$ref": "#/components/examples/error-400-example"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Identity not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-404": {
                    "$ref": "#/components/examples/error-404-example"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-500": {
                    "$ref": "#/components/examples/error-500-example"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "IdentitiesV3"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "putIdentity",
        "summary": "Update an identity",
        "description": "Update all fields of an existing identity. Supports updates to PII fields and metadata.\n\nEach successful PUT creates a new version and preserves prior versions for audit.\n",
        "parameters": [
          {
            "name": "identity-id",
            "in": "path",
            "required": true,
            "description": "The ID of the identity to update.",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/put-identity-request-v3"
              },
              "examples": {
                "put-metadata": {
                  "summary": "Update nickname and tags",
                  "value": {
                    "nickName": "Alice Sender USD - Updated",
                    "tags": [
                      "usd",
                      "high-value"
                    ]
                  }
                },
                "put-individual-address": {
                  "summary": "Update INDIVIDUAL address",
                  "value": {
                    "individual": {
                      "address": {
                        "streetAddress": [
                          "500 Market Street"
                        ],
                        "city": "San Francisco",
                        "stateOrProvince": "CA",
                        "postalCode": "94103",
                        "country": "US"
                      }
                    }
                  }
                },
                "put-business-contact": {
                  "summary": "Update BUSINESS contact info",
                  "value": {
                    "business": {
                      "email": "ops@example.com",
                      "phone": "+14155551234"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Identity updated. Latest version returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/get-identity-response-v3"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-400": {
                    "$ref": "#/components/examples/error-400-example"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Identity not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-404": {
                    "$ref": "#/components/examples/error-404-example"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict - The provided internalId already exists on a different identity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-500": {
                    "$ref": "#/components/examples/error-500-example"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "IdentitiesV3"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "deactivateIdentityV3",
        "summary": "Deactivate an identity",
        "description": "Deactivate an identity and its financial instruments.\n\nDeactivation is permanent and prevents further use in payments.\n\nHistorical versions remain available for audit.\n",
        "parameters": [
          {
            "in": "path",
            "name": "identity-id",
            "required": true,
            "description": "ID of the identity to deactivate.",
            "example": "146f3c51-c313-47ce-b6f2-691c5a238b3e",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Identity deactivated."
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-400": {
                    "$ref": "#/components/examples/error-400-example"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Identity not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-404": {
                    "$ref": "#/components/examples/error-404-example"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Identity already deactivated or cannot be deactivated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-500": {
                    "$ref": "#/components/examples/error-500-example"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/identities/by-internal-id/{internal-id}": {
      "get": {
        "tags": [
          "IdentitiesV3"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "getIdentityByInternalId",
        "summary": "Get an identity by Internal ID",
        "description": "Retrieve a specific identity by its internal ID.\n\n**Behavior:**\n- Only returns identities in the `ACTIVE` state. Deactivated identities will result in an error.\n- Always returns the latest version of the identity. Historical versions are not accessible through this endpoint.\n- If no active identity exists for the given `internal-id`, a 404 is returned.\n",
        "parameters": [
          {
            "name": "internal-id",
            "in": "path",
            "required": true,
            "description": "The Internal ID of the identity to retrieve.",
            "example": "customer-12345-uuid",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Identity details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/get-identity-response-v3"
                },
                "examples": {
                  "get-identity-v3": {
                    "value": {
                      "identityId": "9d839f58-7fd3-4913-a27e-48d31973d3f9",
                      "identityState": "ACTIVE",
                      "nickName": "nickName",
                      "tags": [
                        "tag1"
                      ],
                      "version": "2",
                      "schemaVersion": "1.0.0",
                      "createdAt": "2025-10-01T18:46:41.833Z",
                      "updatedAt": "2025-10-01T18:46:47.430Z",
                      "identityType": "BUSINESS",
                      "paymentRole": "ORIGINATOR",
                      "internalId": "customer-12345-uuid",
                      "business": {
                        "businessName": "Widgets Org",
                        "address": {
                          "streetAddress": [
                            "123 Example MA"
                          ],
                          "country": "US",
                          "city": "Boston",
                          "stateOrProvince": "MS",
                          "postalCode": "12345"
                        },
                        "email": "fake@example.com",
                        "phone": "+1234567890",
                        "registration": [
                          {
                            "number": "123ABC",
                            "type": "INCORPORATION_CERTIFICATE"
                          }
                        ],
                        "incorporationCountry": "US"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid internal ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-400": {
                    "$ref": "#/components/examples/error-400-example"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Active Identity not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-404": {
                    "$ref": "#/components/examples/error-404-example"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-500": {
                    "$ref": "#/components/examples/error-500-example"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/identities/{identity-id}/financial-instruments": {
      "post": {
        "tags": [
          "IdentitiesV3"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "createFinancialInstrument",
        "summary": "Add a financial instrument",
        "description": "Create a financial instrument for the specified identity. The request body must include\nthe payment rail (financialInstrumentType), currency or asset code, and the rail-specific\ndetails (for example, US ACH account numbers or a wallet address).\n\nIn the current release, each identity can have **one** financial instrument.\n\nFuture releases will support multiple instruments per identity.\n",
        "parameters": [
          {
            "name": "identity-id",
            "in": "path",
            "required": true,
            "description": "Unique identifier of the identity that will own the financial instrument.",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ripple-financial-instrument"
              },
              "examples": {
                "create-us-ach": {
                  "summary": "US_ACH bank account",
                  "value": {
                    "financialInstrumentType": "US_ACH",
                    "currency": "USD",
                    "label": "US bank account",
                    "usAch": {
                      "bankName": "Bank of Example",
                      "bankRoutingNumber": "266231608",
                      "accountNumber": "60480",
                      "accountType": "CHECKING"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Financial instrument created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/create-financial-instrument-response"
                },
                "example": {
                  "financialInstrumentId": "d3cd4f8e-3a6d-46e6-bdb6-0b7f358f2ad8"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-400": {
                    "$ref": "#/components/examples/error-400-example"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Identity not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-404": {
                    "$ref": "#/components/examples/error-404-example"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-500": {
                    "$ref": "#/components/examples/error-500-example"
                  }
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "IdentitiesV3"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "getFinancialInstruments",
        "summary": "Get a list of financial instruments of the identity",
        "description": "List financial instruments for an identity.",
        "parameters": [
          {
            "in": "path",
            "name": "identity-id",
            "required": true,
            "description": "Unique UUID string that maps to an identity",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "version",
            "required": false,
            "description": "Version of the identity",
            "example": "2",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "next-token",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "eyJrZXkxIjoidmFsdWVfMSIsImtleTIiOiJ2YWx1ZTIifQ==",
            "description": "The token to use for the next page of results. If provided, the API will return financial instruments after this token."
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "example": 20,
              "default": 10
            },
            "description": "The maximum number of financial instruments to return. Default is 10, maximum is 100."
          }
        ],
        "responses": {
          "200": {
            "description": "Requested financial instruments of the identity in JSON format",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/list-financial-instruments-response"
                },
                "examples": {
                  "list-fi-v3": {
                    "value": {
                      "data": [
                        {
                          "financialInstrumentId": "7f2bac05-42a3-4b26-89fd-333396fdba70",
                          "financialInstrumentType": "US_ACH",
                          "currency": "USD",
                          "label": "US bank account",
                          "country": "US",
                          "createdAt": "2025-10-01T18:46:47.430Z",
                          "updatedAt": "2025-10-01T18:46:47.430Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-400": {
                    "$ref": "#/components/examples/error-400-example"
                  }
                }
              }
            }
          },
          "404": {
            "description": "No identity or financial instruments found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-404": {
                    "$ref": "#/components/examples/error-404-example"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Processing Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-500": {
                    "$ref": "#/components/examples/error-500-example"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/identities/{identity-id}/financial-instruments/{financial-instrument-id}": {
      "get": {
        "tags": [
          "IdentitiesV3"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "getFinancialInstrumentById",
        "summary": "Get a financial instrument by ID",
        "description": "Retrieves one financial instrument associated with the specified identity.\n\nIn the current release, one instrument is retrieved at most because only a single instrument is allowed per identity.\n",
        "parameters": [
          {
            "name": "identity-id",
            "in": "path",
            "required": true,
            "description": "Unique identifier of the identity whose instruments you want to list.",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "financial-instrument-id",
            "in": "path",
            "required": true,
            "description": "The ID of the financial instrument of the identity.",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "version",
            "required": false,
            "description": "Version of the identity",
            "example": "2",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "expand-identity",
            "in": "query",
            "required": false,
            "description": "Optional parameter to expand the financial instrument details.\nIf set to true, the details about the identity will be included in the response.\n",
            "schema": {
              "type": "boolean",
              "example": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Financial instrument for the identity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/get-financial-instrument-response"
                },
                "examples": {
                  "get-fi-v3": {
                    "value": {
                      "financialInstrument": {
                        "country": "US",
                        "financialInstrumentId": "7f2bac05-42a3-4b26-89fd-333396fdba70",
                        "createdAt": "2025-10-01T18:46:47.430Z",
                        "updatedAt": "2025-10-01T18:46:47.430Z",
                        "usAch": {
                          "bankName": "string",
                          "bankRoutingNumber": "266231608",
                          "accountNumber": "60480",
                          "accountType": "CHECKING"
                        },
                        "currency": "USD",
                        "label": "US bank account",
                        "financialInstrumentType": "US_ACH"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Identity ID or financial instrument ID is not valid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-400": {
                    "$ref": "#/components/examples/error-400-example"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The specified identity-id does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-404": {
                    "$ref": "#/components/examples/error-404-example"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-500": {
                    "$ref": "#/components/examples/error-500-example"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "IdentitiesV3"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "putFinancialInstrument",
        "summary": "Update a financial instrument",
        "description": "Update editable fields of a financial instrument including rail-specific details and labels.\n\nThe financialInstrumentType is immutable after creation.\n",
        "parameters": [
          {
            "name": "identity-id",
            "in": "path",
            "required": true,
            "description": "The unique ID of the identity.",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "financial-instrument-id",
            "in": "path",
            "required": true,
            "description": "The ID of the financial instrument to update.",
            "example": "c7e2f5b4-d1a2-4c3a-9e1b-4d5c6f7e8a9d",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/put-ripple-financial-instrument"
              },
              "examples": {
                "put-label-only": {
                  "summary": "Update label",
                  "value": {
                    "label": "Operating account"
                  }
                },
                "put-ach-details": {
                  "summary": "Update ACH details",
                  "value": {
                    "usAch": {
                      "bankRoutingNumber": "266231608",
                      "accountNumber": 987654321,
                      "accountType": "SAVINGS"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Financial instrument updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/update-financial-instrument-response"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-400": {
                    "$ref": "#/components/examples/error-400-example"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Identity or financial instrument not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-404": {
                    "$ref": "#/components/examples/error-404-example"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflicting resource state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-409": {
                    "$ref": "#/components/examples/error-409-example"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-500": {
                    "$ref": "#/components/examples/error-500-example"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "IdentitiesV3"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "deactivateFinancialInstrumentV3",
        "summary": "Deactivate a Financial Instrument",
        "description": "Deactivate a financial instrument of an Identity.\n\nDeactivation is permanent and prevents further use in payments.\n\nHistorical versions remain available for audit.\n",
        "parameters": [
          {
            "name": "identity-id",
            "in": "path",
            "required": true,
            "description": "The unique ID of the identity.",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "financial-instrument-id",
            "in": "path",
            "required": true,
            "description": "The ID of the financial instrument to deactivate.",
            "example": "c7e2f5b4-d1a2-4c3a-9e1b-4d5c6f7e8a9d",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Financial Instrument deactivated."
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-400": {
                    "$ref": "#/components/examples/error-400-example"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Financial Instrument not found for the identity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-404": {
                    "$ref": "#/components/examples/error-404-example"
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting resource state. Identity/Financial Instrument already deactivated or cannot be deactivated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-409": {
                    "$ref": "#/components/examples/error-409-example"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal processing error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/error-response"
                },
                "examples": {
                  "error-response-500": {
                    "$ref": "#/components/examples/error-500-example"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v2/quotes/quote-collection": {
      "post": {
        "tags": [
          "Quote"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "createQuoteCollection",
        "summary": "Create quote collection",
        "description": "Creates a collection of quotes for a proposed payment.",
        "requestBody": {
          "description": "Create quote collection request",
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteCollectionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Creates a collection of quotes",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The principal identified by the authorization header doesn't have enough scopes to perform this operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          },
          "503": {
            "description": "A maintenance window is in force for this corridor. The error description states when service is expected to resume.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v2/quotes/quote-collection/{quote-collection-id}": {
      "get": {
        "tags": [
          "Quote"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "getQuoteCollection",
        "summary": "Get quote collection",
        "parameters": [
          {
            "in": "path",
            "name": "quote-collection-id",
            "description": "The unique identifier of the quote collection you want to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-aaaa-2222-bbbb-222222222222"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Valid quote collection found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteCollection"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The principal identified by the authorization header doesn't have enough scopes to perform this operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Quote collection not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v2/quotes/{quote-id}": {
      "get": {
        "tags": [
          "Quote"
        ],
        "security": [
          {
            "Bearer": []
          }
        ],
        "operationId": "getQuote",
        "summary": "Get quote",
        "parameters": [
          {
            "in": "path",
            "name": "quote-id",
            "description": "The unique identifier of the quote to retrieve",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "22222222-aaaa-2222-bbbb-222222222222"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Valid quote found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Quote"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "The principal identified by the authorization header doesn't have enough scopes to perform this operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Quote not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v2/balances": {
      "get": {
        "summary": "Get available balances",
        "operationId": "getBalances",
        "tags": [
          "ledger-public"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "currency",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "The currency for which you want to get the balance."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response containing balance details.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Customer available prefund balance details.",
                  "properties": {
                    "timestamp": {
                      "type": "string",
                      "format": "date-time",
                      "example": "2025-01-10T00:00:00.000000Z",
                      "description": "Timestamp of the balance response."
                    },
                    "balances": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "Customer available prefund balance for specific currency",
                        "properties": {
                          "fundingType": {
                            "enum": [
                              "FUNDED"
                            ],
                            "x-enumDescriptions": {
                              "FUNDED": "Indicates that you initiate payments using the funds you added to your account."
                            },
                            "description": "The funding method associated with your account."
                          },
                          "currency": {
                            "type": "string",
                            "example": "USD",
                            "description": "Currency code."
                          },
                          "availableBalance": {
                            "type": "string",
                            "example": "1000.00",
                            "description": "Available funded balance that you can use to initiate payments, represented as a decimal string."
                          },
                          "reservedBalance": {
                            "type": "string",
                            "example": "100.00",
                            "description": "Amount reserved to complete in-progress transactions. You can't use this amount to initiate new payments, represented as a decimal string."
                          }
                        },
                        "required": [
                          "fundingType",
                          "currency",
                          "availableBalance",
                          "reservedBalance"
                        ]
                      },
                      "description": "List of available prefund balances."
                    }
                  },
                  "required": [
                    "timestamp",
                    "balances"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "errors"
                  ],
                  "properties": {
                    "status": {
                      "type": "integer",
                      "description": "The HTTP status code representing the error response",
                      "example": 400
                    },
                    "errors": {
                      "type": "array",
                      "description": "An array containing details about the errors encountered",
                      "items": {
                        "type": "object",
                        "required": [
                          "code",
                          "title",
                          "type",
                          "description",
                          "timestamp"
                        ],
                        "properties": {
                          "code": {
                            "type": "string",
                            "description": "A unique error code that identifies the specific error",
                            "example": "SYS_003"
                          },
                          "type": {
                            "type": "string",
                            "description": "A high-level categorization of the error, indicating the type of issue that occurred",
                            "example": "SYSTEM_ERROR"
                          },
                          "title": {
                            "type": "string",
                            "description": "A brief, user-friendly description of the error",
                            "example": "Internal Server Error"
                          },
                          "description": {
                            "type": "string",
                            "description": "A more detailed explanation of the error, including potential causes and next steps",
                            "example": "The payout category value must be one of BANK, EWALLET, CASH_PICKUP, or ATM."
                          },
                          "timestamp": {
                            "type": "string",
                            "format": "date-time",
                            "description": "The timestamp of the error occurrence",
                            "example": "2024-01-02T14:16:00Z"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "errors"
                  ],
                  "properties": {
                    "status": {
                      "type": "integer",
                      "description": "The HTTP status code representing the error response",
                      "example": 400
                    },
                    "errors": {
                      "type": "array",
                      "description": "An array containing details about the errors encountered",
                      "items": {
                        "type": "object",
                        "required": [
                          "code",
                          "title",
                          "type",
                          "description",
                          "timestamp"
                        ],
                        "properties": {
                          "code": {
                            "type": "string",
                            "description": "A unique error code that identifies the specific error",
                            "example": "SYS_003"
                          },
                          "type": {
                            "type": "string",
                            "description": "A high-level categorization of the error, indicating the type of issue that occurred",
                            "example": "SYSTEM_ERROR"
                          },
                          "title": {
                            "type": "string",
                            "description": "A brief, user-friendly description of the error",
                            "example": "Internal Server Error"
                          },
                          "description": {
                            "type": "string",
                            "description": "A more detailed explanation of the error, including potential causes and next steps",
                            "example": "The payout category value must be one of BANK, EWALLET, CASH_PICKUP, or ATM."
                          },
                          "timestamp": {
                            "type": "string",
                            "format": "date-time",
                            "description": "The timestamp of the error occurrence",
                            "example": "2024-01-02T14:16:00Z"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "errors"
                  ],
                  "properties": {
                    "status": {
                      "type": "integer",
                      "description": "The HTTP status code representing the error response",
                      "example": 400
                    },
                    "errors": {
                      "type": "array",
                      "description": "An array containing details about the errors encountered",
                      "items": {
                        "type": "object",
                        "required": [
                          "code",
                          "title",
                          "type",
                          "description",
                          "timestamp"
                        ],
                        "properties": {
                          "code": {
                            "type": "string",
                            "description": "A unique error code that identifies the specific error",
                            "example": "SYS_003"
                          },
                          "type": {
                            "type": "string",
                            "description": "A high-level categorization of the error, indicating the type of issue that occurred",
                            "example": "SYSTEM_ERROR"
                          },
                          "title": {
                            "type": "string",
                            "description": "A brief, user-friendly description of the error",
                            "example": "Internal Server Error"
                          },
                          "description": {
                            "type": "string",
                            "description": "A more detailed explanation of the error, including potential causes and next steps",
                            "example": "The payout category value must be one of BANK, EWALLET, CASH_PICKUP, or ATM."
                          },
                          "timestamp": {
                            "type": "string",
                            "format": "date-time",
                            "description": "The timestamp of the error occurrence",
                            "example": "2024-01-02T14:16:00Z"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": []
          }
        ]
      }
    },
    "/v2/ledger-transactions": {
      "get": {
        "summary": "Get ledger transactions",
        "operationId": "getStatementsTransactionsForCustomer",
        "tags": [
          "ledger-public"
        ],
        "description": "Retrieve a paginated list of ledger transactions within a specified date and time range. This endpoint returns detailed transaction data, including amounts, references, operations, and running balances.",
        "parameters": [
          {
            "name": "currency",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Three-letter ISO 4217 currency code for the transactions to return (for example, USD).",
            "example": "USD"
          },
          {
            "name": "start-dttm",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Start of the date and time range (inclusive), in UTC, for which you want to retrieve ledger transactions.",
            "example": "2022-02-27T08:30:00Z"
          },
          {
            "name": "end-dttm",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "End of the date and time range (exclusive), in UTC, for which you want to retrieve ledger transactions.",
            "example": "2022-02-27T08:30:00Z"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter results by transaction status. Allowed values:\n- SUCCESS: the ledger transaction completed successfully.\n- PENDING: reserved for future use to represent an in-flight ledger transaction.\n"
          },
          {
            "name": "txnReference",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter results by an exact transaction reference. Use this to locate all ledger transactions associated with a specific external reference."
          },
          {
            "name": "page-size",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50
            },
            "description": "Number of records to return in the response page. Use page-size together with offset for offset-based pagination"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Number of records to skip before starting to return results. Use this with page-size to implement offset-based pagination.\n\nFor example, `offset=25&page-size=25` returns the second page of results.\n"
          },
          {
            "name": "sort-key",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Field to use for sorting the results. Allowed values include:\n- CREATED_AT: sort by transaction creation timestamp.\n- STATEMENT_OPERATION: sort by the operation type (for example, CREDIT, DEBIT).\n- STATEMENT_SOURCE: sort by the transaction source (for example, PAYMENTS, BANK).\n- STATEMENT_STATUS: sort by the ledger transaction status.\n- STATEMENT_TXN_REFERENCE: sort by the transaction reference.\n- STATEMENT_UPDATED_AT: sort by the last update timestamp.\n"
          },
          {
            "name": "sort-direction",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Sort direction. Allowed values:\n- ASC: ascending order.\n- DESC: descending order.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of ledger statement transactions for the customer that match the specified query parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "A page of ledger statement transactions and pagination metadata.",
                  "properties": {
                    "offset": {
                      "type": "string",
                      "description": "Offset used in the request to skip a specific number of records.",
                      "example": "0"
                    },
                    "pageSize": {
                      "type": "string",
                      "description": "Number of records requested per page",
                      "example": "25"
                    },
                    "pageElements": {
                      "type": "string",
                      "description": "Number of records returned in requested page",
                      "example": "25"
                    },
                    "total": {
                      "type": "string",
                      "description": "Total number of records available for the given filters.",
                      "example": "1000"
                    },
                    "statementTransactions": {
                      "type": "array",
                      "description": "Statement transaction details for the customer.",
                      "items": {
                        "type": "object",
                        "properties": {
                          "tenant": {
                            "type": "string",
                            "description": "Identifier of the customer that owns this ledger transaction.",
                            "example": "rocketfuel"
                          },
                          "amount": {
                            "type": "string",
                            "description": "Amount of the transaction applied to the customer's ledger account, represented as a decimal string.",
                            "example": "100.00"
                          },
                          "currency": {
                            "type": "string",
                            "description": "Three-letter ISO 4217 currency code of the transaction.",
                            "example": "USD"
                          },
                          "txnReference": {
                            "type": "string",
                            "nullable": true,
                            "description": "External reference that links this ledger transaction to a payment or other upstream operation.\n"
                          },
                          "operation": {
                            "type": "string",
                            "description": "Operation performed on the customer's prefunded ledger account.",
                            "x-enumDescriptions": {
                              "CREDIT": "Credit to the ledger account.",
                              "RESERVE": "Funds reserved in an intermediate state.",
                              "DEBIT": "Funds debited from the reserved state.",
                              "RELEASE": "Reserved funds released back to the account.",
                              "VOID_PREFUND_BALANCE": "Prefund balance has been voided. [Deprecated]",
                              "OVERRIDE_PREFUND_BALANCE": "Prefund balance has been overridden. [Deprecated]",
                              "VOID_BALANCE": "Balance has been voided.",
                              "OVERRIDE_BALANCE": "Balance has been overridden."
                            }
                          },
                          "txnSource": {
                            "type": "string",
                            "description": "Source of the ledger transaction (for example, which system or flow created it).",
                            "x-enumDescriptions": {
                              "PAYMENTS": "Created by a payments flow.",
                              "BANK": "Created by a bank transaction.",
                              "POSTED_PAYMENT": "Created by a posted payment operation.",
                              "CREDIT_MEMO": "Created by a credit memo.",
                              "MANUAL": "Created manually via API."
                            }
                          },
                          "status": {
                            "type": "string",
                            "description": "State of the ledger transaction.",
                            "x-enumDescriptions": {
                              "SUCCESS": "Ledger transaction completed successfully.",
                              "PENDING": "Reserved for future use to represent an in-flight ledger transaction."
                            }
                          },
                          "createdDttm": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": false,
                            "description": "Timestamp (UTC) when the ledger transaction was created.",
                            "example": "2024-06-01T00:00:00.000000Z"
                          },
                          "updatedDttm": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": false,
                            "description": "Timestamp (UTC) when the ledger transaction was last updated.",
                            "example": "2024-06-01T00:00:00.000000Z"
                          },
                          "availableBalanceBefore": {
                            "type": "string",
                            "description": "Available ledger account balance (in the transaction currency) immediately before this transaction was applied, represented as a decimal string.",
                            "example": "100.00"
                          },
                          "availableBalanceAfter": {
                            "type": "string",
                            "description": "Available ledger account balance (in the transaction currency) immediately after this transaction was applied, represented as a decimal string.",
                            "example": "90.00"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "text/csv": {
                "schema": {
                  "type": "string",
                  "description": "A CSV formatted string containing the ledger transactions.\nColumns include: tenant, amount, currency, txnReference, operation, txnSource, status, createdDttm, updatedDttm, availableBalanceBefore, availableBalanceAfter.\n"
                },
                "example": "tenant,amount,currency,txnReference,operation,txnSource,status,createdDttm,updatedDttm,availableBalanceBefore,availableBalanceAfter\nrpd2demo,2.06,USD,b6176a4a-c89e-44c9-a1c2-acf149c6f013,DEBIT,PAYMENTS,SUCCESS,2025-12-12T23:08:23.399345535Z,2025-12-12T23:08:23.399345704Z,1140833.98234594,1140831.92234594\n"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "errors"
                  ],
                  "properties": {
                    "status": {
                      "type": "integer",
                      "description": "The HTTP status code representing the error response",
                      "example": 400
                    },
                    "errors": {
                      "type": "array",
                      "description": "An array containing details about the errors encountered",
                      "items": {
                        "type": "object",
                        "required": [
                          "code",
                          "title",
                          "type",
                          "description",
                          "timestamp"
                        ],
                        "properties": {
                          "code": {
                            "type": "string",
                            "description": "A unique error code that identifies the specific error",
                            "example": "SYS_003"
                          },
                          "type": {
                            "type": "string",
                            "description": "A high-level categorization of the error, indicating the type of issue that occurred",
                            "example": "SYSTEM_ERROR"
                          },
                          "title": {
                            "type": "string",
                            "description": "A brief, user-friendly description of the error",
                            "example": "Internal Server Error"
                          },
                          "description": {
                            "type": "string",
                            "description": "A more detailed explanation of the error, including potential causes and next steps",
                            "example": "The payout category value must be one of BANK, EWALLET, CASH_PICKUP, or ATM."
                          },
                          "timestamp": {
                            "type": "string",
                            "format": "date-time",
                            "description": "The timestamp of the error occurrence",
                            "example": "2024-01-02T14:16:00Z"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "errors"
                  ],
                  "properties": {
                    "status": {
                      "type": "integer",
                      "description": "The HTTP status code representing the error response",
                      "example": 400
                    },
                    "errors": {
                      "type": "array",
                      "description": "An array containing details about the errors encountered",
                      "items": {
                        "type": "object",
                        "required": [
                          "code",
                          "title",
                          "type",
                          "description",
                          "timestamp"
                        ],
                        "properties": {
                          "code": {
                            "type": "string",
                            "description": "A unique error code that identifies the specific error",
                            "example": "SYS_003"
                          },
                          "type": {
                            "type": "string",
                            "description": "A high-level categorization of the error, indicating the type of issue that occurred",
                            "example": "SYSTEM_ERROR"
                          },
                          "title": {
                            "type": "string",
                            "description": "A brief, user-friendly description of the error",
                            "example": "Internal Server Error"
                          },
                          "description": {
                            "type": "string",
                            "description": "A more detailed explanation of the error, including potential causes and next steps",
                            "example": "The payout category value must be one of BANK, EWALLET, CASH_PICKUP, or ATM."
                          },
                          "timestamp": {
                            "type": "string",
                            "format": "date-time",
                            "description": "The timestamp of the error occurrence",
                            "example": "2024-01-02T14:16:00Z"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "errors"
                  ],
                  "properties": {
                    "status": {
                      "type": "integer",
                      "description": "The HTTP status code representing the error response",
                      "example": 400
                    },
                    "errors": {
                      "type": "array",
                      "description": "An array containing details about the errors encountered",
                      "items": {
                        "type": "object",
                        "required": [
                          "code",
                          "title",
                          "type",
                          "description",
                          "timestamp"
                        ],
                        "properties": {
                          "code": {
                            "type": "string",
                            "description": "A unique error code that identifies the specific error",
                            "example": "SYS_003"
                          },
                          "type": {
                            "type": "string",
                            "description": "A high-level categorization of the error, indicating the type of issue that occurred",
                            "example": "SYSTEM_ERROR"
                          },
                          "title": {
                            "type": "string",
                            "description": "A brief, user-friendly description of the error",
                            "example": "Internal Server Error"
                          },
                          "description": {
                            "type": "string",
                            "description": "A more detailed explanation of the error, including potential causes and next steps",
                            "example": "The payout category value must be one of BANK, EWALLET, CASH_PICKUP, or ATM."
                          },
                          "timestamp": {
                            "type": "string",
                            "format": "date-time",
                            "description": "The timestamp of the error occurrence",
                            "example": "2024-01-02T14:16:00Z"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "BasicAuth": {
        "type": "http",
        "scheme": "basic"
      }
    },
    "schemas": {
      "AuthenticationRequest": {
        "description": "The authentication request.",
        "properties": {
          "client_id": {
            "type": "string",
            "description": "The client ID associated with a specific set of API credentials.",
            "example": "{YOUR_CLIENT_ID}"
          },
          "client_secret": {
            "type": "string",
            "description": "The client secret associated with a specific set of API credentials.",
            "example": "{YOUR_CLIENT_SECRET}"
          },
          "audience": {
            "type": "string",
            "description": "The value of the `audience` field is based on [URN](https://en.wikipedia.org/wiki/Uniform_Resource_Name) syntax.\n\n**Format**: `urn:ripplexcurrent-{ENVIRONMENT_STRING}:{YOUR_TENANT_ID}`\n\n* The first component is `urn:ripplexcurrent-`.\n* The second component refers to the environment you want to access.\n* The third component is your tenant ID. Ripple integration engineers provide this component during training.\n\n| Environment | Environment string | Description |\n| --- | --- | --- |\n| UAT | `uat` | UAT environment with simulated partners and simulated currency. |\n| Production | `prod` | Production environment for Ripple's internal services. |\n\n**Example**: `urn:ripplexcurrent-uat:{YOUR_TENANT_ID}`\n",
            "example": "urn:ripplexcurrent-uat:{YOUR_TENANT_ID}"
          },
          "grant_type": {
            "type": "string",
            "description": "Set the grant-type for this client credentials request. This must be set to `client_credentials`.",
            "enum": [
              "client_credentials"
            ],
            "example": "client_credentials"
          }
        },
        "required": [
          "client_id",
          "client_secret",
          "audience",
          "grant_type"
        ],
        "type": "object"
      },
      "AuthenticationResponse": {
        "description": "The authentication response object that includes the token, type, scopes, and expiry.",
        "properties": {
          "access_token": {
            "type": "string",
            "description": "The bearer token you use when authenticating with a Ripple API.",
            "example": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJ"
          },
          "scope": {
            "type": "string",
            "description": "List of scopes applied to your `access_token`.",
            "example": "pos:payments:create quote_collection:quote:create quote:quote:read pos:payments:read pcs_config:external_read data_requirements:read identities:create identities:read identities:write ledger:balance:read ledger:read"
          },
          "expires_in": {
            "type": "integer",
            "format": "int64",
            "description": "How long your `access_token` is valid. You need to request a new token when it expires.",
            "example": 3600
          },
          "token_type": {
            "type": "string",
            "description": "The type of token. Ripple APIs use `Bearer` auth tokens.",
            "example": "Bearer"
          }
        },
        "type": "object"
      },
      "ErrorResponse": {
        "description": "The response object containing the error and its description if the authentication call fails.",
        "properties": {
          "error_description": {
            "type": "string",
            "description": "Summary of the returned problem.",
            "example": "Unauthorized"
          },
          "error": {
            "type": "string",
            "description": "Error status.",
            "example": "access_denied"
          }
        }
      },
      "ValidateTokenResponse": {
        "description": "The response object indicating a token's validity and the time remaining on it",
        "properties": {
          "message": {
            "type": "string",
            "example": "token_ok"
          },
          "seconds_to_expiry": {
            "type": "integer",
            "format": "int64",
            "description": "Remaining time in seconds before the tested token expires.",
            "example": 3600
          }
        }
      },
      "PaymentErrorResponse": {
        "type": "object",
        "required": [
          "status",
          "errors"
        ],
        "properties": {
          "errors": {
            "description": "List of payment errors",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentError"
            }
          },
          "status": {
            "type": "integer",
            "description": "Error Response Status",
            "example": 400
          }
        }
      },
      "PaymentError": {
        "type": "object",
        "required": [
          "code",
          "title",
          "type",
          "description",
          "timestamp"
        ],
        "properties": {
          "code": {
            "type": "string",
            "description": "A unique identifier for  the error",
            "example": "SYS_090"
          },
          "type": {
            "type": "string",
            "description": "A high-level categorization of the error, indicating the type of issue that occurred",
            "example": "SYSTEM_ERROR"
          },
          "title": {
            "type": "string",
            "description": "A brief, user-friendly description of the error",
            "example": "Internal server error"
          },
          "description": {
            "type": "string",
            "description": "A more detailed explanation of the error, potentially including information about what caused the error and the next steps",
            "example": "Unable to process the request due to an internal server error."
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "example": "2024-11-21T14:15:22Z"
          }
        }
      },
      "PaymentV2": {
        "type": "object",
        "required": [
          "paymentId",
          "paymentState"
        ],
        "properties": {
          "paymentId": {
            "description": "The unique ID that identifies this payment. This value is the same as the quote ID.",
            "type": "string",
            "format": "uuid",
            "maxLength": 36,
            "example": "7ea3399c-1234-5678-8d8f-d320ea406630"
          },
          "cryptoTransactionHash": {
            "description": "Transaction hash of the crypto payment on the destination blockchain network",
            "type": "string",
            "example": "0x2b1f8b57dd6008143ff926ea9d9cd2365774cd0c5e6f379558a88c61c52071eb"
          },
          "initiatedAt": {
            "description": "The time at which the payment was initiated, specified in UTC.",
            "type": "string",
            "format": "date-time",
            "example": "2019-08-24T14:15:22Z"
          },
          "expiresAt": {
            "description": "The time at which this payment expires, specified in UTC.",
            "type": "string",
            "format": "date-time",
            "example": "2019-08-24T14:15:22Z"
          },
          "jitFundingExpiresAt": {
            "description": "The time at which JIT funding for this payment expires, specified in UTC.",
            "type": "string",
            "format": "date-time",
            "example": "2019-08-24T14:15:22Z"
          },
          "lastStateUpdatedAt": {
            "description": "The time at which the payment state was last updated for this payment, specified in UTC.",
            "type": "string",
            "format": "date-time",
            "example": "2019-08-24T14:15:22Z"
          },
          "paymentState": {
            "$ref": "#/components/schemas/PaymentStateV2"
          },
          "originator": {
            "$ref": "#/components/schemas/OriginatorV2"
          },
          "destination": {
            "$ref": "#/components/schemas/DestinationV2"
          },
          "adjustedExchangeRate": {
            "$ref": "#/components/schemas/AdjustedExchangeRate"
          },
          "fees": {
            "type": "array",
            "description": "A summary of fees included in the payment quote.",
            "items": {
              "$ref": "#/components/schemas/FeeSummary"
            }
          },
          "taxes": {
            "type": "array",
            "description": "A summary of taxes included in the payment quote.",
            "items": {
              "$ref": "#/components/schemas/TaxSummary"
            }
          },
          "sourceOfCash": {
            "description": "Source of Cash may be required depending on corridor and payout partner. Valid Source of Cash values vary by corridor.",
            "type": "string",
            "example": "EMIN"
          },
          "purposeCode": {
            "description": "Purpose Code may be required depending on corridor and payout partner. Valid Purpose Code values vary by corridor.",
            "type": "string",
            "example": "PAYR"
          },
          "transactionDetails": {
            "$ref": "#/components/schemas/TransactionDetailsV2"
          },
          "paymentLabels": {
            "$ref": "#/components/schemas/PaymentLabels"
          },
          "receiverRelationship": {
            "description": "The relationship to the debtor.",
            "type": "string",
            "example": "SUBS"
          },
          "paymentMemo": {
            "$ref": "#/components/schemas/PaymentMemo"
          }
        }
      },
      "PaymentWithDetailsV2": {
        "type": "object",
        "required": [
          "paymentId",
          "paymentState"
        ],
        "properties": {
          "paymentId": {
            "description": "The unique ID that identifies this payment. This value is the same as the quote ID.",
            "type": "string",
            "format": "uuid",
            "maxLength": 36,
            "example": "7ea3399c-1234-5678-8d8f-d320ea406630"
          },
          "cryptoTransactionHash": {
            "description": "Transaction hash of the crypto payment on the destination blockchain network",
            "type": "string",
            "example": "0x2b1f8b57dd6008143ff926ea9d9cd2365774cd0c5e6f379558a88c61c52071eb"
          },
          "initiatedAt": {
            "description": "The time at which the payment was initiated, specified in UTC.",
            "type": "string",
            "format": "date-time",
            "example": "2019-08-24T14:15:22Z"
          },
          "expiresAt": {
            "description": "The time at which this payment expires, specified in UTC.",
            "type": "string",
            "format": "date-time",
            "example": "2019-08-24T14:15:22Z"
          },
          "jitFundingExpiresAt": {
            "description": "The time at which JIT funding for this payment expires, specified in UTC.",
            "type": "string",
            "format": "date-time",
            "example": "2019-08-24T14:15:22Z"
          },
          "lastStateUpdatedAt": {
            "description": "The time at which the payment state was last updated for this payment, specified in UTC.",
            "type": "string",
            "format": "date-time",
            "example": "2019-08-24T14:15:22Z"
          },
          "paymentState": {
            "$ref": "#/components/schemas/PaymentStateV2"
          },
          "originator": {
            "$ref": "#/components/schemas/OriginatorV2"
          },
          "destination": {
            "$ref": "#/components/schemas/DestinationV2"
          },
          "adjustedExchangeRate": {
            "$ref": "#/components/schemas/AdjustedExchangeRate"
          },
          "fees": {
            "type": "array",
            "description": "A summary of fees included in payment quote.",
            "items": {
              "$ref": "#/components/schemas/FeeSummary"
            }
          },
          "taxes": {
            "type": "array",
            "description": "A summary of taxes included in the payment quote.",
            "items": {
              "$ref": "#/components/schemas/TaxSummary"
            }
          },
          "sourceOfCash": {
            "description": "Source of Cash may be required depending on corridor and payout partner. Valid Source of Cash values vary by corridor.",
            "type": "string",
            "example": "EMIN"
          },
          "purposeCode": {
            "description": "Purpose Code may be required depending on corridor and payout partner. Valid Purpose Code values vary by corridor.",
            "type": "string",
            "example": "PAYR"
          },
          "transactionDetails": {
            "$ref": "#/components/schemas/TransactionDetailsV2"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentError"
            }
          },
          "paymentLabels": {
            "$ref": "#/components/schemas/PaymentLabels"
          },
          "receiverRelationship": {
            "description": "The relationship to the debtor.",
            "type": "string",
            "example": "SUBS"
          },
          "paymentMemo": {
            "$ref": "#/components/schemas/PaymentMemo"
          },
          "payoutExecutionDetails": {
            "$ref": "#/components/schemas/PayoutExecutionDetails"
          }
        }
      },
      "StateTransitionsResponseV2": {
        "type": "object",
        "properties": {
          "stateTransitions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StateTransitionV2"
            }
          }
        },
        "required": [
          "stateTransitions"
        ]
      },
      "StateTransitionV2": {
        "type": "object",
        "properties": {
          "updatedFrom": {
            "$ref": "#/components/schemas/PaymentStateV2",
            "description": "The initial payment state before it was updated.",
            "example": "INITIATED"
          },
          "updatedTo": {
            "$ref": "#/components/schemas/PaymentStateV2",
            "description": "The payment state after it was updated.",
            "example": "VALIDATING"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp when the payment state was updated.",
            "example": "2024-08-13T20:15:50.990995Z"
          }
        },
        "required": [
          "updatedFrom",
          "updatedTo",
          "updatedAt"
        ]
      },
      "PaymentsResponseV2": {
        "type": "object",
        "properties": {
          "data": {
            "description": "Array of Payment objects",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentV2"
            }
          },
          "filter": {
            "$ref": "#/components/schemas/PaymentFilterV2"
          },
          "sort": {
            "$ref": "#/components/schemas/SortV2"
          },
          "page": {
            "$ref": "#/components/schemas/Page"
          }
        }
      },
      "PaymentRequestV2": {
        "type": "object",
        "required": [
          "quoteId",
          "beneficiaryIdentityId",
          "beneficiaryFinancialInstrumentId"
        ],
        "properties": {
          "quoteId": {
            "description": "ID of the quote you want to accept to initiate this payment. Must be in UUID format. This will be used as paymentId.",
            "type": "string",
            "format": "uuid",
            "example": "7ea3399c-1234-5678-8d8f-d320ea406630"
          },
          "originatorIdentityId": {
            "description": "The identity ID of the payment originator. You can find the identity ID using the `GET /identities` operation.",
            "type": "string",
            "example": "c1e92b47-4579-4a7e-9c9a-02f3e3e4bb11"
          },
          "beneficiaryIdentityId": {
            "description": "The identity ID of the payment beneficiary. You can find the identity ID using the `GET /identities` operation.",
            "type": "string",
            "example": "99254c4f-f207-4792-a846-06928825018c"
          },
          "internalId": {
            "maxLength": 36,
            "description": "Customer defined value, such as an invoice number.",
            "type": "string",
            "example": "Invoice-123"
          },
          "purposeCode": {
            "description": "Purpose Code may be required depending on corridor and payout partner. Valid Purpose Code values vary by corridor.",
            "type": "string",
            "example": "PAYR"
          },
          "sourceOfCash": {
            "description": "Source of Cash may be required depending on corridor and payout partner. Valid Source of Cash values vary by corridor.",
            "type": "string",
            "example": "EMIN"
          },
          "paymentLabels": {
            "$ref": "#/components/schemas/PaymentLabels"
          },
          "beneficiaryFinancialInstrumentId": {
            "description": "The financial instrument ID associated with a payment beneficiary's identity.\nThis value must reference a financial instrument created for the same beneficiary identity using Identity Management v3. Use the `financialInstrumentId` returned when you create or fetch the beneficiary's payout instrument.\n",
            "type": "string",
            "example": "0e0d7b5a-7f2b-4c75-9bb9-8c4d0ff5f2a1"
          },
          "receiverRelationship": {
            "description": "The relationship to the debtor.",
            "type": "string",
            "example": "SUBS"
          },
          "paymentMemo": {
            "$ref": "#/components/schemas/PaymentMemo"
          }
        }
      },
      "PaymentStateV2": {
        "type": "string",
        "example": "INITIATED",
        "description": "Current state of a payment.\n\nThe payment lifecycle currently uses the following values:\n- `QUOTED`\n- `INITIATED`\n- `VALIDATING`\n- `TRANSFERRING`\n- `COMPLETED`\n- `FAILED`\n- `RETURNED`\n- `DECLINED`\n- `AWAITING_FUNDING`\n\nAdditional states may be introduced in the future without breaking existing integrations.\n",
        "x-enumDescriptions": {
          "QUOTED": "A quote has been created, but the payment has not yet been initiated.",
          "INITIATED": "The payment has been submitted and is awaiting validation.",
          "VALIDATING": "Ripple is validating the payment details and reserving funds from the originator's available balance.",
          "TRANSFERRING": "The payment is being processed and funds are moving through the network toward the beneficiary.",
          "COMPLETED": "The payment has completed and the beneficiary has received the funds.",
          "FAILED": "The payment could not be completed. The failure reason, if available, is listed in the response. Funds that were previously reserved to complete the payment are released and added back to the available balance.",
          "RETURNED": "The payment was returned by a downstream institution. The return reason, if available, is listed in the response. Funds that were previously reserved and debited to complete the payment are returned and added back to the available balance.",
          "DECLINED": "The payment was declined due to user input errors or business rule violations. The decline reason, if available, is listed in the response. Funds that were previously reserved to complete the payment are released and added back to the available balance.",
          "AWAITING_FUNDING": "The payment is waiting for funds to be transferred to your Ripple ledger account. This state applies only to just-in-time (JIT) funded payments."
        }
      },
      "PaymentSortFieldV2": {
        "type": "string",
        "description": "The field to use when sorting payments in the requested sort order.\n\nCurrently supported values include:\n- `internalId`\n- `paymentState`\n- `sourceCurrency`\n- `sourceAmount`\n- `destinationCurrency`\n- `destinationCountry`\n- `destinationAmount`\n- `initiatedAt`\n- `expiresAt`\n- `lastStateUpdatedAt`\n- `paymentLabel`\n\nIf an unsupported value is provided, the request fails with a validation error.\n",
        "default": "initiatedAt",
        "example": "initiatedAt",
        "x-enumDescriptions": {
          "internalId": "Internal identifier of a payment",
          "paymentState": "Current state of a payment",
          "sourceCurrency": "Source currency of a payment",
          "sourceAmount": "Source amount of a payment",
          "destinationCurrency": "Destination currency of a payment",
          "destinationCountry": "Destination country of a payment",
          "destinationAmount": "Destination amount of a payment",
          "initiatedAt": "Timestamp when a payment was initiated",
          "expiresAt": "Timestamp when a payment will expire",
          "lastStateUpdatedAt": "Timestamp when a payment state was last updated",
          "paymentLabel": "Label associated with a payment"
        }
      },
      "OriginatorV2": {
        "type": "object",
        "description": "Payment originator and source details.",
        "properties": {
          "originatorIdentityId": {
            "description": "The unique ID associated with the payment originator's identity record.",
            "type": "string",
            "example": "c1e92b47-4579-4a7e-9c9a-02f3e3e4bb11"
          },
          "originatorIdentityIdVersion": {
            "description": "The current version of the originator's identity record.",
            "type": "integer",
            "example": 1
          },
          "originatorIdentityNickName": {
            "description": "The originator's nickname at the identity version this payment references. Editing the nickname later does not change the value returned for this payment.",
            "type": "string",
            "maxLength": 256,
            "example": "Successful Business Sender"
          },
          "internalId": {
            "description": "An ID associated with this payment, if provided by the customer during payment initiation.",
            "type": "string",
            "maxLength": 36,
            "example": "Invoice-123"
          },
          "sourceCurrency": {
            "description": "originator's currency",
            "type": "string",
            "pattern": "^[A-Z]{3,5}$",
            "maxLength": 5,
            "example": "USD"
          },
          "sourceAmount": {
            "description": "The amount sent by the originator in this payment. This field can hold a value with up to 6 decimal places.",
            "type": "number",
            "format": "double",
            "example": 100
          },
          "payin": {
            "description": "Details about how this payment is funded.",
            "type": "string",
            "example": "FUNDED"
          }
        }
      },
      "DestinationV2": {
        "type": "object",
        "properties": {
          "beneficiaryFinancialInstrumentId": {
            "description": "The financial instrument ID, the identity ID of the payment beneficiary is related to.",
            "type": "string",
            "example": "0e0d7b5a-7f2b-4c75-9bb9-8c4d0ff5f2a1"
          },
          "destinationAmount": {
            "description": "The amount received by the payment beneficiary. This field can hold a value with up to 6 decimal places.",
            "type": "number",
            "format": "double",
            "example": 1234.111223
          },
          "destinationCountry": {
            "description": "The country where the beneficiary is located specified in Alpha-2 Code format as defined in the ISO CountryCode ISO 3166-1 list. If the beneficiary is an individual, then this value is their country of residence. If the beneficiary is an institution, then this value is their the country of incorporation.",
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "maxLength": 2,
            "example": "US"
          },
          "destinationCurrency": {
            "description": "The currency code of the currency in which the beneficiary will receive this payment.",
            "type": "string",
            "pattern": "^[A-Z]{3,5}$",
            "maxLength": 5,
            "example": "USD"
          },
          "destinationBlockchainNetwork": {
            "description": "The name of the blockchain network on which the beneficiary will receive this payment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 20,
            "example": "Ethereum, TRON"
          },
          "beneficiaryIdentityId": {
            "description": "The unique ID associated with the payment beneficiary's identity record.",
            "type": "string",
            "example": "99254c4f-f207-4792-a846-06928825018c"
          },
          "beneficiaryIdentityVersion": {
            "description": "The current version of the beneficiary's identity record.",
            "type": "integer",
            "example": 1
          },
          "beneficiaryIdentityNickName": {
            "description": "The beneficiary's nickname at the identity version this payment references. Editing the nickname later does not change the value returned for this payment.",
            "type": "string",
            "maxLength": 256,
            "example": "Successful business beneficiary"
          },
          "payout": {
            "description": "The payout category for this payment.",
            "type": "string",
            "example": "BANK"
          },
          "selectedPaymentRail": {
            "description": "The payment rail the customer selected when accepting the quote for this payment. Reflects the intended routing at the time of quote acceptance. For the rail confirmed by the payout partner at execution time, see `payoutExecutionDetails.paymentRailUsed`. These values may differ if the payout partner executed on an alternate rail.\n",
            "type": "string",
            "example": "XRP_LEDGER"
          }
        }
      },
      "TransactionDetailsV2": {
        "type": "object",
        "description": "A summary of the payment category.",
        "properties": {
          "paymentProduct": {
            "description": "The Ripple payments product used to make this payment.",
            "type": "string",
            "nullable": true,
            "x-enumDescriptions": {
              "LICENSED": "Identifies a transaction using Ripple Payments Direct."
            }
          },
          "flowType": {
            "description": "Specifies the type of payment you're making as categorized by the identity type of the payment originator and beneficiary.",
            "type": "string",
            "nullable": true,
            "x-enumDescriptions": {
              "B2B": "Specifies that this payment is made by a business originator to a business beneficiary.\n</br></br>\n**Identification of third-party payment**:\n  * If the `thirdPartyPayment` property is `true`, it indicates that you're making this payment on behalf of a business originator.\n  * If the `thirdPartyPayment` property is `false`, it indicates that you are the business originator making this payment.\n",
              "B2C": "Specifies that this payment is made by a business originator to an individual beneficiary.\n</br></br>\n**Identification of third-party payment**:\n  * If the `thirdPartyPayment` property is `true`, it indicates that you're making this payment on behalf of a business originator.\n  * If the `thirdPartyPayment` property is `false`, it indicates that you are the business originator making this payment.\n"
            }
          },
          "thirdPartyPayment": {
            "description": "Flag to indicate if this payment is initiated on behalf of a third-party originator.",
            "nullable": true,
            "type": "boolean",
            "example": false
          },
          "businessUseCase": {
            "description": "Indicates the type of payment you're making.",
            "type": "string",
            "nullable": true,
            "x-enumDescriptions": {
              "FIAT_TRANSFER": "Indicates fiat source currency to fiat destination."
            }
          }
        }
      },
      "PayoutExecutionDetails": {
        "type": "object",
        "description": "Metadata about the payout execution, including the payment rail used, timing, and tracking references.\n\n`payoutExecutionDetails` is an optional field that should be treated as informational only. Do not build required workflows that depend on its presence, as availability varies by corridor and partner.\n\nWhen present, `trackingReferences` provides network-specific identifiers useful for audit, reconciliation, or customer inquiry resolution. Use the `referenceType` field on each tracking reference to identify what a value represents rather than relying on its position in the array.\n\nCoverage will expand as additional corridors and partners are onboarded.\n",
        "properties": {
          "paymentRailUsed": {
            "type": "string",
            "description": "The payment rail or network used to execute the payout (e.g., FEDWIRE, ACH, RTP, SEPA, SWIFT).\n",
            "example": "FEDWIRE"
          },
          "payoutStartTime": {
            "type": "string",
            "format": "date-time",
            "description": "The time at which the payout execution started, specified in UTC.\n",
            "example": "2026-02-18T14:22:15.789Z"
          },
          "payoutEndTime": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp when the payout execution completed or was last updated, as reported by the payout partner.\nSpecified in UTC using ISO 8601 format. For in-progress payouts, this may represent the last status update time.\n",
            "example": "2026-02-18T14:25:30.123Z"
          },
          "trackingReferences": {
            "type": "array",
            "description": "A list of tracking references for this transaction, such as transaction IDs and confirmation numbers.\n",
            "items": {
              "$ref": "#/components/schemas/TrackingReference"
            }
          }
        }
      },
      "TrackingReference": {
        "type": "object",
        "description": "A tracking reference provided by the payout partner for this transaction.\n",
        "properties": {
          "referenceType": {
            "type": "string",
            "description": "The type or category of this tracking reference. Known values include IMAD and OMAD for Fedwire transfers, but additional types may be provided depending on the payment rail and payout partner.\n",
            "example": "IMAD"
          },
          "value": {
            "type": "string",
            "description": "The tracking reference value. Use this to locate the transaction with the payout partner or payment rail operator. Format varies by referenceType.",
            "example": "TXN-RTP-20260218-456789"
          },
          "displayName": {
            "type": "string",
            "description": "A human-readable name for this tracking reference, suitable for display in user interfaces.",
            "example": "IMAD Number"
          },
          "description": {
            "type": "string",
            "description": "A detailed description of what this tracking reference represents and how it can be used.",
            "example": "Input Message Accountability Data (IMAD) for Fedwire transfer tracking"
          }
        }
      },
      "Page": {
        "type": "object",
        "description": "Specify page size and the ID of the last fetched result.",
        "properties": {
          "size": {
            "type": "integer",
            "description": "Size of the page",
            "default": 20,
            "minimum": 1,
            "maximum": 100,
            "example": 20
          },
          "lastPageToken": {
            "type": "string",
            "description": "The unique reference ID of the last fetched item. To retrieve subsequent item(s) if any, specify this value as the value of the `Page.list` field in the  `POST /payments/filter` operation request body."
          }
        }
      },
      "SearchPaymentsRequestV2": {
        "type": "object",
        "description": "Request body containing search criteria for payments.",
        "properties": {
          "filter": {
            "$ref": "#/components/schemas/PaymentFilterV2"
          },
          "sort": {
            "$ref": "#/components/schemas/SortV2"
          },
          "page": {
            "$ref": "#/components/schemas/Page"
          }
        }
      },
      "SortV2": {
        "type": "object",
        "description": "Defines the sorting parameters for listing payments, including the field and sort direction.",
        "properties": {
          "sortField": {
            "$ref": "#/components/schemas/PaymentSortFieldV2"
          },
          "sortDirection": {
            "description": "Indicates whether results are sorted in ascending (`ASC`) or descending (`DESC`) order.",
            "type": "string",
            "default": "DESC",
            "example": "DESC",
            "enum": [
              "ASC",
              "DESC"
            ],
            "x-enumDescriptions": {
              "ASC": "Sort results in ascending order.",
              "DESC": "Sort results in descending order."
            }
          }
        }
      },
      "PaymentFilterV2": {
        "type": "object",
        "description": "Filter criteria to return desired payment search results.",
        "properties": {
          "paymentIds": {
            "description": "Specify a list of uuids to search for payment with payment ids equals one from the list",
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid",
              "example": "aaaaaaaa-1111-bbbb-abab-123412341234",
              "maxLength": 36
            }
          },
          "paymentStates": {
            "description": "Array of payment states like `EXECUTING` or `COMPLETED`.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentStateV2"
            }
          },
          "filterRangeType": {
            "description": "Specify a type to filter on. For example, PAYMENT_CREATION, PAYMENT_EXPIRY, or PAYMENT_STATUS_LAST_UPDATED",
            "$ref": "#/components/schemas/PaymentFilterRangeTypeV2"
          },
          "beforeTimestamp": {
            "description": "Depending on the value of the `filterRangeType` field, this timestamp returns a list of payments that were created/modified/expired at or before the specified time.",
            "type": "string",
            "format": "date-time",
            "example": "2024-04-24T14:15:22Z"
          },
          "afterTimestamp": {
            "description": "Depending on the value of the `filterRangeType` field, this timestamp returns a list of payments that were created/modified/expired at or after the specified time.",
            "type": "string",
            "format": "date-time",
            "example": "2024-03-24T13:15:22Z"
          },
          "beneficiaryIdentityIds": {
            "description": "To get all payments made to one or more beneficiaries, specify the identity ID(s) of those beneficiaries in this field. You can find the identity ID using the `GET /identities` operation.",
            "type": "array",
            "items": {
              "type": "string",
              "example": "aaaaaaaa-1111-bbbb-abab-123412341234"
            }
          },
          "internalId": {
            "description": "Specify an `internalId` to get payments associated with them. A prefix match will be executed.",
            "type": "string",
            "maxLength": 36
          },
          "beneficiaryIdentityNickname": {
            "description": "To get all payments made to a beneficiary, specify the nickname of that beneficiary in this field. You can find the nickname using the `GET /identities` operation. The nickname is matched by the identity service, and the payments of every beneficiary it matches are returned.",
            "type": "string",
            "example": "Successful business beneficiary",
            "maxLength": 256
          },
          "destinationCurrencies": {
            "description": "Specify one or more currency codes to get payments where the beneficiary received funds in these currencies.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "pattern": "^[A-Z]{3,5}$"
          },
          "paymentLabels": {
            "$ref": "#/components/schemas/PaymentLabels"
          }
        }
      },
      "PaymentFilterRangeTypeV2": {
        "description": "The type of timestamp to use when filtering payments by a date and time range.\n\nSupported values include:\n- `PAYMENT_CREATION`\n- `PAYMENT_EXPIRY`\n- `PAYMENT_STATUS_LAST_UPDATED`\n\nIf another value is provided, the filter is rejected with a validation error.\n",
        "type": "string",
        "example": "PAYMENT_CREATION",
        "x-enumDescriptions": {
          "PAYMENT_CREATION": "Filter by the time a payment was created",
          "PAYMENT_EXPIRY": "Filter by the time a payment is scheduled to expire",
          "PAYMENT_STATUS_LAST_UPDATED": "Filter by the time a payment state was last updated"
        }
      },
      "PaymentLabels": {
        "description": "Application-defined labels for grouping and categorizing payments (e.g., campaign IDs, workflow tags, or batch identifiers). Labels are optional and mutable; they can be added or removed over the payment's lifetime.",
        "type": "array",
        "maxItems": 10,
        "items": {
          "type": "string",
          "example": "batchId=aaaaaaaa-1111-bbbb-abab-123412341234",
          "maxLength": 100
        }
      },
      "UpdatePaymentLabelsResponse": {
        "type": "object",
        "description": "Response body for modifying payment labels",
        "required": [
          "labels"
        ],
        "properties": {
          "labels": {
            "$ref": "#/components/schemas/PaymentLabels"
          }
        }
      },
      "UpdatePaymentLabelsRequest": {
        "type": "object",
        "description": "Request body containing the list of labels you want to add to or remove from the payment.",
        "properties": {
          "labelsToAdd": {
            "$ref": "#/components/schemas/PaymentLabels"
          },
          "labelsToRemove": {
            "$ref": "#/components/schemas/PaymentLabels"
          }
        }
      },
      "PaymentMemo": {
        "type": "string",
        "description": "Optional, transaction-specific memo carried with the payment for beneficiary reconciliation.\nValidation rules (required, allowed characters, max length) vary by corridor. Consult the data requirements for your corridor.\nNot stored in PII; persisted on the payment object and forwarded to compliance and payout partners.\nWhere possible, the memo will also be delivered to the final beneficiary's credit record, but delivery cannot be guaranteed in all cases due to payout partner or downstream constraints.\nIf omitted, Ripple may generate a memo automatically.\n",
        "example": "ORDER 2025-09-001 PAYMENT"
      },
      "AdjustedExchangeRate": {
        "description": "Foreign Exchange (FX) rate used to calculate the quote.",
        "type": "object",
        "properties": {
          "adjustedRate": {
            "description": "Value of the Foreign Exchange (FX) rate.",
            "type": "number",
            "format": "double",
            "example": 2
          }
        },
        "additionalProperties": false
      },
      "TotalFeeBreakdown": {
        "description": "A breakdown of the total fees included in this quote.",
        "type": "object",
        "properties": {
          "calculatedFee": {
            "description": "Value of the fee when the configured fee unit is applied against the `value`.",
            "type": "number",
            "format": "double",
            "example": 2.43
          },
          "feeName": {
            "description": "The name of the fee.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "example": "Service fee"
          },
          "feeDescription": {
            "description": "Description of the fee.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "example": "The service fee charged for this transaction."
          }
        },
        "additionalProperties": false
      },
      "FeeSummary": {
        "type": "object",
        "description": "A summary of fees included in this quote.",
        "properties": {
          "totalFee": {
            "description": "The value of the total fee included in this quote.",
            "type": "number",
            "format": "double",
            "example": 12.23
          },
          "feeCurrency": {
            "description": "The currency in which fees are charged.",
            "type": "string",
            "pattern": "^[a-zA-Z]{3,5}$",
            "example": "USD"
          },
          "feeBreakdown": {
            "description": "An array of fees that provides a breakdown of how the total fees is calculated for this quote.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TotalFeeBreakdown"
            }
          }
        }
      },
      "TaxBreakdown": {
        "description": "A breakdown of the individual taxes.",
        "type": "object",
        "properties": {
          "taxAmount": {
            "description": "tax amount for this tax line item.",
            "type": "number",
            "format": "double",
            "example": 2.43
          },
          "taxName": {
            "description": "The name of the tax.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "example": "ISS/ VAT/ GST etc"
          },
          "taxDescription": {
            "description": "GST service fee tax .",
            "type": "string",
            "minLength": 1,
            "maxLength": 256,
            "example": "The service fee tax charged for this transaction."
          },
          "taxRate": {
            "description": "The tax rate applied to calculate the tax amount.",
            "type": "number",
            "format": "double",
            "example": 5
          }
        },
        "additionalProperties": false
      },
      "TaxSummary": {
        "type": "object",
        "description": "A summary of taxes included in this quote.",
        "properties": {
          "totalTaxes": {
            "description": "The value of the total taxes included in this quote.",
            "type": "number",
            "format": "double",
            "example": 5.12
          },
          "taxCurrency": {
            "description": "The currency in which taxes are charged.",
            "type": "string",
            "pattern": "^[a-zA-Z]{3,5}$",
            "example": "USD"
          },
          "taxBreakdown": {
            "description": "An array of taxes with details such as tax description, rate, name and tax amount.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxBreakdown"
            }
          }
        }
      },
      "get-identity-response-v3": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ripple-identity"
          }
        ],
        "type": "object",
        "properties": {
          "identityId": {
            "type": "string",
            "description": "Server-generated unique identifier of the identity.",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b"
          },
          "identityState": {
            "$ref": "#/components/schemas/identity-state"
          },
          "nickName": {
            "type": "string",
            "description": "Optional human-readable alias set by the client.",
            "example": "nickName"
          },
          "tags": {
            "type": "array",
            "description": "Optional labels used to categorize or filter identities.",
            "maxItems": 25,
            "items": {
              "type": "string",
              "maxLength": 256,
              "example": "tag1"
            }
          },
          "validatePayoutRails": {
            "type": "array",
            "description": "List of payout methods where this identity is considered valid. Use this to indicate which payout methods (for example, US_ACH, EU_SEPA) the identity can be used with in payments.",
            "items": {
              "$ref": "#/components/schemas/financial-instrument-type"
            }
          },
          "version": {
            "type": "string",
            "description": "Sequential version number. Each successful PUT creates a higher version.",
            "example": 2
          },
          "schemaVersion": {
            "type": "string",
            "description": "Schema version used to validate this identity, for example 1.0.0.",
            "example": "1.0.0"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "RFC 3339 timestamp when the identity was created.",
            "example": "2023-11-02T18:26:00.000Z"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "RFC 3339 timestamp when the identity was last updated.",
            "example": "2023-11-03T18:26:00.000Z"
          }
        }
      },
      "put-identity-request-v3": {
        "allOf": [
          {
            "$ref": "#/components/schemas/put-ripple-identity"
          }
        ],
        "type": "object",
        "properties": {
          "nickName": {
            "type": "string",
            "description": "The new nickname for the identity",
            "example": "nickName"
          },
          "validatePayoutRails": {
            "type": "array",
            "description": "The payment rails to validate the identity against",
            "items": {
              "$ref": "#/components/schemas/financial-instrument-type"
            }
          },
          "tags": {
            "type": "array",
            "description": "Tags are used to categorize the identity.\n",
            "maxItems": 25,
            "items": {
              "type": "string",
              "maxLength": 256,
              "example": "tag1"
            }
          }
        }
      },
      "create-identity-request-v3": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ripple-identity"
          }
        ],
        "type": "object",
        "properties": {
          "nickName": {
            "type": "string",
            "description": "The nickname for the identity",
            "example": "nickName",
            "maxLength": 256
          },
          "validatePayoutRails": {
            "type": "array",
            "description": "The payment rails to validate the identity against",
            "items": {
              "$ref": "#/components/schemas/financial-instrument-type"
            }
          },
          "tags": {
            "type": "array",
            "description": "Tags are used to categorize the identity.\n",
            "maxItems": 25,
            "items": {
              "type": "string",
              "maxLength": 256,
              "example": "tag1"
            }
          }
        }
      },
      "identity-state": {
        "type": "string",
        "description": "The state of the identity\n  * ACTIVE\n  * DEACTIVATED\n",
        "x-enumDescriptions": {
          "ACTIVE": "The identity requested exists and is active.",
          "DEACTIVATED": "The identity requested has been deactivated."
        },
        "example": "ACTIVE"
      },
      "create-identity-response-v3": {
        "type": "object",
        "required": [
          "identityId",
          "version"
        ],
        "properties": {
          "identityId": {
            "type": "string",
            "description": "The unique ID of the identity",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b"
          },
          "version": {
            "type": "string",
            "description": "The version number of the identity",
            "example": "2"
          }
        }
      },
      "error": {
        "type": "object",
        "required": [
          "code",
          "title",
          "type",
          "description",
          "timestamp"
        ],
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Unique identifier of an error",
            "example": "SYS_100"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Error message providing a brief summary of the error",
            "example": "No identity exists for identityId"
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Identifies the problem type",
            "example": "USER_VALIDATION_ERROR"
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024,
            "description": "Provides more technical information",
            "example": "Unable to get identity. Identity ID should be in UUID format"
          },
          "timestamp": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "format": "date-time",
            "description": "The time when this error occurred, specified in UTC.",
            "example": "2023-11-02T18:26:00.000123Z"
          }
        }
      },
      "error-response": {
        "type": "object",
        "required": [
          "status",
          "errors"
        ],
        "properties": {
          "status": {
            "type": "integer",
            "description": "The HTTP status code of the error",
            "example": 404
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/error"
            }
          },
          "timestamp": {
            "type": "string",
            "description": "The timestamp of the error",
            "example": "2023-11-02T18:26:00.000Z"
          }
        }
      },
      "list-identities-response-v3": {
        "type": "object",
        "format": "application/json",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/identity-response-v3"
            },
            "description": "The list of the identities that match the query parameters"
          },
          "nextToken": {
            "type": "string",
            "description": "The token to retrieve the next page of results"
          }
        }
      },
      "create-financial-instrument-response": {
        "type": "object",
        "required": [
          "financialInstrumentId"
        ],
        "properties": {
          "financialInstrumentId": {
            "type": "string",
            "description": "The unique ID of the financial instrument",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b"
          }
        }
      },
      "identity-response-v3": {
        "type": "object",
        "required": [
          "identityId",
          "identityType",
          "paymentRole",
          "createdAt",
          "updatedAt",
          "identityState",
          "version",
          "schemaVersion"
        ],
        "properties": {
          "identityId": {
            "type": "string",
            "description": "The unique ID of the identity",
            "example": "2f4ac57f-c5ba-4051-b51f-b3565778717b"
          },
          "identityType": {
            "$ref": "#/components/schemas/identity-type-v3"
          },
          "paymentRole": {
            "$ref": "#/components/schemas/payment-role"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The time at which the identity was created",
            "example": "2023-11-02T18:26:00.000Z"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The time at which the identity was last updated",
            "example": "2023-11-03T18:26:00.000Z"
          },
          "identityState": {
            "$ref": "#/components/schemas/identity-state"
          },
          "nickName": {
            "type": "string",
            "description": "The nickname for the identity provided at the time of identity creation",
            "example": "nickName"
          },
          "internalId": {
            "type": "string",
            "description": "The client-provided unique identifier supplied when the identity was created or last updated.",
            "example": "customer-12345-uuid"
          },
          "tags": {
            "type": "array",
            "description": "Tags are used to categorize the identity.\n",
            "maxItems": 25,
            "items": {
              "type": "string",
              "maxLength": 256,
              "example": "tag1"
            }
          },
          "version": {
            "type": "integer",
            "description": "The version number of the identity",
            "example": 2
          },
          "schemaVersion": {
            "type": "string",
            "description": "The version of the schema",
            "example": "1.0.0"
          }
        }
      },
      "get-financial-instrument-response": {
        "type": "object",
        "required": [
          "financialInstrument"
        ],
        "description": "This object contains the details of a financial instrument and optional identity if requested.",
        "properties": {
          "financialInstrument": {
            "$ref": "#/components/schemas/ripple-financial-instrument-entry"
          },
          "identity": {
            "$ref": "#/components/schemas/get-identity-response-v3"
          }
        }
      },
      "update-financial-instrument-response": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ripple-financial-instrument-entry"
          }
        ],
        "type": "object",
        "description": "This object contains the details of the updated financial instrument.",
        "required": [
          "financialInstrumentId"
        ]
      },
      "list-financial-instruments-response": {
        "type": "object",
        "format": "application/json",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/financial-instrument-metadata"
            },
            "description": "The list of the financial instruments that match the query parameters"
          },
          "nextToken": {
            "type": "string",
            "description": "The token to retrieve the next page of results"
          }
        }
      },
      "identity-type-v3": {
        "type": "string",
        "x-extensible-enum": [
          "BUSINESS",
          "INDIVIDUAL"
        ],
        "x-enumDescriptions": {
          "BUSINESS": "Identity associated with an institution or business",
          "INDIVIDUAL": "Identity associated with an individual"
        },
        "description": "The type of the identity",
        "example": "BUSINESS"
      },
      "payment-role": {
        "type": "string",
        "x-extensible-enum": [
          "ORIGINATOR",
          "BENEFICIARY"
        ],
        "x-enumDescriptions": {
          "ORIGINATOR": "Refers to originator identity",
          "BENEFICIARY": "Refers to beneficiary identity"
        },
        "description": "The payment role of the identity",
        "example": "BENEFICIARY"
      },
      "business-identity": {
        "type": "object",
        "title": "Business identity",
        "description": "PII data to support business and institutional identities\n",
        "required": [
          "businessName",
          "address"
        ],
        "properties": {
          "businessName": {
            "type": "string",
            "description": "Business Legal Name",
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$",
            "minLength": 1,
            "maxLength": 140,
            "example": "Widgets Org"
          },
          "address": {
            "type": "object",
            "description": "Holds general information about the business",
            "required": [
              "streetAddress",
              "country",
              "city"
            ],
            "properties": {
              "streetAddress": {
                "type": "array",
                "description": "Allows the street address of the business to be held",
                "items": {
                  "type": "string",
                  "description": "Street address of the business",
                  "minLength": 1,
                  "maxLength": 70,
                  "pattern": "^[^\\p{C}\\r\\n<>]+$"
                },
                "example": [
                  "123 Example St. Boston, MA"
                ]
              },
              "country": {
                "type": "string",
                "description": "Allows the country of the business to be held. Use Alpha-2 Code as defined in the [ISO CountryCode ISO 3166-1](https://www.iso.org/obp/ui/#search) list.",
                "minLength": 2,
                "maxLength": 2,
                "pattern": "^[A-Z]+$",
                "example": "US"
              },
              "city": {
                "type": "string",
                "description": "City",
                "minLength": 1,
                "maxLength": 140,
                "pattern": "^(?![ .'-])(?!.*[ .'-]{2})[\\p{L} .'-]+(?<![ .'-])$",
                "example": "Boston"
              },
              "stateOrProvince": {
                "x-requiredByOriginatorFor": [
                  "US_ACH",
                  "US_FEDWIRE",
                  "MX_SPEI",
                  "EU_SEPA",
                  "GB_FPS",
                  "ETH_WALLET",
                  "TRON_WALLET",
                  "SOL_WALLET",
                  "BR_PIX",
                  "CL_TEF",
                  "CO_PSE",
                  "BR_TED",
                  "CA_EFT",
                  "AE_IPI",
                  "KR_KFTC",
                  "IN_NEFT",
                  "PE_LBTR",
                  "CN_CFXPS",
                  "AU_NPP",
                  "JP_ZENGIN",
                  "TH_PROMPTPAY",
                  "AR_INTERBANKING"
                ],
                "x-requiredByBeneficiaryFor": [
                  "US_ACH",
                  "US_FEDWIRE",
                  "MX_SPEI",
                  "EU_SEPA",
                  "GB_FPS",
                  "ETH_WALLET",
                  "TRON_WALLET",
                  "SOL_WALLET",
                  "BR_PIX",
                  "CL_TEF",
                  "CO_PSE",
                  "BR_TED",
                  "CA_EFT",
                  "AE_IPI",
                  "KR_KFTC",
                  "IN_NEFT",
                  "PE_LBTR",
                  "CN_CFXPS",
                  "AU_NPP",
                  "JP_ZENGIN",
                  "TH_PROMPTPAY",
                  "AR_INTERBANKING"
                ],
                "type": "string",
                "description": "State, province, or county of the business address, as defined by postal services.",
                "minLength": 1,
                "maxLength": 140,
                "pattern": "^(?![ .'-])(?!.*[ .'-]{2})[\\p{L}\\p{N} .'-]+(?<![ .'-])$",
                "example": "Massachusetts"
              },
              "postalCode": {
                "x-requiredByOriginatorFor": [
                  "US_ACH",
                  "US_FEDWIRE",
                  "MX_SPEI",
                  "EU_SEPA",
                  "GB_FPS",
                  "ETH_WALLET",
                  "TRON_WALLET",
                  "SOL_WALLET",
                  "BR_PIX",
                  "CL_TEF",
                  "CO_PSE",
                  "BR_TED",
                  "CA_EFT",
                  "AE_IPI",
                  "KR_KFTC",
                  "IN_NEFT",
                  "PE_LBTR",
                  "CN_CFXPS",
                  "AU_NPP",
                  "JP_ZENGIN",
                  "TH_PROMPTPAY",
                  "AR_INTERBANKING"
                ],
                "x-requiredByBeneficiaryFor": [
                  "US_ACH",
                  "US_FEDWIRE",
                  "MX_SPEI",
                  "EU_SEPA",
                  "GB_FPS",
                  "ETH_WALLET",
                  "TRON_WALLET",
                  "SOL_WALLET",
                  "BR_PIX",
                  "CL_TEF",
                  "CO_PSE",
                  "BR_TED",
                  "CA_EFT",
                  "AE_IPI",
                  "KR_KFTC",
                  "IN_NEFT",
                  "PE_LBTR",
                  "CN_CFXPS",
                  "AU_NPP",
                  "JP_ZENGIN",
                  "TH_PROMPTPAY",
                  "AR_INTERBANKING"
                ],
                "type": "string",
                "description": "Postal code for the business",
                "minLength": 3,
                "maxLength": 15,
                "pattern": "^[\\p{L}\\p{N}][\\p{L}\\p{N} -]{1,15}[\\p{L}\\p{N}]$",
                "example": "12345"
              }
            }
          },
          "email": {
            "x-requiredByBeneficiaryFor": [
              "BR_PIX",
              "BR_TED",
              "CO_PSE",
              "CL_TEF",
              "PE_LBTR",
              "AR_INTERBANKING"
            ],
            "x-requiredByOriginatorFor": [
              "BR_PIX",
              "BR_TED",
              "CL_TEF",
              "PE_LBTR",
              "AR_INTERBANKING"
            ],
            "type": "string",
            "description": "Address for electronic mail (e-mail).",
            "format": "email",
            "minLength": 6,
            "maxLength": 255,
            "pattern": "^(?=.{1,254}$)(?:[\\p{L}\\p{N}%+_-]+(?:\\.[\\p{L}\\p{N}%+_-]+)*)@(?:(?:[\\p{L}\\p{N}](?:[\\p{L}\\p{N}-]{0,61}[\\p{L}\\p{N}])?)\\.)+[\\p{L}]{2,63}$",
            "example": "fake@example.com"
          },
          "phone": {
            "x-requiredByBeneficiaryFor": [
              "BR_PIX",
              "BR_TED",
              "NG_BANK_PAYOUT",
              "GH_BANK_PAYOUT",
              "RW_BANK_PAYOUT",
              "ZA_BANK_PAYOUT",
              "UG_BANK_PAYOUT",
              "ZM_BANK_PAYOUT",
              "CO_PSE",
              "KR_KFTC",
              "CL_TEF",
              "IN_NEFT",
              "TH_PROMPTPAY",
              "PE_LBTR",
              "AR_INTERBANKING"
            ],
            "x-requiredByOriginatorFor": [
              "BR_PIX",
              "BR_TED",
              "NG_BANK_PAYOUT",
              "KR_KFTC",
              "CL_TEF",
              "IN_NEFT",
              "GH_BANK_PAYOUT",
              "RW_BANK_PAYOUT",
              "ZA_BANK_PAYOUT",
              "UG_BANK_PAYOUT",
              "ZM_BANK_PAYOUT",
              "TH_PROMPTPAY",
              "PE_LBTR",
              "AR_INTERBANKING"
            ],
            "type": "string",
            "description": "Phone Number",
            "minLength": 8,
            "maxLength": 16,
            "pattern": "^\\+[1-9]\\d+$",
            "example": 1234567890
          },
          "registration": {
            "x-requiredByBeneficiaryFor": [
              "BR_PIX",
              "BR_TED",
              "CO_PSE",
              "CA_EFT",
              "CL_TEF",
              "KR_KFTC",
              "IN_NEFT",
              "TH_PROMPTPAY",
              "PE_LBTR",
              "AR_INTERBANKING"
            ],
            "x-requiredByOriginatorFor": [
              "CA_EFT",
              "BR_PIX",
              "BR_TED",
              "EU_SEPA",
              "CN_CFXPS",
              "GB_FPS",
              "CL_TEF",
              "KR_KFTC",
              "IN_NEFT",
              "AE_IPI",
              "PE_LBTR",
              "TH_PROMPTPAY",
              "AR_INTERBANKING"
            ],
            "type": "array",
            "description": "Unique and unambiguous way to identify a business or organization. An array of objects, each containing unique identification of an organization, as assigned by an institution, using an identification scheme.",
            "items": {
              "type": "object",
              "required": [
                "number",
                "type"
              ],
              "properties": {
                "number": {
                  "type": "string",
                  "description": "The unique identifier of the organization",
                  "example": "123ABC",
                  "minLength": 3,
                  "maxLength": 35,
                  "pattern": "^(?![ .'-\\/])(?!.*[ .'-\\/]{2})([A-Za-z0-9 .'-\\/]+)(?<![ .'-\\/])\\/?$"
                },
                "type": {
                  "type": "string",
                  "x-extensible-enum": [
                    "INCORPORATION_CERTIFICATE",
                    "TAX_ID"
                  ],
                  "x-enumDescriptions": {
                    "INCORPORATION_CERTIFICATE": "Certificate of Incorporation Number",
                    "TAX_ID": "Tax Identification Number"
                  },
                  "x-allowedEnumValuesByOriginatorFor": [
                    {
                      "corridor": "AR_INTERBANKING",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "BR_PIX",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "BR_TED",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "CL_TEF",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "PE_LBTR",
                      "values": [
                        "TAX_ID"
                      ]
                    }
                  ],
                  "x-allowedEnumValuesByBeneficiaryFor": [
                    {
                      "corridor": "AR_INTERBANKING",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "BR_PIX",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "BR_TED",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "CL_TEF",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "CO_PSE",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "ETH_WALLET",
                      "values": [
                        "INCORPORATION_CERTIFICATE"
                      ]
                    },
                    {
                      "corridor": "PE_LBTR",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "SOL_WALLET",
                      "values": [
                        "INCORPORATION_CERTIFICATE"
                      ]
                    },
                    {
                      "corridor": "TRON_WALLET",
                      "values": [
                        "INCORPORATION_CERTIFICATE"
                      ]
                    }
                  ],
                  "description": "Type of business identification document. Accepted values may vary by corridor and payment role. Some corridors accept only a subset of this list. See Ripple Docs for corridor-specific requirements.",
                  "example": "INCORPORATION_CERTIFICATE"
                }
              }
            }
          },
          "incorporationCountry": {
            "x-requiredByBeneficiaryFor": [
              "BR_TED",
              "NG_BANK_PAYOUT",
              "KR_KFTC",
              "CL_TEF",
              "IN_NEFT",
              "GH_BANK_PAYOUT",
              "RW_BANK_PAYOUT",
              "ZA_BANK_PAYOUT",
              "UG_BANK_PAYOUT",
              "ZM_BANK_PAYOUT",
              "TH_PROMPTPAY",
              "PE_LBTR",
              "AR_INTERBANKING"
            ],
            "x-requiredByOriginatorFor": [
              "BR_PIX",
              "BR_TED",
              "CL_TEF",
              "KR_KFTC",
              "IN_NEFT",
              "PE_LBTR",
              "TH_PROMPTPAY",
              "AR_INTERBANKING"
            ],
            "type": "string",
            "description": "Information that locates and identifies the country, as defined by postal services where the organization was incorporated. Use Alpha-2 Code as defined in the ISO CountryCode ISO 3166-1 list.",
            "minLength": 2,
            "maxLength": 2,
            "pattern": "^[A-Z]+$",
            "example": "US"
          },
          "incorporationDate": {
            "x-requiredByOriginatorFor": [
              "KR_KFTC",
              "IN_NEFT",
              "TH_PROMPTPAY"
            ],
            "type": "string",
            "format": "date",
            "description": "The date when the business was incorporated.",
            "example": "2020-01-15"
          },
          "legalEntityType": {
            "x-requiredByOriginatorFor": [
              "BR_PIX"
            ],
            "type": "string",
            "x-extensible-enum": [
              "BANK_CENTRAL",
              "BANK_COMMERCIAL",
              "PAYMENT_INSTITUTION",
              "CORPORATE_PRIVATE",
              "CORPORATE_PUBLIC",
              "GOVERNMENT_ENTITY",
              "NON_PROFIT",
              "SOLE_TRADER"
            ],
            "x-enumDescriptions": {
              "BANK_CENTRAL": "Central Banks and National Monetary Authorities.",
              "BANK_COMMERCIAL": "Traditional regulated banks and credit unions.",
              "PAYMENT_INSTITUTION": "Regulated Fintechs, PSPs, MSBs.",
              "CORPORATE_PRIVATE": "Standard private commercial entities (e.g., LLC, Ltd).",
              "CORPORATE_PUBLIC": "Publicly traded companies listed on a stock exchange.",
              "GOVERNMENT_ENTITY": "Non-financial state bodies",
              "NON_PROFIT": "Charitable Org, NGOs, and foundations.",
              "SOLE_TRADER": "Registered businesses owned/operated by a single individual."
            },
            "description": "Type of legal entity to distinguish between Financial Institutions and Non-Financial Institutions.\n\nThis classification is used to determine regulatory treatment and compliance requirements for certain payment corridors.\n",
            "example": "BANK_CENTRAL"
          },
          "localized": {
            "type": "object",
            "description": "Identity fields supplied in a non-Latin script, in addition to the Latin-script values\nelsewhere on the identity. Populate the script block that the destination corridor\nrequires.\n",
            "properties": {
              "hanzi": {
                "type": "object",
                "description": "Localized identity fields in Chinese Hanzi characters (汉字).",
                "properties": {
                  "businessName": {
                    "type": "string",
                    "description": "Business legal name in Chinese Hanzi characters.\n",
                    "maxLength": 256,
                    "example": "上海示例贸易有限公司"
                  }
                }
              }
            }
          }
        }
      },
      "individual-identity": {
        "type": "object",
        "title": "Individual identity",
        "description": "Data for an individual\n",
        "required": [
          "firstName",
          "lastName",
          "address"
        ],
        "properties": {
          "firstName": {
            "type": "string",
            "description": "First name of the individual",
            "pattern": "^(?![ .'-])(?!.*([ .'-])\\1)[\\p{L} .'-]+(?<![ .'-])$",
            "minLength": 1,
            "maxLength": 140,
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "Last name of the individual",
            "pattern": "^(?![ .'-])(?!.*([ .'-])\\1)[\\p{L} .'-]+(?<![ .'-])$",
            "minLength": 1,
            "maxLength": 140,
            "example": "Smith"
          },
          "address": {
            "type": "object",
            "description": "Holds general information about the individual",
            "required": [
              "streetAddress",
              "country",
              "city"
            ],
            "properties": {
              "streetAddress": {
                "type": "array",
                "description": "Allows the street address of the individual to be held",
                "items": {
                  "type": "string",
                  "description": "Street address of the individual",
                  "minLength": 1,
                  "maxLength": 70,
                  "pattern": "^[^\\p{C}\\r\\n<>]+$"
                },
                "example": [
                  "123 Example St. Boston, MA"
                ]
              },
              "country": {
                "type": "string",
                "description": "Allows the Country of the individual to be held. Use Alpha-2 Code as defined in the [ISO CountryCode ISO 3166-1](https://www.iso.org/obp/ui/#search) list.",
                "minLength": 2,
                "maxLength": 2,
                "pattern": "^[A-Z]+$",
                "example": "US"
              },
              "city": {
                "type": "string",
                "description": "City",
                "minLength": 1,
                "maxLength": 140,
                "pattern": "^(?![ .'-])(?!.*[ .'-]{2})[\\p{L} .'-]+(?<![ .'-])$",
                "example": "Boston"
              },
              "stateOrProvince": {
                "x-requiredByOriginatorFor": [
                  "US_ACH",
                  "US_FEDWIRE",
                  "MX_SPEI",
                  "EU_SEPA",
                  "GB_FPS",
                  "ETH_WALLET",
                  "TRON_WALLET",
                  "SOL_WALLET",
                  "BR_PIX",
                  "CL_TEF",
                  "CO_PSE",
                  "BR_TED",
                  "CA_EFT",
                  "AE_IPI",
                  "KR_KFTC",
                  "IN_NEFT",
                  "PE_LBTR",
                  "CN_CFXPS",
                  "AU_NPP",
                  "JP_ZENGIN",
                  "TH_PROMPTPAY",
                  "AR_INTERBANKING"
                ],
                "x-requiredByBeneficiaryFor": [
                  "US_ACH",
                  "US_FEDWIRE",
                  "MX_SPEI",
                  "EU_SEPA",
                  "GB_FPS",
                  "ETH_WALLET",
                  "TRON_WALLET",
                  "SOL_WALLET",
                  "BR_PIX",
                  "CL_TEF",
                  "CO_PSE",
                  "BR_TED",
                  "CA_EFT",
                  "AE_IPI",
                  "KR_KFTC",
                  "IN_NEFT",
                  "PE_LBTR",
                  "CN_CFXPS",
                  "AU_NPP",
                  "JP_ZENGIN",
                  "TH_PROMPTPAY",
                  "AR_INTERBANKING"
                ],
                "type": "string",
                "description": "Information that locates and identifies the state / county for the party, as defined by postal services",
                "minLength": 1,
                "maxLength": 140,
                "pattern": "^(?![ .'-])(?!.*[ .'-]{2})[\\p{L}\\p{N} .'-]+(?<![ .'-])$",
                "example": "Massachusetts"
              },
              "postalCode": {
                "x-requiredByOriginatorFor": [
                  "US_ACH",
                  "US_FEDWIRE",
                  "MX_SPEI",
                  "EU_SEPA",
                  "GB_FPS",
                  "ETH_WALLET",
                  "TRON_WALLET",
                  "SOL_WALLET",
                  "BR_PIX",
                  "CL_TEF",
                  "CO_PSE",
                  "BR_TED",
                  "CA_EFT",
                  "AE_IPI",
                  "KR_KFTC",
                  "IN_NEFT",
                  "PE_LBTR",
                  "CN_CFXPS",
                  "AU_NPP",
                  "JP_ZENGIN",
                  "TH_PROMPTPAY",
                  "AR_INTERBANKING"
                ],
                "x-requiredByBeneficiaryFor": [
                  "US_ACH",
                  "US_FEDWIRE",
                  "MX_SPEI",
                  "EU_SEPA",
                  "GB_FPS",
                  "ETH_WALLET",
                  "TRON_WALLET",
                  "SOL_WALLET",
                  "BR_PIX",
                  "CL_TEF",
                  "CO_PSE",
                  "BR_TED",
                  "CA_EFT",
                  "AE_IPI",
                  "KR_KFTC",
                  "IN_NEFT",
                  "PE_LBTR",
                  "CN_CFXPS",
                  "AU_NPP",
                  "JP_ZENGIN",
                  "TH_PROMPTPAY",
                  "AR_INTERBANKING"
                ],
                "type": "string",
                "description": "Postal code for the individual's address",
                "minLength": 3,
                "maxLength": 15,
                "pattern": "^[\\p{L}\\p{N}][\\p{L}\\p{N} -]{1,15}[\\p{L}\\p{N}]$",
                "example": "12345"
              }
            }
          },
          "email": {
            "x-requiredByBeneficiaryFor": [
              "BR_PIX",
              "BR_TED",
              "CO_PSE",
              "CL_TEF",
              "PE_LBTR",
              "AR_INTERBANKING"
            ],
            "x-requiredByOriginatorFor": [
              "BR_PIX",
              "CL_TEF",
              "PE_LBTR",
              "AR_INTERBANKING"
            ],
            "type": "string",
            "description": "Address for electronic mail (e-mail).",
            "format": "email",
            "minLength": 6,
            "maxLength": 255,
            "pattern": "^(?=.{1,254}$)(?:[\\p{L}\\p{N}%+_-]+(?:\\.[\\p{L}\\p{N}%+_-]+)*)@(?:(?:[\\p{L}\\p{N}](?:[\\p{L}\\p{N}-]{0,61}[\\p{L}\\p{N}])?)\\.)+[\\p{L}]{2,63}$",
            "example": "fake@example.com"
          },
          "phone": {
            "x-requiredByBeneficiaryFor": [
              "BR_PIX",
              "BR_TED",
              "NG_BANK_PAYOUT",
              "GH_BANK_PAYOUT",
              "RW_BANK_PAYOUT",
              "ZA_BANK_PAYOUT",
              "UG_BANK_PAYOUT",
              "ZM_BANK_PAYOUT",
              "CO_PSE",
              "CL_TEF",
              "KR_KFTC",
              "IN_NEFT",
              "PE_LBTR",
              "TH_PROMPTPAY",
              "AR_INTERBANKING"
            ],
            "x-requiredByOriginatorFor": [
              "BR_PIX",
              "NG_BANK_PAYOUT",
              "KR_KFTC",
              "CL_TEF",
              "IN_NEFT",
              "PE_LBTR",
              "GH_BANK_PAYOUT",
              "RW_BANK_PAYOUT",
              "ZA_BANK_PAYOUT",
              "UG_BANK_PAYOUT",
              "ZM_BANK_PAYOUT",
              "TH_PROMPTPAY",
              "AR_INTERBANKING"
            ],
            "type": "string",
            "description": "Phone Number.\n",
            "minLength": 8,
            "maxLength": 16,
            "pattern": "^\\+[1-9]\\d+$",
            "example": 1234567890
          },
          "identityDocuments": {
            "x-requiredByBeneficiaryFor": [
              "BR_PIX",
              "BR_TED",
              "CO_PSE",
              "KR_KFTC",
              "CL_TEF",
              "IN_NEFT",
              "PE_LBTR",
              "TH_PROMPTPAY",
              "AR_INTERBANKING"
            ],
            "x-requiredByOriginatorFor": [
              "BR_PIX",
              "BR_TED",
              "CL_TEF",
              "KR_KFTC",
              "IN_NEFT",
              "PE_LBTR",
              "TH_PROMPTPAY",
              "AR_INTERBANKING"
            ],
            "x-requiredByJurisdictionForOriginator": [
              "BR"
            ],
            "description": "Identification documents for the identity, such as a passport, national ID, or tax ID. Required for ORIGINATOR and BENEFICIARY identities on some corridors and optional on others; see the Payload schema utility for the corridors that require it. Also required for ORIGINATOR identities when your organization is configured for the Brazil (BR) jurisdiction, on every corridor, including corridors that do not otherwise require it. Jurisdiction comes from your organization's configuration, not from a value in the request. Where the field is required, omitting it fails identity create and update with 400 Bad Request (USR_111).\nFor accepted document types per corridor and role, see Accepted document types by corridor.\n",
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "idNumber",
                "idType"
              ],
              "properties": {
                "idNumber": {
                  "type": "string",
                  "description": "Identification Number.",
                  "minLength": 3,
                  "maxLength": 35,
                  "pattern": "^(?![ .'-\\/])(?!.*[ .'-\\/]{2})([A-Za-z0-9 .'-\\/]+)(?<![ .'-\\/])\\/?$",
                  "example": "123ABC"
                },
                "idType": {
                  "type": "string",
                  "x-extensible-enum": [
                    "ALIEN_REGISTRATION",
                    "CUSTOMER_ID",
                    "DRIVERS_LICENSE",
                    "EMPLOYEE_ID",
                    "NATIONAL_ID_NUMBER",
                    "PASSPORT",
                    "SSN",
                    "TAX_ID"
                  ],
                  "x-enumDescriptions": {
                    "ALIEN_REGISTRATION": "Alien Registration Number",
                    "CUSTOMER_ID": "Customer ID Number",
                    "DRIVERS_LICENSE": "Driver's License Number",
                    "EMPLOYEE_ID": "Employee ID Number",
                    "NATIONAL_ID_NUMBER": "National ID Number",
                    "PASSPORT": "Passport Number",
                    "SSN": "Social Security Number",
                    "TAX_ID": "Tax Identification Number"
                  },
                  "x-allowedEnumValuesByOriginatorFor": [
                    {
                      "corridor": "AR_INTERBANKING",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "AU_NPP",
                      "values": [
                        "PASSPORT"
                      ]
                    },
                    {
                      "corridor": "BR_PIX",
                      "values": [
                        "PASSPORT",
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "BR_TED",
                      "values": [
                        "PASSPORT",
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "CL_TEF",
                      "values": [
                        "PASSPORT",
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "IN_NEFT",
                      "values": [
                        "PASSPORT"
                      ]
                    },
                    {
                      "corridor": "KR_KFTC",
                      "values": [
                        "PASSPORT"
                      ]
                    },
                    {
                      "corridor": "PE_LBTR",
                      "values": [
                        "PASSPORT",
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "TH_PROMPTPAY",
                      "values": [
                        "PASSPORT"
                      ]
                    }
                  ],
                  "x-allowedEnumValuesByBeneficiaryFor": [
                    {
                      "corridor": "AR_INTERBANKING",
                      "values": [
                        "NATIONAL_ID_NUMBER",
                        "SSN"
                      ]
                    },
                    {
                      "corridor": "BR_PIX",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "BR_TED",
                      "values": [
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "CL_TEF",
                      "values": [
                        "NATIONAL_ID_NUMBER",
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "CO_PSE",
                      "values": [
                        "ALIEN_REGISTRATION",
                        "NATIONAL_ID_NUMBER",
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "PE_LBTR",
                      "values": [
                        "NATIONAL_ID_NUMBER",
                        "TAX_ID"
                      ]
                    },
                    {
                      "corridor": "TH_PROMPTPAY",
                      "values": [
                        "ALIEN_REGISTRATION",
                        "DRIVERS_LICENSE",
                        "EMPLOYEE_ID",
                        "NATIONAL_ID_NUMBER",
                        "PASSPORT",
                        "SSN",
                        "TAX_ID"
                      ]
                    }
                  ],
                  "description": "The type of identification document used to identify the identity. Accepted values may vary by corridor and payment role. Some corridors accept only a subset of this list. See Ripple Docs for corridor-specific requirements."
                },
                "expiryDate": {
                  "x-requiredByOriginatorFor": [
                    "IN_NEFT",
                    "KR_KFTC",
                    "TH_PROMPTPAY"
                  ],
                  "type": "string",
                  "format": "date",
                  "description": "Expiration date of the identification document.",
                  "example": "2030-01-15"
                }
              }
            }
          },
          "dateOfBirth": {
            "x-requiredByBeneficiaryFor": [
              "EU_SEPA",
              "GB_FPS",
              "BR_PIX",
              "BR_TED",
              "CA_EFT",
              "CL_TEF",
              "PE_LBTR",
              "AR_INTERBANKING"
            ],
            "x-requiredByOriginatorFor": [
              "EU_SEPA",
              "GB_FPS",
              "BR_PIX",
              "BR_TED",
              "KR_KFTC",
              "CL_TEF",
              "IN_NEFT",
              "PE_LBTR",
              "AE_IPI",
              "TH_PROMPTPAY",
              "AR_INTERBANKING"
            ],
            "type": "string",
            "format": "date",
            "description": "Date of Birth.",
            "example": "2001-01-24"
          },
          "countryOfBirth": {
            "x-requiredByOriginatorFor": [
              "BR_PIX",
              "BR_TED",
              "CL_TEF",
              "PE_LBTR",
              "AR_INTERBANKING"
            ],
            "type": "string",
            "description": "Country of Birth. Use Alpha-2 Code as defined in the [ISO CountryCode ISO 3166-1](https://www.iso.org/obp/ui/#search) list.",
            "minLength": 2,
            "maxLength": 2,
            "pattern": "^[A-Z]+$",
            "example": "US"
          },
          "citizenship": {
            "x-requiredByBeneficiaryFor": [
              "BR_PIX",
              "BR_TED",
              "CL_TEF",
              "IN_NEFT",
              "KR_KFTC",
              "PE_LBTR",
              "TH_PROMPTPAY",
              "AR_INTERBANKING"
            ],
            "x-requiredByOriginatorFor": [
              "BR_PIX",
              "BR_TED",
              "CL_TEF",
              "KR_KFTC",
              "IN_NEFT",
              "PE_LBTR",
              "TH_PROMPTPAY",
              "AR_INTERBANKING"
            ],
            "type": "string",
            "description": "Alpha-2 country code for the nationality of the individual in ISO 3166-1 format.",
            "minLength": 2,
            "maxLength": 2,
            "pattern": "^[A-Z]+$",
            "example": "US"
          },
          "gender": {
            "type": "string",
            "x-extensible-enum": [
              "MALE",
              "FEMALE",
              "OTHER"
            ],
            "x-enumDescriptions": {
              "MALE": "Male identity",
              "FEMALE": "Female identity",
              "OTHER": "Other identity"
            },
            "description": "Gender of the identity.",
            "example": "FEMALE"
          },
          "localized": {
            "type": "object",
            "description": "Identity fields supplied in a non-Latin script, in addition to the Latin-script values\nelsewhere on the identity. Populate the script block that the destination corridor\nrequires.\n",
            "properties": {
              "hanzi": {
                "type": "object",
                "description": "Localized identity fields in Chinese Hanzi characters (汉字).",
                "properties": {
                  "firstName": {
                    "type": "string",
                    "description": "Individual given name in Chinese Hanzi characters.",
                    "maxLength": 32,
                    "example": "伟"
                  },
                  "lastName": {
                    "type": "string",
                    "description": "Individual family name in Chinese Hanzi characters.",
                    "maxLength": 32,
                    "example": "张"
                  },
                  "businessName": {
                    "type": "string",
                    "description": "Business name associated with the individual in Chinese Hanzi characters, for\ntrade payments.\n",
                    "maxLength": 256,
                    "example": "上海示例贸易有限公司"
                  }
                }
              }
            }
          }
        }
      },
      "ripple-identity": {
        "type": "object",
        "required": [
          "identityType",
          "paymentRole"
        ],
        "properties": {
          "identityType": {
            "$ref": "#/components/schemas/identity-type-v3"
          },
          "paymentRole": {
            "$ref": "#/components/schemas/payment-role"
          },
          "internalId": {
            "x-requiredByOriginatorFor": [
              "ALL"
            ],
            "type": "string",
            "description": "Client-provided unique identifier for idempotency and deduplication. Required for\nORIGINATOR identities; optional for BENEFICIARY identities. Must be unique across\nall active identities in your organization. Duplicate values will result in a 409\nConflict error.\n\nThis is your own reference key, not the originator's account number. Use\n`originatorAccountNumber` for that.\n",
            "example": "customer-12345-uuid"
          },
          "originatorAccountNumber": {
            "x-requiredByOriginatorFor": [
              "CN_CFXPS"
            ],
            "type": "string",
            "description": "The originator's account number, or your customer identifier for the originator.\nRequired for ORIGINATOR identities on USD payments to China (`CN_CFXPS`); optional\nelsewhere. Only sent to payout partners for ORIGINATOR identities.\n\nMust be unique across all active identities in your organization, including\nBENEFICIARY identities. Duplicate values return a 409 Conflict error.\n\nCorridor length and character limits apply to this value but are not enforced on\nthis field. See the corridor's Integration resources page.\n",
            "example": "6222021001125874"
          },
          "business": {
            "$ref": "#/components/schemas/business-identity"
          },
          "individual": {
            "$ref": "#/components/schemas/individual-identity"
          }
        }
      },
      "financial-instrument-type": {
        "type": "string",
        "description": "The type of financial instrument or payment rail used for executing the transaction.\nThis determines the structure and validation of account details required for the payout.\n",
        "x-extensible-enum": [
          "US_ACH",
          "US_FEDWIRE",
          "MX_SPEI",
          "EU_SEPA",
          "GB_FPS",
          "NG_BANK_PAYOUT",
          "GH_BANK_PAYOUT",
          "RW_BANK_PAYOUT",
          "ZA_BANK_PAYOUT",
          "UG_BANK_PAYOUT",
          "ZM_BANK_PAYOUT",
          "ETH_WALLET",
          "TRON_WALLET",
          "SOL_WALLET",
          "BR_PIX",
          "CO_PSE",
          "BR_TED",
          "CA_EFT",
          "KR_KFTC",
          "IN_NEFT",
          "AU_NPP",
          "JP_ZENGIN",
          "TH_PROMPTPAY",
          "CN_CFXPS",
          "CL_TEF",
          "PE_LBTR",
          "AE_IPI",
          "AR_INTERBANKING"
        ],
        "x-enumDescriptions": {
          "US_ACH": "Automated Clearing House - U.S. batch processing network used for domestic payments.",
          "US_FEDWIRE": "Fedwire Funds Service - U.S. real-time gross settlement network for high-value domestic USD transfers.",
          "MX_SPEI": "Mexico's real-time interbank transfer system.",
          "EU_SEPA": "European Union's standardized payment system for euro-denominated transactions.",
          "GB_FPS": "Faster Payments Service in the UK for near-instant payments.",
          "NG_BANK_PAYOUT": "Nigeria Bank Payout - A payment method for bank transfers in Nigeria.",
          "GH_BANK_PAYOUT": "Ghana Bank Payout - A payment method for bank transfers in Ghana.",
          "RW_BANK_PAYOUT": "Rwanda Bank Payout - A payment method for bank transfers in Rwanda.",
          "ZA_BANK_PAYOUT": "South Africa Bank Payout - A payment method for bank transfers in South Africa.",
          "UG_BANK_PAYOUT": "Uganda Bank Payout - A payment method for bank transfers in Uganda.",
          "ZM_BANK_PAYOUT": "Zambia Bank Payout - A payment method for bank transfers in Zambia.",
          "ETH_WALLET": "Ethereum-based crypto transactions using blockchain wallet addresses.",
          "TRON_WALLET": "Tron-based crypto transactions using blockchain wallet addresses.",
          "SOL_WALLET": "Solana-based crypto transactions using blockchain wallet addresses.",
          "BR_PIX": "Brazil's instant payment platform developed by the Central Bank of Brazil.",
          "CO_PSE": "Colombia's secure online banking payment system.",
          "BR_TED": "Brazil's Electronic Funds Transfer system for high-value transactions.",
          "CA_EFT": "Canada's Electronic Funds Transfer system for batch processing.",
          "IN_NEFT": "India National Electronic Funds Transfer - bank payout for INR denominated transfers using IFSC routing codes.",
          "AU_NPP": "Australia New Payments Platform - real-time payment rail for AUD-denominated domestic transfers, with Direct Entry (BECS) fallback for high-value and batch.",
          "JP_ZENGIN": "Japan Zengin - multi-rail (Zengin + Zengin Prompt Service) domestic clearing system for JPY-denominated payments.",
          "TH_PROMPTPAY": "Thailand PromptPay - Thailand's national real-time retail payment system for THB domestic bank transfers.",
          "CN_CFXPS": "China Foreign Exchange Payment System, enabling USD business-to-business transfers to China via SWIFT/BIC routing.",
          "CL_TEF": "Chile TEF (Transferencia Electrónica de Fondos) - business-day domestic transfer system for CLP-denominated payments.",
          "PE_LBTR": "Peru LBTR (Liquidación Bruta en Tiempo Real) - real-time settlement system for PEN-denominated payments.",
          "KR_KFTC": "South Korea KFTC - 24/7 real-time payment rail via Korea Financial Telecommunications and Clearings for KRW-denominated payments.",
          "AE_IPI": "United Arab Emirates' Instant Payment Interface for real-time transactions.",
          "AR_INTERBANKING": "Argentina Interbanking - CBU/CVU-based domestic transfer system for ARS-denominated payments."
        },
        "example": "BR_PIX"
      },
      "put-ripple-identity": {
        "type": "object",
        "description": "Request to update an existing identity.\n",
        "properties": {
          "internalId": {
            "x-requiredByOriginatorFor": [
              "ALL"
            ],
            "type": "string",
            "description": "Client-provided unique identifier for idempotency and deduplication. Required for\nORIGINATOR identities; optional for BENEFICIARY identities. Must be unique across\nall active identities in your organization. Duplicate values will result in a 409\nConflict error.\n\nThis is your own reference key, not the originator's account number. Use\n`originatorAccountNumber` for that.\n",
            "example": "customer-12345-uuid"
          },
          "originatorAccountNumber": {
            "x-requiredByOriginatorFor": [
              "CN_CFXPS"
            ],
            "type": "string",
            "description": "The originator's account number, or your customer identifier for the originator.\nRequired for ORIGINATOR identities on USD payments to China (`CN_CFXPS`); optional\nelsewhere. Only sent to payout partners for ORIGINATOR identities.\n\nMust be unique across all active identities in your organization, including\nBENEFICIARY identities. Duplicate values return a 409 Conflict error.\n\nCorridor length and character limits apply to this value but are not enforced on\nthis field. See the corridor's Integration resources page.\n",
            "example": "6222021001125874"
          },
          "business": {
            "$ref": "#/components/schemas/business-identity"
          },
          "individual": {
            "$ref": "#/components/schemas/individual-identity"
          }
        }
      },
      "financial-instrument-currency": {
        "type": "string",
        "description": "The 3-letter ISO currency code of the financial instrument.",
        "example": "MXN",
        "x-extensible-enum": [
          "AED",
          "ARS",
          "AUD",
          "BRL",
          "CAD",
          "CLP",
          "COP",
          "EUR",
          "GBP",
          "GHS",
          "INR",
          "KRW",
          "MXN",
          "NGN",
          "PEN",
          "RWF",
          "UGX",
          "USD",
          "ZAR",
          "ZMW",
          "RLUSD",
          "USDC",
          "USDT"
        ]
      },
      "financial-instrument-metadata": {
        "type": "object",
        "description": "Metadata information for a financial instrument without the payment rail specific details.\nUsed in list operations to provide summary information.\n",
        "required": [
          "financialInstrumentId",
          "financialInstrumentType",
          "currency"
        ],
        "properties": {
          "financialInstrumentId": {
            "type": "string",
            "description": "The unique identifier of the financial instrument.",
            "example": "3fc74743-e7f3-414a-9fcf-eb8c1d52356a"
          },
          "financialInstrumentType": {
            "$ref": "#/components/schemas/financial-instrument-type"
          },
          "currency": {
            "$ref": "#/components/schemas/financial-instrument-currency"
          },
          "label": {
            "type": "string",
            "maxLength": 256,
            "description": "A user-defined label for the financial instrument.",
            "example": "mexico bank account"
          },
          "country": {
            "type": "string",
            "description": "The 2-letter ISO 3166-1 alpha-2 country code of the financial instrument. This field is omitted when no country jurisdiction applies (for example, crypto wallet instruments such as ETH_WALLET, TRON_WALLET, and SOL_WALLET). An absent `country` should be interpreted as \"no applicable jurisdiction\".\n",
            "example": "MX",
            "minLength": 2,
            "maxLength": 2,
            "pattern": "^[A-Z]+$"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The time at which the financial instrument was created",
            "example": "2023-11-02T18:26:00.000Z"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The time at which the financial instrument was last updated",
            "example": "2023-11-03T18:26:00.000Z"
          }
        }
      },
      "us-ach": {
        "type": "object",
        "description": "Rails: RTP, ACH\n\nRail Definitions:\n\nRTP:\n  - Availability: 24/7/365\n  - Limit: $5,000,000\n  - Settlement: <5 minutes\n  - Cut-off time: None\n  - Banking holidays: Not applicable\n\nACH:\n  - Availability: Business days only\n  - Limit: $1,000,000\n  - Settlement: Same-day\n  - Cut-off time: 3:00 PM EST\n  - Banking holidays: U.S. banking holidays apply\n\nRouting Evaluation Order:\n\n  1. RTP\n     - Conditions: beneficiary account is RTP-addressable AND amount ≤ $5,000,000\n  2. ACH\n     - Conditions: otherwise applicable\n",
        "required": [
          "bankName",
          "bankRoutingNumber",
          "accountNumber",
          "accountType"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankRoutingNumber": {
            "type": "string",
            "description": "The identity's bank routing number",
            "minLength": 9,
            "maxLength": 9,
            "pattern": "^\\d+$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number into which the funds must be credited",
            "minLength": 4,
            "maxLength": 21,
            "pattern": "^\\d+$"
          },
          "accountType": {
            "type": "string",
            "x-extensible-enum": [
              "CHECKING",
              "SAVINGS"
            ],
            "x-enumDescriptions": {
              "CHECKING": "Checking account",
              "SAVINGS": "Savings account"
            },
            "description": "The identity's account type."
          }
        }
      },
      "us-fedwire": {
        "type": "object",
        "description": "Rails: FEDWIRE\n\nRail Definitions:\n\nFEDWIRE:\n  - Availability: U.S. business days and operating hours.\n  - Limit: No limit\n  - Settlement: Real-time gross settlement (typically within minutes).\n  - Cut-off time: 5:00 p.m. ET; transfers submitted after cut-off queue for next business day.\n  - Banking holidays: Follows the Federal Reserve holiday schedule.\n",
        "required": [
          "bankName",
          "bankRoutingNumber",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank.",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankRoutingNumber": {
            "type": "string",
            "description": "9-digit ABA Routing Transit Number (RTN) of the beneficiary's bank.",
            "minLength": 9,
            "maxLength": 9,
            "pattern": "^\\d+$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number to be credited.",
            "minLength": 4,
            "maxLength": 21,
            "pattern": "^\\d+$"
          }
        }
      },
      "mx-spei": {
        "description": "Rails: SPEI\n\nRail Definitions:\n\nSPEI:\n- Availability: 24/7/365\n- Limit: None\n- Settlement: Instant\n- Cut-off time: None\n- Banking holidays: Not applicable\n\nRouting Evaluation Order: Not applicable\n",
        "type": "object",
        "required": [
          "bankName",
          "clabe"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "clabe": {
            "type": "string",
            "description": "The identity's CLABE account identification code",
            "minLength": 18,
            "maxLength": 18,
            "pattern": "^\\d+$"
          }
        }
      },
      "eu-sepa": {
        "type": "object",
        "description": "Rails: SCT Inst, SCT\n\nRail Definitions:\n\nSCT Inst:\n- Availability: 24/7/365\n- Limit: €100,000 (bank-dependent)\n- Settlement: Instant\n- Cut-off time: None\n- Banking holidays: Not applicable\n\nSCT:\n- Availability: Business days only\n- Limit: No limit\n- Settlement: T+2 to T+5 \n- Cut-off time: 3:00PM GMT/BST\n- Banking holidays: TARGET2 holidays apply\n\nRouting Evaluation Order:\n\n  1. SCT Inst  \n     - Conditions: beneficiary account is SCT Inst-addressable AND amount ≤ €100,000\n  2. SCT  \n     - Conditions: otherwise applicable\n",
        "required": [
          "bankName",
          "iban"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "iban": {
            "type": "string",
            "description": "The International Bank Account Number (IBAN) of the identity's account",
            "minLength": 15,
            "maxLength": 34,
            "pattern": "^[A-Z]{2}\\d{2}[A-Z0-9]{11,30}$"
          }
        }
      },
      "gb-fps": {
        "type": "object",
        "description": "Rails: FPS, CHAPS\n\nRail Definitions:\n\nFPS:\n- Availability: 24/7/365\n- Limit: £1,000,000\n- Settlement: Instant\n- Cut-off time: None\n- Banking holidays: Not applicable\n\nCHAPS:\n- Availability: Business days only\n- Limit: No limit\n- Settlement: Same-day\n- Cut-off time: Typically 5:00 PM GMT/BST (bank-dependent)\n- Banking holidays: UK banking holidays apply\n\nRouting Evaluation Order:\n  1. FPS  \n     - Conditions: beneficiary account is FPS-addressable AND amount ≤ £1,000,000\n  2. CHAPS  \n     - Conditions: otherwise applicable\n",
        "required": [
          "bankName",
          "sortCode",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "sortCode": {
            "type": "string",
            "description": "The sort code of the identity's bank account",
            "minLength": 6,
            "maxLength": 6,
            "pattern": "^[0-9]+$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The account number of the identity's bank account",
            "minLength": 8,
            "maxLength": 8,
            "pattern": "^[0-9]+$"
          }
        }
      },
      "ng-bank-payout": {
        "type": "object",
        "description": "Rails: Bank Payout\n\nRail Definitions:\n\nBank Payout:\n- Availability: Country-dependant\n- Limit:\n- Nigeria: ₦5,000,000\n- Settlement: Real time to 48 hours\n- Cut-off time: Real time\n- Banking holidays: Nigeria banking holidays apply\n\nRouting Evaluation Order: Not applicable\n",
        "required": [
          "bankName",
          "bankCode",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankCode": {
            "type": "string",
            "description": "Ripple Bank Code (RBC) for the destination bank in Nigeria. See the Bank Codes resource in Ripple Docs for the authoritative list of supported values.",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^([A-Za-z0-9 ._-]+|RPL:[A-Z]{2}:[A-Z0-9]{7,11}(_\\d+)?:(BNK|WAL))$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number associated with the Account Identification Scheme",
            "minLength": 4,
            "maxLength": 21,
            "pattern": "^[a-zA-Z0-9]+$"
          }
        }
      },
      "gh-bank-payout": {
        "type": "object",
        "description": "Rails: GIP\n\nRail Definitions:\n  GIP:\n    - Availability: 24/7/365\n    - Limit: ₵100,000\n    - Settlement: Real time to 48 hours\n    - Cut-off time: Real time\n    - Banking holidays: Applicable\n\nRouting Evaluation Order:\n  1. GIP – Conditions: Account addressability, amount ≤ ₵100,000\n",
        "required": [
          "bankName",
          "bankCode",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankCode": {
            "type": "string",
            "description": "Ripple Bank Code (RBC) for the destination bank in Ghana. See the Bank Codes resource in Ripple Docs for the authoritative list of supported values.",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^([A-Za-z0-9 ._-]+|RPL:[A-Z]{2}:[A-Z0-9]{7,11}(_\\d+)?:(BNK|WAL))$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number associated with the Account Identification Scheme",
            "minLength": 4,
            "maxLength": 21,
            "pattern": "^[a-zA-Z0-9]+$"
          }
        }
      },
      "rw-bank-payout": {
        "type": "object",
        "description": "Rails: RSwitch\n\nRail Definitions:\n  RSwitch:\n    - Availability: 24/7/365\n    - Limit: RWF 10,000,000\n    - Settlement: Real time to 48 hours\n    - Cut-off time: Real time\n    - Banking holidays: Applicable\n\nRouting Evaluation Order:\n  1. RSwitch – Conditions: Account addressability, amount ≤ RWF 10,000,000\n",
        "required": [
          "bankName",
          "bankCode",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankCode": {
            "type": "string",
            "description": "Ripple Bank Code (RBC) for the destination bank in Rwanda. See the Bank Codes resource in Ripple Docs for the authoritative list of supported values.",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^([A-Za-z0-9 ._-]+|RPL:[A-Z]{2}:[A-Z0-9]{7,11}(_\\d+)?:(BNK|WAL))$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number associated with the Account Identification Scheme",
            "minLength": 4,
            "maxLength": 21,
            "pattern": "^[a-zA-Z0-9]+$"
          }
        }
      },
      "za-bank-payout": {
        "type": "object",
        "description": "Rails: Bank Payout\n\nRail Definitions:\n  Bank Payout:\n    - Availability: 24/7/365\n    - Limit: R 300,000\n    - Settlement: Real time to 48 hours\n    - Cut-off time: Real time\n    - Banking holidays: Applicable\n\nRouting Evaluation Order:\n  1. Bank Payout – Conditions: Account addressability, amount ≤ R 300,000\n",
        "required": [
          "bankName",
          "bankCode",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankCode": {
            "type": "string",
            "description": "Ripple Bank Code (RBC) for the destination bank in South Africa. See the Bank Codes resource in Ripple Docs for the authoritative list of supported values.",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^([A-Za-z0-9 ._-]+|RPL:[A-Z]{2}:[A-Z0-9]{7,11}(_\\d+)?:(BNK|WAL))$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number associated with the Account Identification Scheme",
            "minLength": 4,
            "maxLength": 21,
            "pattern": "^[a-zA-Z0-9]+$"
          }
        }
      },
      "ug-bank-payout": {
        "type": "object",
        "description": "Rails: Bank Payout\n\nRail Definitions:\n  Bank Payout:\n    - Availability: 24/7/365\n    - Limit: UGX 20,000\n    - Settlement: Real time to 48 hours\n    - Cut-off time: Real time\n    - Banking holidays: Applicable\n\nRouting Evaluation Order:\n  1. Bank Payout – Conditions: Account addressability, amount ≤ UGX 20,000\n",
        "required": [
          "bankName",
          "bankCode",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankCode": {
            "type": "string",
            "description": "Ripple Bank Code (RBC) for the destination bank in Uganda. See the Bank Codes resource in Ripple Docs for the authoritative list of supported values.",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^([A-Za-z0-9 ._-]+|RPL:[A-Z]{2}:[A-Z0-9]{7,11}(_\\d+)?:(BNK|WAL))$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number associated with the Account Identification Scheme",
            "minLength": 4,
            "maxLength": 21,
            "pattern": "^[a-zA-Z0-9]+$"
          }
        }
      },
      "zm-bank-payout": {
        "type": "object",
        "description": "Rails: Bank Payout\n\nRail Definitions:\n  Bank Payout:\n    - Availability: 24/7/365\n    - Limit: ZK 150,000\n    - Settlement: Real time to 48 hours\n    - Cut-off time: Real time\n    - Banking holidays: Applicable\n\nRouting Evaluation Order:\n  1. Bank Payout – Conditions: Account addressability, amount ≤ ZK 150,000\n",
        "required": [
          "bankName",
          "bankCode",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankCode": {
            "type": "string",
            "description": "Ripple Bank Code (RBC) for the destination bank in Zambia. See the Bank Codes resource in Ripple Docs for the authoritative list of supported values.",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^([A-Za-z0-9 ._-]+|RPL:[A-Z]{2}:[A-Z0-9]{7,11}(_\\d+)?:(BNK|WAL))$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number associated with the Account Identification Scheme",
            "minLength": 4,
            "maxLength": 21,
            "pattern": "^[a-zA-Z0-9]+$"
          }
        }
      },
      "eth-wallet": {
        "type": "object",
        "description": "Rails: CRYPTO\n\nRail Definitions:\n\nCRYPTO:\n  - Availability: 24/7/365\n  - Limit: None\n  - Settlement: Blockchain dependent\n  - Cut-off time: None\n  - Banking holidays: Not applicable\n\nRouting Policy: Not applicable\n",
        "required": [
          "walletAddress",
          "cryptoInstitutionName"
        ],
        "properties": {
          "walletAddress": {
            "type": "string",
            "description": "Receiving wallet address at the exchange",
            "minLength": 42,
            "maxLength": 42,
            "pattern": "^0x[a-fA-F0-9]+$",
            "example": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
          },
          "cryptoInstitutionName": {
            "type": "string",
            "description": "Name of the crypto exchange",
            "example": "Bitso"
          },
          "network": {
            "type": "string",
            "description": "The default name of the blockchain network for this instrument",
            "default": "ETHEREUM",
            "readOnly": true
          },
          "supportedCorridors": {
            "type": "array",
            "readOnly": true,
            "description": "The list of supported corridors for the payout method",
            "items": {
              "type": "string",
              "enum": [
                "ETH_USDT",
                "ETH_USDC",
                "ETH_RLUSD"
              ]
            }
          }
        }
      },
      "tron-wallet": {
        "type": "object",
        "description": "Rails: CRYPTO\n\nRail Definitions:\n\nCRYPTO:\n  - Availability: 24/7/365\n  - Limit: None\n  - Settlement: Blockchain dependent\n  - Cut-off time: None\n  - Banking holidays: Not applicable\n\nRouting Policy: Not applicable\n",
        "required": [
          "walletAddress",
          "cryptoInstitutionName"
        ],
        "properties": {
          "walletAddress": {
            "type": "string",
            "description": "Receiving wallet address at the exchange",
            "minLength": 34,
            "maxLength": 34,
            "pattern": "^T[1-9A-HJ-NP-Za-km-z]+$",
            "example": "T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb"
          },
          "cryptoInstitutionName": {
            "type": "string",
            "description": "Name of the crypto exchange",
            "example": "Bitso"
          },
          "network": {
            "type": "string",
            "description": "The default name of the blockchain network for this instrument",
            "default": "TRON",
            "readOnly": true
          },
          "supportedCorridors": {
            "type": "array",
            "readOnly": true,
            "description": "The list of supported corridors for the payout method",
            "items": {
              "type": "string",
              "enum": [
                "TRON_USDT"
              ]
            }
          }
        }
      },
      "sol-wallet": {
        "type": "object",
        "description": "Rails: CRYPTO\n\nRail Definitions:\n\nCRYPTO:\n  - Availability: 24/7/365\n  - Limit: None\n  - Settlement: Blockchain dependent\n  - Cut-off time: None\n  - Banking holidays: Not applicable\n\nRouting Policy: Not applicable\n",
        "required": [
          "walletAddress",
          "cryptoInstitutionName"
        ],
        "properties": {
          "walletAddress": {
            "type": "string",
            "description": "Receiving wallet address at the exchange",
            "minLength": 32,
            "maxLength": 44,
            "pattern": "^[1-9A-HJ-NP-Za-km-z]+$",
            "example": "7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV"
          },
          "cryptoInstitutionName": {
            "type": "string",
            "description": "Name of the crypto exchange",
            "example": "Bitso"
          },
          "network": {
            "type": "string",
            "description": "The default name of the blockchain network for this instrument",
            "default": "SOLANA",
            "readOnly": true
          },
          "supportedCorridors": {
            "type": "array",
            "readOnly": true,
            "description": "The list of supported corridors for the payout method",
            "items": {
              "type": "string",
              "enum": [
                "SOLANA_USDC"
              ]
            }
          }
        }
      },
      "br-pix": {
        "description": "Rails: PIX\n\nRail Definitions:\n\nPIX:\n- Availability: 24/7/365\n- Limit: No limit\n- Settlement: Instant\n- Cut-off time: None\n- Banking holidays: Not applicable\n\nRouting Evaluation Order: Not applicable\n",
        "type": "object",
        "required": [
          "bankName",
          "branchNumber",
          "pixKey",
          "pixKeyType"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankCode": {
            "type": "string",
            "description": "The code of the identity's bank (BICFI code)",
            "minLength": 8,
            "maxLength": 11,
            "pattern": "^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$"
          },
          "branchNumber": {
            "type": "string",
            "description": "The identity's bank branch number",
            "minLength": 4,
            "maxLength": 6,
            "pattern": "^\\d{4}(-?[0-9X])?$"
          },
          "pixKey": {
            "type": "string",
            "description": "The identity's PIX key, which can be an email, phone number, or a hash",
            "minLength": 6,
            "maxLength": 77,
            "pattern": "(?x) ^( \\+[1-9]\\d{7,15}$ | [\\p{L}\\p{N}._%+\\-]+@[\\p{L}\\p{N}.\\-]+\\.[\\p{L}]{2,} | [0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}- [0-9A-Fa-f]{4}-[0-9A-Fa-f]{12} | \\d{11} | \\d{14} | \\d{3}\\.\\d{3}\\.\\d{3}-\\d{2} | \\d{2}\\.\\d{3}\\.\\d{3}\\/\\d{4}-\\d{2} )$"
          },
          "pixKeyType": {
            "type": "string",
            "x-extensible-enum": [
              "CPF",
              "CNPJ",
              "EMAIL",
              "PHONE",
              "EVP"
            ],
            "x-enumDescriptions": {
              "CPF": "Individual taxpayer registry number",
              "CNPJ": "Legal entity identification number",
              "EMAIL": "Email address",
              "PHONE": "Phone number",
              "EVP": "Bank account"
            },
            "description": "The type of PIX key used by the identity."
          }
        }
      },
      "co-pse": {
        "description": "Rails: PSE\n\nRail Definitions:\n\nPSE:\n- Availability: Business days and banking hours only\n- Limit: None\n- Settlement: \n\t- Major banks (Bancolombia, Davivienda, Banco de Bogotá, BBVA, Grupo Aval, Nequi): 35–100 min\n\t- Other banks (via ACH): Same-day or T+1 depending on cutoff\n- Cut-off time: 3PM COT\n- Banking holidays: Colombia banking holidays apply\n\nRouting Evaluation Order: Not applicable\n",
        "type": "object",
        "required": [
          "bankName",
          "bankCode",
          "accountNumber",
          "accountType"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankCode": {
            "type": "string",
            "description": "The identity's bank identifier code",
            "minLength": 1,
            "maxLength": 4,
            "pattern": "^\\d+$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number associated with the Account Identification Scheme",
            "minLength": 1,
            "maxLength": 20,
            "pattern": "^\\d+$"
          },
          "accountType": {
            "type": "string",
            "x-extensible-enum": [
              "CURRENT",
              "SAVINGS"
            ],
            "x-enumDescriptions": {
              "CURRENT": "Current account",
              "SAVINGS": "Savings account"
            },
            "description": "The type of account associated with the identity."
          }
        }
      },
      "br-ted": {
        "type": "object",
        "description": "Rails: TED\n\nRail Definitions:\n\nTED:\n- Availability: Business days only\n- Limit: No limit\n- Settlement: Same-day\n- Cut-off time: ~5:00 PM BRT \n- Banking holidays: Brazil banking holidays apply\n\nRouting Evaluation Order: Not applicable\n",
        "required": [
          "bankName",
          "bankCode",
          "branchNumber",
          "accountNumber",
          "accountType"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankCode": {
            "type": "string",
            "description": "The code of the identity's bank (BICFI code)",
            "minLength": 8,
            "maxLength": 11,
            "pattern": "^[A-Za-z0-9]+$"
          },
          "branchNumber": {
            "type": "string",
            "description": "The branch number of the identity's bank account",
            "minLength": 4,
            "maxLength": 6,
            "pattern": "^\\d{4}(-?[0-9X])?$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number associated with the Account Identification Scheme",
            "minLength": 5,
            "maxLength": 14,
            "pattern": "^\\d+$"
          },
          "accountType": {
            "type": "string",
            "x-extensible-enum": [
              "CHECKING",
              "SAVINGS"
            ],
            "x-enumDescriptions": {
              "CHECKING": "Checking account",
              "SAVINGS": "Savings account"
            },
            "description": "The identity's account type (Savings, Checking etc.)",
            "example": "SAVINGS"
          }
        }
      },
      "ca-eft": {
        "type": "object",
        "description": "Rails: EFT\n\nRail Definitions:\n\nEFT:\n- Availability: Business days only\n- Limit: CAD 1,000,000\n- Settlement: T+1\n- Cut-off time: ~4:30 PM EST\n- Banking holidays: Canadian banking holidays apply\n\nRouting Evaluation Order: Not applicable\n",
        "required": [
          "bankName",
          "institutionNumber",
          "transitNumber",
          "accountNumber",
          "accountType"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "institutionNumber": {
            "type": "string",
            "description": "The institution number of the identity's bank",
            "minLength": 3,
            "maxLength": 3,
            "pattern": "^\\d+$"
          },
          "transitNumber": {
            "type": "string",
            "description": "The transit number of the identity's bank account",
            "minLength": 5,
            "maxLength": 5,
            "pattern": "^\\d+$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number associated with the Account Identification Scheme",
            "minLength": 7,
            "maxLength": 12,
            "pattern": "^\\d+$"
          },
          "accountType": {
            "type": "string",
            "x-extensible-enum": [
              "CHECKING",
              "SAVINGS"
            ],
            "x-enumDescriptions": {
              "CHECKING": "Checking account",
              "SAVINGS": "Savings account"
            },
            "description": "The identity's account type."
          }
        }
      },
      "kr-kftc": {
        "type": "object",
        "description": "Rails: KFTC (Korea Financial Telecommunications and Clearings)\n\nRail Definitions:\n\nKFTC:\n- Availability: 24/7/365\n- Limit: KRW 10,000,000 per transaction (varies)\n- Settlement: Real-time\n- Cut-off time: None\n- Banking holidays: Not applicable\n\nRouting Evaluation Order: Not applicable\n",
        "required": [
          "bankName",
          "bankCode",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankCode": {
            "type": "string",
            "description": "KFTC-assigned Korean domestic clearing code. See the Bank Codes resource in Ripple Docs for the authoritative list of supported values.",
            "minLength": 1,
            "maxLength": 10,
            "pattern": "^[0-9]+$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's bank account number",
            "minLength": 1,
            "maxLength": 45,
            "pattern": "^[A-Za-z0-9]+$"
          }
        }
      },
      "in-neft": {
        "type": "object",
        "description": "Rails: NEFT (National Electronic Funds Transfer)\n\nRail Definitions:\n\nNEFT:\n- Availability: Business days and banking hours only\n- Limit: No limit\n- Settlement: Same-day (by end of business day)\n- Cut-off time: 7:00 PM IST (varies by bank)\n- Banking holidays: India banking holidays apply\n\nRouting Evaluation Order: Not applicable\n",
        "required": [
          "bankName",
          "ifscCode",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "ifscCode": {
            "type": "string",
            "description": "The 11-character IFSC code of the identity's bank branch",
            "minLength": 11,
            "maxLength": 11,
            "pattern": "^[A-Z]{4}0[A-Z0-9]{6}$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's bank account number",
            "minLength": 4,
            "maxLength": 45,
            "pattern": "^[A-Za-z0-9]+$"
          }
        }
      },
      "pe-lbtr": {
        "type": "object",
        "description": "Rails: LBTR (Sistema de Liquidación Bruta en Tiempo Real)\n\nRail Definitions:\n\nLBTR:\n- Availability: Business days and banking hours only\n- Limit: Minimum Transaction amount is 5 USD\n- Settlement: Same-day\n- Cut-off time: 3:00 PM PET\n- Banking holidays: Peru banking holidays apply\n\nRouting Evaluation Order: Not applicable\n",
        "required": [
          "bankName",
          "swiftCode",
          "accountNumber",
          "accountType"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "swiftCode": {
            "type": "string",
            "description": "SWIFT/BIC code of the identity's bank",
            "minLength": 8,
            "maxLength": 11,
            "pattern": "^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's bank account number",
            "minLength": 10,
            "maxLength": 20,
            "pattern": "^[A-Za-z0-9]+$"
          },
          "accountType": {
            "type": "string",
            "x-extensible-enum": [
              "CHECKING",
              "SAVINGS"
            ],
            "x-enumDescriptions": {
              "CHECKING": "Checking account",
              "SAVINGS": "Savings account"
            },
            "description": "The identity's account type"
          }
        }
      },
      "au-npp": {
        "type": "object",
        "description": "Rails: NPP (New Payments Platform), Direct Entry (DE/BECS)\n\nRail Definitions:\n\nNPP:\n- Availability: 24/7/365\n- Limit: AUD 20,000 per transaction (higher with arrangement)\n- Settlement: Real-time (within 15 minutes)\n- Cut-off time: None\n- Banking holidays: Not applicable\n\nDirect Entry (BECS):\n- Availability: Business days only\n- Limit: No limit\n- Settlement: Same-day or next business day\n- Cut-off time: Bank-dependent\n- Banking holidays: Australian banking holidays apply\n\nRouting Evaluation Order:\n  1. NPP\n     - Conditions: beneficiary account is NPP-addressable AND amount ≤ AUD 20,000\n  2. Direct Entry\n     - Conditions: otherwise applicable\n",
        "required": [
          "bankName",
          "bsbCode",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bsbCode": {
            "type": "string",
            "description": "The 6-digit Bank-State-Branch (BSB) routing code",
            "minLength": 6,
            "maxLength": 6,
            "pattern": "^[0-9]{6}$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's bank account number",
            "minLength": 1,
            "maxLength": 11,
            "pattern": "^\\d+$"
          }
        }
      },
      "jp-zengin": {
        "type": "object",
        "description": "Rails: Zengin, Zengin Prompt Service\n\nRail Definitions:\n\nZengin:\n- Availability: Business days and banking hours only\n- Limit: No limit\n- Settlement: Same-day or next business day\n- Cut-off time: 9:00 PM JST (varies by bank)\n- Banking holidays: Japan banking holidays apply\n\nZengin Prompt Service:\n- Availability: 24/7/365\n- Limit: JPY 1,000,000 (typically)\n- Settlement: Real-time\n- Cut-off time: None\n- Banking holidays: Not applicable\n\nRouting Evaluation Order:\n  1. Zengin Prompt Service\n     - Conditions: beneficiary account is ZPS-addressable AND amount ≤ JPY 1,000,000\n  2. Zengin\n     - Conditions: otherwise applicable\n",
        "required": [
          "bankName",
          "bankCode",
          "branchCode",
          "accountNumber",
          "accountType",
          "accountHolderName"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "accountHolderName": {
            "type": "string",
            "description": "Name of the account holder in Japanese Katakana characters",
            "minLength": 1,
            "maxLength": 100,
            "pattern": "^[\\p{L}\\p{N} .,'&\\/()-]+$"
          },
          "bankCode": {
            "type": "string",
            "description": "Zengin-Net/BOJ-assigned 4-digit Japanese bank code (e.g. 0001 Mizuho Bank, 0005 MUFG Bank). See the Bank Codes resource in Ripple Docs for the authoritative list of supported values.",
            "minLength": 1,
            "maxLength": 16,
            "pattern": "^[A-Za-z0-9]+$"
          },
          "branchCode": {
            "type": "string",
            "description": "Bank-assigned branch code identifying the specific branch",
            "minLength": 1,
            "maxLength": 50,
            "pattern": "^[A-Za-z0-9]+$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's bank account number",
            "minLength": 1,
            "maxLength": 45,
            "pattern": "^[A-Za-z0-9]+$"
          },
          "accountType": {
            "type": "string",
            "x-extensible-enum": [
              "CHECKING",
              "ORDINARY",
              "SAVINGS"
            ],
            "x-enumDescriptions": {
              "CHECKING": "Checking account (当座預金)",
              "ORDINARY": "Ordinary deposit account (普通預金)",
              "SAVINGS": "Savings account (貯蓄預金)"
            },
            "description": "The identity's account type"
          }
        }
      },
      "cn-cfxps": {
        "type": "object",
        "description": "Rails: CFXPS (China Foreign Exchange Payment System)\n\nRail Definitions:\n\nCFXPS:\n- Availability: Business days and banking hours only\n- Limit: No limit (institutional)\n- Settlement: Same-day or next business day\n- Cut-off time: 5:00 PM CST (varies by bank)\n- Banking holidays: China banking holidays apply\n",
        "required": [
          "bankName",
          "swiftCode",
          "accountNumber",
          "accountHolderName"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "Beneficiary Bank Name. Looked up from swiftCode.",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "swiftCode": {
            "type": "string",
            "description": "Beneficiary Bank SWIFT/BIC Code. See the China entry in the bank code lookup in the integration resources for the supported list.",
            "minLength": 8,
            "maxLength": 11,
            "pattern": "^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$"
          },
          "accountNumber": {
            "type": "string",
            "description": "Beneficiary Account Number.",
            "minLength": 1,
            "maxLength": 34,
            "pattern": "^[A-Za-z0-9]+$"
          },
          "accountHolderName": {
            "type": "string",
            "description": "Beneficiary Account Holder Name (English).",
            "minLength": 1,
            "maxLength": 140,
            "pattern": "^[A-Za-z0-9 .,'&\\/()-]+$"
          }
        }
      },
      "cl-tef": {
        "type": "object",
        "description": "Rails: TEF (Transferencia Electrónica de Fondos)\n\nRail Definitions:\n\nTEF:\n- Availability: Business days only\n- Limit: No limit\n- Settlement: Same-day or next business day\n- Cut-off time: 3:00 PM CLT\n- Banking holidays: Chile banking holidays apply\n\nRouting Evaluation Order: Not applicable\n",
        "required": [
          "bankName",
          "swiftCode",
          "accountNumber",
          "accountType"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "swiftCode": {
            "type": "string",
            "description": "SWIFT/BIC code of the identity's bank",
            "minLength": 8,
            "maxLength": 11,
            "pattern": "^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's bank account number",
            "minLength": 6,
            "maxLength": 34,
            "pattern": "^[A-Za-z0-9]+$"
          },
          "accountType": {
            "type": "string",
            "x-extensible-enum": [
              "CHECKING",
              "SAVINGS"
            ],
            "x-enumDescriptions": {
              "CHECKING": "Checking account",
              "SAVINGS": "Savings account"
            },
            "description": "The identity's account type"
          }
        }
      },
      "ae-ipi": {
        "type": "object",
        "description": "Rails: IPI, FTS\n\nRail Definitions:\n\nIPI:\n- Availability: 24/7/365\n- Limit: AED 25,000\n- Settlement: Instant\n- Cut-off time: None\n- Banking holidays: Not applicable\n\nFTS:\n- Availability: Business days only\n- Limit: No limit\n- Settlement: Same-day\n- Cut-off time: ~2:00 PM GST\n- Banking holidays: UAE Central Bank holidays apply\n\nRouting Evaluation Order:\n  1. IPI  \n     - Conditions: beneficiary account is IPI-addressable AND amount ≤ AED 25,000\n  2. FTS  \n     - Conditions: otherwise applicable\n",
        "required": [
          "bankName",
          "iban"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "iban": {
            "type": "string",
            "description": "The International Bank Account Number (IBAN) of the identity's account",
            "minLength": 23,
            "maxLength": 23,
            "pattern": "^AE[0-9]{21}$"
          }
        }
      },
      "th-promptpay": {
        "type": "object",
        "description": "Rails: PromptPay\n\nRail Definitions:\n\nPromptPay (National ITMX):\n  - Availability: 24/7/365\n  - Limit: THB 500,000 per transaction\n  - Settlement: Real-time (within seconds)\n  - Cut-off time: None\n  - Banking holidays: Not applicable\n\nRouting Evaluation Order: Not applicable\n",
        "required": [
          "bankName",
          "bankCode",
          "accountNumber"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$",
            "example": "Bangkok Bank"
          },
          "bankCode": {
            "type": "string",
            "description": "Domestic bank code for the identity's bank in Thailand. See the Bank Codes resource in Ripple Docs for the authoritative list of supported values.",
            "minLength": 1,
            "maxLength": 16,
            "pattern": "^[A-Za-z0-9]+$",
            "example": "002"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's bank account number",
            "minLength": 1,
            "maxLength": 45,
            "pattern": "^[A-Za-z0-9]+$",
            "example": "1234567890"
          }
        }
      },
      "ar-interbanking": {
        "type": "object",
        "description": "Rails: Interbanking\n\nRail Definitions:\n\nInterbanking:\n- Availability: Business days only\n- Limit: ARS 10,000,000\n- Settlement: Same-day or next business day\n- Cut-off time: 3:00 PM ART\n- Banking holidays: Argentina banking holidays apply\n\nRouting Evaluation Order: AR_INTERBANKING has a single payment rail; no routing evaluation order applies.\n",
        "required": [
          "bankName",
          "bankCode",
          "accountNumber",
          "accountType"
        ],
        "properties": {
          "bankName": {
            "type": "string",
            "description": "The name of the identity's bank. Must begin and end with a letter or digit, and consecutive identical punctuation characters are not permitted.",
            "minLength": 2,
            "maxLength": 140,
            "pattern": "^(?![ .,'&\\/()-])(?!.*([ .,'&\\/()-])\\1)[\\p{L}\\p{N} .,'&\\/()-]+(?<![ .,'&\\/-])?$"
          },
          "bankCode": {
            "type": "string",
            "description": "BCRA-assigned 3-digit Argentine bank code. See the Bank Codes resource in Ripple Docs for the authoritative list of supported values.",
            "minLength": 3,
            "maxLength": 3,
            "pattern": "^\\d{3}$"
          },
          "accountNumber": {
            "type": "string",
            "description": "The identity's account number (CBU or CVU)",
            "minLength": 22,
            "maxLength": 22,
            "pattern": "^\\d{22}$"
          },
          "accountType": {
            "type": "string",
            "x-extensible-enum": [
              "CHECKING",
              "SAVINGS"
            ],
            "x-enumDescriptions": {
              "CHECKING": "Checking account (Cuenta Corriente)",
              "SAVINGS": "Savings account (Caja de Ahorro)"
            },
            "description": "The identity's account type"
          }
        }
      },
      "payment-rail-objects": {
        "type": "object",
        "properties": {
          "usAch": {
            "$ref": "#/components/schemas/us-ach"
          },
          "usFedwire": {
            "$ref": "#/components/schemas/us-fedwire"
          },
          "mxSpei": {
            "$ref": "#/components/schemas/mx-spei"
          },
          "euSepa": {
            "$ref": "#/components/schemas/eu-sepa"
          },
          "gbFps": {
            "$ref": "#/components/schemas/gb-fps"
          },
          "ngBankPayout": {
            "$ref": "#/components/schemas/ng-bank-payout"
          },
          "ghBankPayout": {
            "$ref": "#/components/schemas/gh-bank-payout"
          },
          "rwBankPayout": {
            "$ref": "#/components/schemas/rw-bank-payout"
          },
          "zaBankPayout": {
            "$ref": "#/components/schemas/za-bank-payout"
          },
          "ugBankPayout": {
            "$ref": "#/components/schemas/ug-bank-payout"
          },
          "zmBankPayout": {
            "$ref": "#/components/schemas/zm-bank-payout"
          },
          "ethWallet": {
            "$ref": "#/components/schemas/eth-wallet"
          },
          "tronWallet": {
            "$ref": "#/components/schemas/tron-wallet"
          },
          "solWallet": {
            "$ref": "#/components/schemas/sol-wallet"
          },
          "brPix": {
            "$ref": "#/components/schemas/br-pix"
          },
          "coPse": {
            "$ref": "#/components/schemas/co-pse"
          },
          "brTed": {
            "$ref": "#/components/schemas/br-ted"
          },
          "caEft": {
            "$ref": "#/components/schemas/ca-eft"
          },
          "krKftc": {
            "$ref": "#/components/schemas/kr-kftc"
          },
          "inNeft": {
            "$ref": "#/components/schemas/in-neft"
          },
          "peLbtr": {
            "$ref": "#/components/schemas/pe-lbtr"
          },
          "auNpp": {
            "$ref": "#/components/schemas/au-npp"
          },
          "jpZengin": {
            "$ref": "#/components/schemas/jp-zengin"
          },
          "cnCfxps": {
            "$ref": "#/components/schemas/cn-cfxps"
          },
          "clTef": {
            "$ref": "#/components/schemas/cl-tef"
          },
          "aeIpi": {
            "$ref": "#/components/schemas/ae-ipi"
          },
          "thPromptpay": {
            "$ref": "#/components/schemas/th-promptpay"
          },
          "arInterbanking": {
            "$ref": "#/components/schemas/ar-interbanking"
          }
        }
      },
      "ripple-financial-instrument": {
        "type": "object",
        "description": "Request to create a new financial instrument for an identity.\n",
        "allOf": [
          {
            "$ref": "#/components/schemas/payment-rail-objects"
          },
          {
            "type": "object",
            "properties": {
              "currency": {
                "$ref": "#/components/schemas/financial-instrument-currency"
              },
              "label": {
                "type": "string",
                "maxLength": 256,
                "description": "A user-defined label for the financial instrument.",
                "example": "mexico bank account"
              },
              "financialInstrumentType": {
                "$ref": "#/components/schemas/financial-instrument-type"
              }
            }
          }
        ],
        "required": [
          "financialInstrumentType",
          "currency"
        ]
      },
      "ripple-financial-instrument-entry": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ripple-financial-instrument"
          },
          {
            "type": "object",
            "properties": {
              "country": {
                "type": "string",
                "description": "The 2-letter ISO 3166-1 alpha-2 country code of the financial instrument. This field is omitted when no country jurisdiction applies (for example, crypto wallet instruments such as ETH_WALLET, TRON_WALLET, and SOL_WALLET). An absent `country` should be interpreted as \"no applicable jurisdiction\".\n",
                "example": "MX",
                "minLength": 2,
                "maxLength": 2,
                "pattern": "^[A-Z]+$"
              },
              "financialInstrumentId": {
                "type": "string",
                "description": "The unique identifier of the financial instrument.",
                "example": "3fc74743-e7f3-414a-9fcf-eb8c1d52356a"
              },
              "createdAt": {
                "type": "string",
                "format": "date-time",
                "description": "The time at which the financial instrument was created",
                "example": "2023-11-02T18:26:00.000Z"
              },
              "updatedAt": {
                "type": "string",
                "format": "date-time",
                "description": "The time at which the financial instrument was last updated",
                "example": "2023-11-03T18:26:00.000Z"
              }
            }
          }
        ]
      },
      "put-ripple-financial-instrument": {
        "type": "object",
        "description": "Request to update an existing financial instrument of an identity.\n",
        "allOf": [
          {
            "$ref": "#/components/schemas/payment-rail-objects"
          }
        ],
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 256,
            "description": "A user-defined label for the financial instrument.",
            "example": "mexico bank account"
          }
        }
      },
      "QuoteErrorResponse": {
        "type": "object",
        "required": [
          "errors",
          "status"
        ],
        "properties": {
          "errors": {
            "description": "List of quote errors",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuoteError"
            }
          },
          "status": {
            "type": "integer",
            "description": "Response status code"
          }
        },
        "additionalProperties": false
      },
      "QuoteError": {
        "type": "object",
        "required": [
          "code",
          "title",
          "type",
          "description",
          "timestamp"
        ],
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Unique identifier of an error",
            "example": "SYS_100"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Error message providing a brief summary of the error",
            "example": "Unable to process the request due to an internal server error."
          },
          "type": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "Identifies the problem type",
            "example": "USER_VALIDATION_ERROR"
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1024,
            "description": "Provides more technical information",
            "example": "Customer not found"
          },
          "timestamp": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "format": "date-time",
            "description": "The time when this error occurred, specified in UTC.",
            "example": "2023-11-02T18:26:00.000123Z"
          }
        },
        "additionalProperties": false
      },
      "QuoteStatus": {
        "type": "string",
        "enum": [
          "EXPIRED",
          "ACTIVE"
        ],
        "x-enumDescriptions": {
          "EXPIRED": "Expired quote",
          "ACTIVE": "Quote that you can accept to create a payment."
        },
        "example": "ACTIVE"
      },
      "QuoteAmountType": {
        "type": "string",
        "description": "The type of amount for which you want to get a quote.",
        "default": "SOURCE_AMOUNT",
        "enum": [
          "SOURCE_AMOUNT",
          "DESTINATION_AMOUNT"
        ],
        "x-enumDescriptions": {
          "SOURCE_AMOUNT": "Specify this value to get a quote for the amount that you want to send.",
          "DESTINATION_AMOUNT": "Specify this value to get a quote for the amount that the beneficiary should receive."
        }
      },
      "QuoteCollectionRequest": {
        "type": "object",
        "description": "Request to create a quote collection",
        "required": [
          "quoteAmountType",
          "quoteAmount",
          "sourceCurrency",
          "destinationCurrency",
          "payoutCategory",
          "payinCategory"
        ],
        "properties": {
          "quoteAmount": {
            "description": "The amount for which you wish to receive a collection of quotes.",
            "type": "number",
            "format": "double",
            "minimum": 1,
            "example": 123.45
          },
          "quoteAmountType": {
            "$ref": "#/components/schemas/QuoteAmountType"
          },
          "sourceCurrency": {
            "description": "The currency code of the currency that you are sending.",
            "type": "string",
            "pattern": "^[a-zA-Z]{3,5}$",
            "example": "USD"
          },
          "destinationCurrency": {
            "description": "The currency code of the currency in which your beneficiary will receive this payment.",
            "type": "string",
            "pattern": "^[a-zA-Z]{3,5}$",
            "example": "MXN"
          },
          "sourceCountry": {
            "description": "The country code of the country from where you are sending the funds. This is an ISO 3166-1 alpha-2 code.",
            "type": "string",
            "pattern": "^[a-zA-Z]{2}$",
            "example": "US"
          },
          "destinationCountry": {
            "description": "The country where the beneficiary is located specified in Alpha-2 Code format as defined in the ISO CountryCode ISO 3166-1 list. If the beneficiary is an individual, then this value is their country of residence. If the beneficiary is an institution, then this value is their country of incorporation.\n\nRequired for a fiat payout; omitting it returns `USR_017`. Ignored for a stablecoin payout.\n",
            "type": "string",
            "pattern": "^[a-zA-Z]{2}$",
            "example": "PH"
          },
          "payoutCategory": {
            "description": "The name of the payout category.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "x-enumDescriptions": {
              "BANK": "Indicates that the payout will be made in fiat currency to a recipient's bank account through local banking rails.",
              "CRYPTO": "Indicates that the payout will be made in stablecoin to a recipient's crypto wallet address."
            },
            "example": "BANK"
          },
          "payinCategory": {
            "description": "The name of the pay in category indicating how this payment will be funded. The values FUNDED and T_PLUS_ONE are deprecated and will be removed in a future release.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "x-enumDescriptions": {
              "PRE_FUNDING": "Indicates that the payment is being made from funds you've deposited with Ripple.",
              "CREDIT_FUNDING": "Indicates the payment is being made and you will pay the outstanding invoice.",
              "JIT_FUNDING": "Indicates that the payment is being made and you will pay the outstanding amount before the payment expires.",
              "FUNDED": "Indicates that the payment is being made from funds you've deposited with Ripple.",
              "T_PLUS_ONE": "Indicates the payment is being made and you will pay the outstanding invoice."
            },
            "example": "PRE_FUNDING"
          },
          "destinationBlockchainNetwork": {
            "description": "The name of the blockchain network on which the beneficiary will receive this payment. Required for a stablecoin payout; omitting it returns `USR_017`.\n",
            "type": "string",
            "minLength": 1,
            "maxLength": 20,
            "example": "Ethereum"
          }
        },
        "additionalProperties": false
      },
      "Quote": {
        "type": "object",
        "required": [
          "quoteId",
          "quoteStatus",
          "sourceCurrency",
          "destinationCurrency",
          "payoutCategory",
          "payinCategory"
        ],
        "properties": {
          "quoteId": {
            "description": "Unique ID that represents this quote.",
            "type": "string",
            "format": "uuid",
            "minLength": 1,
            "maxLength": 36,
            "example": "7ea3399c-1234-5678-8d8f-d320ea406630"
          },
          "quoteStatus": {
            "$ref": "#/components/schemas/QuoteStatus"
          },
          "quoteAmountType": {
            "$ref": "#/components/schemas/QuoteAmountType"
          },
          "sourceAmount": {
            "description": "Amount to be sent by the originator. The value is rounded to the number of decimal\nplaces defined by the ISO 4217 standard for the source currency (for example, 2 for\nUSD/EUR, 0 for JPY/KRW, 3 for BHD/KWD), using HALF_UP rounding mode.\n",
            "type": "number",
            "format": "double",
            "minimum": 1,
            "example": 123.45
          },
          "destinationAmount": {
            "description": "Amount to be received by the beneficiary. The value is rounded to the number of decimal\nplaces defined by the ISO 4217 standard for the destination currency (for example, 2 for\nUSD/EUR, 0 for JPY/KRW, 3 for BHD/KWD), using HALF_UP rounding mode.\n",
            "type": "number",
            "minimum": 1,
            "format": "double",
            "example": 2438.19
          },
          "sourceCurrency": {
            "description": "The currency code of the currency that you are sending.",
            "type": "string",
            "pattern": "^[a-zA-Z]{3,5}$",
            "example": "USD"
          },
          "destinationCurrency": {
            "description": "The currency code of the currency in which your beneficiary will receive this payment.",
            "type": "string",
            "pattern": "^[a-zA-Z]{3,5}$",
            "example": "MXN"
          },
          "sourceCountry": {
            "description": "The country where the payment originator is located or incorporated, specified in Alpha-2 Code format as defined in the ISO CountryCode ISO 3166-1 list.",
            "type": "string",
            "pattern": "^[a-zA-Z]{2}$",
            "example": "US"
          },
          "destinationCountry": {
            "description": "The country code to which you wish to send the funds. It follows ISO 3166-1 alpha-2 code",
            "type": "string",
            "pattern": "^[a-zA-Z]{2}$",
            "example": "MX"
          },
          "payoutCategory": {
            "description": "Name of the payout category specified in the quote request.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "example": "BANK"
          },
          "payinCategory": {
            "description": "The name of payin category specified in the quote request.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "example": "PRE_FUNDING"
          },
          "adjustedExchangeRate": {
            "$ref": "#/components/schemas/AdjustedExchangeRate"
          },
          "fees": {
            "type": "array",
            "description": "A summary of fees included in this quote.",
            "items": {
              "$ref": "#/components/schemas/FeeSummary"
            }
          },
          "taxes": {
            "type": "array",
            "description": "A summary of taxes included in this quote.",
            "items": {
              "$ref": "#/components/schemas/TaxSummary"
            }
          },
          "createdAt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "format": "date-time",
            "example": "2023-11-02T18:26:00.000123Z",
            "description": "The time when this quote was created, specified in UTC."
          },
          "expiresAt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "format": "date-time",
            "example": "2023-11-02T18:26:00.000123Z",
            "description": "The time when this quote expires, specified in UTC."
          },
          "destinationBlockchainNetwork": {
            "description": "The name of the blockchain network on which the beneficiary will receive this payment.",
            "type": "string",
            "minLength": 1,
            "maxLength": 20,
            "example": "Ethereum"
          },
          "paymentRail": {
            "description": "The payment rail used for this quote.",
            "type": "string",
            "minLength": 1,
            "maxLength": 50,
            "example": "RTP"
          }
        },
        "additionalProperties": false
      },
      "QuoteCollection": {
        "type": "object",
        "required": [
          "quoteCollectionId",
          "quotes"
        ],
        "properties": {
          "quoteCollectionId": {
            "description": "Unique ID that represents this quote collection.",
            "type": "string",
            "minLength": 1,
            "maxLength": 36,
            "format": "uuid",
            "example": "11111111-aaaa-2222-bbbb-222222222222"
          },
          "quotes": {
            "description": "List of quotes",
            "type": "array",
            "minItems": 0,
            "items": {
              "$ref": "#/components/schemas/Quote"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "examples": {
      "error-500-example": {
        "value": {
          "code": "500",
          "category": "APPLICATION",
          "title": "Internal Server Error",
          "detail": "The server encountered an error.",
          "retryable": true
        }
      },
      "error-400-example": {
        "value": {
          "code": "400",
          "category": "CLIENT_ERROR",
          "title": "Bad Request",
          "detail": "Invalid request. Check your request parameters and try again.",
          "retryable": true
        }
      },
      "error-404-example": {
        "value": {
          "code": "404",
          "category": "CLIENT_ERROR",
          "title": "Not Found",
          "detail": "The identity does not exist. Please provide a valid identityId.",
          "retryable": false
        }
      },
      "error-409-example": {
        "value": {
          "code": "409",
          "category": "CLIENT_ERROR",
          "title": "Conflict",
          "detail": "A conflict occurred. The resource already exists or cannot be processed due to a conflict.",
          "retryable": false
        }
      },
      "error-bad-request": {
        "description": "Default response when the request is malformed or a parameter fails validation.",
        "value": {
          "status": 400,
          "errors": [
            {
              "code": "USR_001",
              "type": "USER_ERROR",
              "title": "Bad request",
              "description": "Invalid request. Check your request parameters and try again.",
              "timestamp": "2024-12-01T12:00:00Z"
            }
          ]
        }
      },
      "error-invalid-request-body": {
        "description": "Returned when a field in the request body has an unexpected type or value.",
        "value": {
          "status": 400,
          "errors": [
            {
              "code": "USR_055",
              "type": "USER_ERROR",
              "title": "Invalid request body",
              "description": "Unable to create payment because the request body is empty or contains unexpected characters. Try again with all valid request body.",
              "timestamp": "2024-12-01T12:00:00Z"
            }
          ]
        }
      },
      "error-forbidden": {
        "description": "Returned when the payment exists but is owned by another tenant.",
        "value": {
          "status": 403,
          "errors": [
            {
              "code": "AUTH_051",
              "type": "AUTH_ERROR",
              "title": "Unauthorized",
              "description": "Invalid request. Check your request parameters and try again.",
              "timestamp": "2024-12-01T12:00:00Z"
            }
          ]
        }
      },
      "error-resource-not-found": {
        "description": "Returned when no resource matches the supplied identifier.",
        "value": {
          "status": 404,
          "errors": [
            {
              "code": "USR_002",
              "type": "NOT_FOUND",
              "title": "Resource not found",
              "description": "The requested resource could not be found.",
              "timestamp": "2024-12-01T12:00:00Z"
            }
          ]
        }
      },
      "error-unsupported-media-type": {
        "description": "Returned when the Content-Type header is missing or not supported.",
        "value": {
          "status": 415,
          "errors": [
            {
              "code": "USR_075",
              "type": "USER_ERROR",
              "title": "Missing or unsupported content type",
              "description": "The request is either missing the 'Content-Type' header or the header contains an unsupported value. Set the 'Content-Type' header value to 'application/json' and try again.",
              "timestamp": "2024-12-01T12:00:00Z"
            }
          ]
        }
      },
      "error-insufficient-balance": {
        "description": "Returned when the account does not hold enough balance to fund the payment.",
        "value": {
          "status": 402,
          "errors": [
            {
              "code": "USR_067",
              "type": "USER_ERROR",
              "title": "Insufficient balance",
              "description": "Payment failed due to insufficient balance. Add funds to your account and try again.",
              "timestamp": "2024-12-01T12:00:00Z"
            }
          ]
        }
      },
      "error-internal-server": {
        "description": "Default response for an unhandled server-side failure.",
        "value": {
          "status": 500,
          "errors": [
            {
              "code": "SYS_001",
              "type": "SYSTEM_ERROR",
              "title": "Internal server error",
              "description": "Unable to process the request due to an internal server error.",
              "timestamp": "2024-12-01T12:00:00Z"
            }
          ]
        }
      }
    }
  }
}