{
  "openapi": "3.1.0",
  "info": {
    "title": "Hubpay Connect",
    "description": "OpenAPI documentation for Hubpay Connect. This API allows you to integrate with Hubpay\u0027s services, including payment processing, FX trading, collections, wallets and transaction activity.",
    "contact": {
      "name": "Hubpay",
      "url": "https://hubpay.io/",
      "email": "engineering@hubpay.io"
    },
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://sandbox-api.hubpay.io",
      "description": "Sandbox"
    },
    {
      "url": "https://api.hubpay.io",
      "description": "Production"
    }
  ],
  "security": [
    {
      "Authorization": []
    }
  ],
  "tags": [
    {
      "name": "Webhook management",
      "description": "Operations related to webhook management"
    },
    {
      "name": "Wallets",
      "description": "Operations related to wallets and balances"
    },
    {
      "name": "Authentication",
      "description": "Token generation for registered clients"
    },
    {
      "name": "Payments",
      "description": "Operations related to Payments"
    },
    {
      "name": "Funding accounts",
      "description": "Retrieval of funding accounts on currencies the account holding a wallet"
    },
    {
      "name": "Exchange",
      "description": "Operations related to foreign exchange"
    },
    {
      "name": "Beneficiaries",
      "description": "Beneficiary management"
    },
    {
      "name": "Transactions",
      "description": "Operations related to transactions"
    },
    {
      "name": "Account",
      "description": "Account creation and management"
    },
    {
      "name": "Business Profile",
      "description": "Business profile management"
    },
    {
      "name": "Branding",
      "description": "Account branding configuration"
    },
    {
      "name": "Persons",
      "description": "Related persons management"
    },
    {
      "name": "Corporates",
      "description": "Related corporate entity management"
    },
    {
      "name": "Documents",
      "description": "Document management"
    },
    {
      "name": "Users",
      "description": "User management"
    },
    {
      "name": "Payment Requests",
      "description": "Payment request management"
    },
    {
      "name": "Payers",
      "description": "Payer management"
    },
    {
      "name": "Receipts",
      "description": "Payment receipt management"
    },
    {
      "name": "Rates",
      "description": "Exchange rates for collections"
    }
  ],
  "paths": {
    "/v1/collections/payment-requests/{id}/refresh-session": {
      "put": {
        "tags": [
          "Payment Requests"
        ],
        "summary": "Refresh payment session",
        "description": "Refreshes the payment session token and returns the updated payment request. A refreshed payment session grants 1 hour to view and complete the payment. This endpoint is only applicable for payment requests with an execution mode of HOSTED_PAGE and a status of UNPAID or PART_PAID. If the request does not meet these criteria, a bad request will be returned.",
        "operationId": "refreshPaymentSession",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentRequest"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/collections/payers/{id}": {
      "get": {
        "tags": [
          "Payers"
        ],
        "summary": "Get a payer by ID",
        "operationId": "getPayer",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the payer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the payer",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            },
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payer"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "put": {
        "tags": [
          "Payers"
        ],
        "summary": "Update payer",
        "description": "Overwrites the existing payer with the provided details",
        "operationId": "updatePayer",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the payer",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Unique identifier of the payer",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            },
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayerUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payer"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/beneficiaries/{id}": {
      "get": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Get beneficiary",
        "description": "Fetches the beneficiary details based on provided id",
        "operationId": "getBeneficiary",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the beneficiary",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the beneficiary",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            },
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Beneficiary"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "put": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Update a beneficiary",
        "description": "Update a beneficiary",
        "operationId": "updateBeneficiary",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the beneficiary",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the beneficiary",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            },
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BeneficiaryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Beneficiary"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/users/{id}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get user",
        "description": "Get a user linked to the account",
        "operationId": "getUser",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the user",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the user",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "put": {
        "tags": [
          "Users"
        ],
        "summary": "Update user",
        "description": "Update user display name and blocked status",
        "operationId": "updateUser",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the user",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the user",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Users"
        ],
        "summary": "Delete user",
        "description": "Deactivate a user linked to the account",
        "operationId": "deleteUser",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the user",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the user",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/users/{id}/role": {
      "put": {
        "tags": [
          "Users"
        ],
        "summary": "Update user role",
        "description": "Update the role of a user linked to the account",
        "operationId": "updateUserRole",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the user",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the user",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserRoleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/submit": {
      "put": {
        "tags": [
          "Account"
        ],
        "summary": "Confirm account submission",
        "description": "Confirm that the account details and supporting document is ready for review and approval",
        "operationId": "confirmAccountSubmission",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmSubmissionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/related-party/persons/{personId}": {
      "get": {
        "tags": [
          "Persons"
        ],
        "summary": "Get person",
        "description": "For business accounts - get details of a Shareholder, Director or Authorised Signatory",
        "operationId": "getPerson",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "personId",
            "in": "path",
            "description": "Unique identifier of the related person",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the related person",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RelatedPerson"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "put": {
        "tags": [
          "Persons"
        ],
        "summary": "Update person",
        "description": "For business accounts - update details of Shareholders, Directors and Authorised Signatories\u003cbr/\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003eShareholders\u003c/b\u003e: Individuals who hold shares in the company\u003c/li\u003e\u003cli\u003e\u003cb\u003eDirectors\u003c/b\u003e: People legally responsible for managing the company\u0027s operations and decision-making\u003c/li\u003e\u003cli\u003e\u003cb\u003eAuthorised Signatories\u003c/b\u003e: Individuals who have the authority to sign documents and make official commitments on behalf of the company\u003c/li\u003e\u003c/ul\u003e",
        "operationId": "updatePerson",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "personId",
            "in": "path",
            "description": "Unique identifier of the related person",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the related person",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RelatedPersonRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RelatedPerson"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/related-party/corporates/{corporateId}": {
      "get": {
        "tags": [
          "Corporates"
        ],
        "summary": "Get corporate",
        "description": "Get details of a specific corporate entity related to the business account",
        "operationId": "getCorporate",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "corporateId",
            "in": "path",
            "description": "Unique identifier of the related corporate entity",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the related corporate entity",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RelatedCorporate"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "put": {
        "tags": [
          "Corporates"
        ],
        "summary": "Update corporate",
        "description": "Update details of a corporate entity related to the business account.\u003cbr/\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003eParent\u003c/b\u003e: A company that owns or controls the business being onboarded\u003c/li\u003e\u003cli\u003e\u003cb\u003eSubsidiary\u003c/b\u003e: A company that is owned or controlled by the business being onboarded\u003c/li\u003e\u003c/ul\u003e",
        "operationId": "updateCorporate",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "corporateId",
            "in": "path",
            "description": "Unique identifier of the related corporate entity",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the related corporate entity",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RelatedCorporateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RelatedCorporate"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/business-profile": {
      "get": {
        "tags": [
          "Business Profile"
        ],
        "summary": "Get business profile",
        "description": "For business accounts only - retrieves the business profile.",
        "operationId": "getBusinessProfile",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BusinessProfileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "put": {
        "tags": [
          "Business Profile"
        ],
        "summary": "Update business profile",
        "description": "For business accounts only - updates the business profile",
        "operationId": "updateBusinessProfile",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BusinessProfileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/branding": {
      "get": {
        "tags": [
          "Branding"
        ],
        "summary": "Get account brand settings",
        "description": "Retrieves the branding configuration.",
        "operationId": "getBranding",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountBranding"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "put": {
        "tags": [
          "Branding"
        ],
        "summary": "Update account brand settings",
        "description": "Updates the branding configuration.\nAll fields are optional – any field supplied in the request will be applied.\nThis endpoint supports multipart/form-data for file upload and text parameters.\n",
        "operationId": "updateBranding",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBrandingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountBranding"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/branding/reset": {
      "put": {
        "tags": [
          "Branding"
        ],
        "summary": "Reset account brand settings",
        "description": "Resets all branding settings (primary color, secondary color, and logo) to defaults.",
        "operationId": "resetBranding",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/webhooks": {
      "get": {
        "tags": [
          "Webhook management"
        ],
        "summary": "List all registered webhooks",
        "description": "Retrieve a paged list of webhooks currently registered",
        "operationId": "listWebhooks",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index (0..N)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the page to be returned",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelWebhookRegister"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "post": {
        "tags": [
          "Webhook management"
        ],
        "summary": "Register a webhook to receive events through.",
        "description": "Subscribe to one or more event types with a specified callback URL",
        "operationId": "registerWebhook",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/payments": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Create payments",
        "description": "Initiate a new payment request with the provided details",
        "operationId": "createPayments",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePaymentsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelPayment"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/payments/quote": {
      "post": {
        "tags": [
          "Payments"
        ],
        "summary": "Create a payment quote",
        "description": "Initiate a new payment quote request with the provided details",
        "operationId": "createPaymentQuote",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentQuoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentQuote"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/orders/exchange/quote": {
      "post": {
        "tags": [
          "Exchange"
        ],
        "summary": "Get an exchange quote",
        "description": "Retrieve a market price quote based on the provided request.",
        "operationId": "exchangeQuote",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExchangeQuoteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExchangeQuote"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/orders/exchange/confirm": {
      "post": {
        "tags": [
          "Exchange"
        ],
        "summary": "Make an order",
        "description": "Create an FX order based on the provided request.",
        "operationId": "createOrder",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExchangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Exchange"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/collections/simulate-payment": {
      "post": {
        "tags": [
          "Payment Requests"
        ],
        "summary": "Simulate a payment (Sandbox)",
        "description": "Simulates a successful bank transfer or crypto payment against an existing payment request.\nThis triggers the full payment lifecycle including status updates and webhook notifications,\nwithout requiring actual bank transfers or cryptocurrency transactions.\n\nThe payment request must be in UNPAID or PART_PAID status.\nIf no amount is specified, the full remaining balance is used.\n\nAfter a successful simulation:\n- The payment request status will be updated to PAID (or PART_PAID for partial amounts)\n- Webhook notifications will be sent to your registered endpoints\n- The payment will be visible when querying the payment request\n- The wallet balance will be updated\n\nThis endpoint is only available in sandbox/test environments.\n",
        "operationId": "simulatePayment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimulatePaymentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimulatePaymentResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/collections/payment-requests": {
      "get": {
        "tags": [
          "Payment Requests"
        ],
        "summary": "List payment requests",
        "description": "List all payment requests for an account",
        "operationId": "getPaymentRequests",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index (0..N)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the page to be returned",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelPaymentRequest"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "post": {
        "tags": [
          "Payment Requests"
        ],
        "summary": "Create payment request",
        "operationId": "createPaymentRequest",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentRequestCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentRequest"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/collections/payers": {
      "get": {
        "tags": [
          "Payers"
        ],
        "summary": "List payers",
        "description": "List all payers for an account",
        "operationId": "getPayers",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index (0..N)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the page to be returned",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelPayer"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "post": {
        "tags": [
          "Payers"
        ],
        "summary": "Create payer",
        "operationId": "createPayer",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PayerCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payer"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/collections/documents/upload": {
      "post": {
        "tags": [
          "Payment Requests"
        ],
        "summary": "Upload document",
        "description": "Hubpay requires an official document (such as an Invoice, Purchase Order, Sales Purchase Agreement, Commercial Contract etc.) to verify the transaction details and ensure compliance with UAE regulatory requirements.",
        "operationId": "upload",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentUpload"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/beneficiaries": {
      "get": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Lists beneficiaries",
        "description": "Get a list of beneficiaries for the account",
        "operationId": "listBeneficiaries",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accountNumber",
            "in": "query",
            "description": "Optional query param to filter by accountNumber (bank account number or iban of a beneficiary)",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional query param to filter by accountNumber (bank account number or iban of a beneficiary)"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index (0..N)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the page to be returned",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelBeneficiary"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "post": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Create beneficiary",
        "description": "Create beneficiary",
        "operationId": "createBeneficiary",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BeneficiaryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Beneficiary"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Get account",
        "description": "Gets account summary",
        "operationId": "getAccount",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Create account",
        "description": "Creates an account to onboard an entity with Hubpay",
        "operationId": "createAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/users/invite": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Invite user",
        "description": "Create an invite for a user to join the account. The invited user completes a self sign-up process and sets up their own credentials. The account must be in **APPLICATION_APPROVED** or **ACTIVE** status. See the [**Users integration guide**](/docs/guides/accounts/users) for more details.",
        "operationId": "createInvite",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInviteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateInviteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/users/invite/{inviteId}/resend": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Resend invite",
        "description": "Resend an invite — revokes the old token and creates a new invite URL",
        "operationId": "resendInvite",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "inviteId",
            "in": "path",
            "description": "Unique identifier of the invite",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the invite",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateInviteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/related-party/persons": {
      "get": {
        "tags": [
          "Persons"
        ],
        "summary": "Get all persons",
        "description": "Get all persons related to the business account",
        "operationId": "getAllPersons",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "description": "Zero-based page index",
              "example": 0
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "description": "Page size",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "description": "Page size",
              "example": 20
            },
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelRelatedPerson"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "post": {
        "tags": [
          "Persons"
        ],
        "summary": "Add person",
        "description": "For business accounts - add details of Shareholders, Directors and Authorised Signatories\u003cbr/\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003eShareholders\u003c/b\u003e: Individuals who hold shares in the company\u003c/li\u003e\u003cli\u003e\u003cb\u003eDirectors\u003c/b\u003e: People legally responsible for managing the company\u0027s operations and decision-making\u003c/li\u003e\u003cli\u003e\u003cb\u003eAuthorised Signatories\u003c/b\u003e: Individuals who have the authority to sign documents and make official commitments on behalf of the company\u003c/li\u003e\u003c/ul\u003e",
        "operationId": "addPerson",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RelatedPersonRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RelatedPerson"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/related-party/corporates": {
      "get": {
        "tags": [
          "Corporates"
        ],
        "summary": "Get all corporates",
        "description": "Get all corporate entities related to the business account",
        "operationId": "getAllCorporates",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "description": "Zero-based page index",
              "example": 0
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "description": "Page size",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "description": "Page size",
              "example": 20
            },
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelRelatedCorporate"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "post": {
        "tags": [
          "Corporates"
        ],
        "summary": "Add corporate",
        "description": "Add a corporate entity related to the business account.\u003cbr/\u003e\u003cul\u003e\u003cli\u003e\u003cb\u003eParent\u003c/b\u003e: A company that owns or controls the business being onboarded\u003c/li\u003e\u003cli\u003e\u003cb\u003eSubsidiary\u003c/b\u003e: A company that is owned or controlled by the business being onboarded\u003c/li\u003e\u003c/ul\u003e",
        "operationId": "addCorporate",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RelatedCorporateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RelatedCorporate"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/documents": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Get all account documents",
        "description": "Get submitted documents and their status",
        "operationId": "listDocuments",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountDocumentsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      },
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Add/update document",
        "description": "Add/update a document by type. If the document already exists, it will be updated with the new file. If the document does not exist, it will be created.",
        "operationId": "submitDocument",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountDocumentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountDocument"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/documents/{documentId}/acknowledge": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Acknowledge document validation warnings",
        "description": "Acknowledges validation warnings on a document and moves it to manual review. The document must be in **VALIDATION_WARNINGS** status. Use this when the customer has reviewed the automated warning and confirms the document is correct.",
        "operationId": "acknowledgeDocumentWarnings",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "ID of the document to acknowledge warnings for",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "ID of the document to acknowledge warnings for"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApprovableDocument"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/documents/upload": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Upload document",
        "description": "Stores a document used for onboarding, RFIs, or other activities",
        "operationId": "uploadDocument",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                },
                "required": [
                  "file"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentUpload"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/auth/token": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Generate JWT access token",
        "description": "Authenticates a registered client using its ID and secret, and returns a JWT access token.",
        "operationId": "getAccessToken",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AuthRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful token issuance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "401": {
            "description": "Invalid client credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetail"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/v1/webhooks/{webhookId}/signing-secret": {
      "get": {
        "tags": [
          "Webhook management"
        ],
        "summary": "Get webhook signing secret",
        "description": "Retrieve the signing secret for a registered webhook. Use this secret to verify incoming webhook payload signatures.",
        "operationId": "getWebhookSigningSecret",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SigningSecretResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/wallets": {
      "get": {
        "tags": [
          "Wallets"
        ],
        "summary": "List Wallets with balances",
        "operationId": "listWalletsWithBalance",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "Optional query param to filter by currency",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Optional query param to filter by currency",
              "example": "AED",
              "pattern": "[A-Z]{3}"
            },
            "example": "AED"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index (0..N)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the page to be returned",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelWalletBalance"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/transactions": {
      "get": {
        "tags": [
          "Transactions"
        ],
        "summary": "Get all account transactions",
        "description": "Retrieve a paged list of all account transactions.",
        "operationId": "getAccountTransactions",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelTransaction"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/transactions/{id}": {
      "get": {
        "tags": [
          "Transactions"
        ],
        "summary": "Get a single transaction",
        "description": "Retrieve a single transaction by id",
        "operationId": "getAccountTransaction",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Transaction"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/payments/{id}": {
      "get": {
        "tags": [
          "Payments"
        ],
        "summary": "Get a payment",
        "description": "Retrieve a single payment by id",
        "operationId": "getPayment",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Payment"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/orders/exchange/{id}": {
      "get": {
        "tags": [
          "Exchange"
        ],
        "summary": "Lookup an exchange by ID",
        "operationId": "lookupExchange",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the exchange",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the exchange",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            },
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Exchange"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/funding-accounts": {
      "get": {
        "tags": [
          "Funding accounts"
        ],
        "summary": "Retrieve funding accounts per currency",
        "operationId": "getFundingAccounts",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "description": "Required query param to filter funding accounts by currency",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Required query param to filter funding accounts by currency",
              "example": "AED",
              "pattern": "[A-Z]{3}"
            },
            "example": "AED"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FundingAccountDetails"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/collections/rates": {
      "get": {
        "tags": [
          "Rates"
        ],
        "summary": "Get Exchange rates",
        "description": "Use the Get Exchange rates endpoint to retrieve indicative exchange rates for a specific collection type",
        "operationId": "createCollectionQuote",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sourceType",
            "in": "query",
            "description": "Source type: FIAT or CRYPTO",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Source type: FIAT or CRYPTO",
              "enum": [
                "FIAT",
                "CRYPTO"
              ]
            }
          },
          {
            "name": "sourceCurrency",
            "in": "query",
            "description": "Currency the payer will send (fiat or crypto)",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Currency the payer will send (fiat or crypto)",
              "example": "AED",
              "pattern": "[A-Z]{3,5}"
            },
            "example": "AED"
          },
          {
            "name": "sourceCountry",
            "in": "query",
            "description": "Country of the payer",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Country of the payer",
              "example": "GB"
            },
            "example": "GB"
          },
          {
            "name": "destinationType",
            "in": "query",
            "description": "Payment type: FIAT or CRYPTO",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Payment type: FIAT or CRYPTO",
              "enum": [
                "FIAT",
                "CRYPTO"
              ]
            }
          },
          {
            "name": "destinationCurrency",
            "in": "query",
            "description": "Currency of the collection. This is the amount credited to the destination account",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Currency of the collection. This is the amount credited to the destination account",
              "example": "AED",
              "pattern": "[A-Z]{3,5}"
            },
            "example": "AED"
          },
          {
            "name": "destinationAmount",
            "in": "query",
            "description": "Collection amount to be received in the destination currency",
            "required": true,
            "schema": {
              "type": "number",
              "description": "Collection amount to be received in the destination currency",
              "example": 1000.0,
              "minimum": 0.01
            },
            "example": 1000.0
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollectionRate"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/collections/payment-requests/{id}": {
      "get": {
        "tags": [
          "Payment Requests"
        ],
        "summary": "Get a payment request by ID",
        "description": "Retrieve a single payment request by id",
        "operationId": "getPaymentRequest",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the payment request",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the payment request",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            },
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentRequest"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/collections/payment-requests/payments/{paymentId}": {
      "get": {
        "tags": [
          "Payment Requests"
        ],
        "summary": "Get a specific payment",
        "description": "Get a specific payment under a payment request",
        "operationId": "getPaymentForPaymentRequest",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentId",
            "in": "path",
            "description": "Unique identifier of the payment",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the payment",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            },
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentRequestPayment"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/collections/payment-requests/payments/{paymentId}/receipts": {
      "get": {
        "tags": [
          "Receipts"
        ],
        "summary": "List payment receipts",
        "description": "Retrieve all receipts uploaded by payers for a specific payment. Currently supports bank transfer proof-of-payment documents (e.g., bank transfer screenshots, payment confirmations) that payers optionally upload when completing a payment via the payment link or hosted payment page. Only available for payments where the payer chose to include a receipt.",
        "operationId": "getPaymentReceipts",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentId",
            "in": "path",
            "description": "Unique identifier of the payment",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the payment",
              "example": "b0ae5614-2494-49fa-b075-8050b5eb84ba"
            },
            "example": "b0ae5614-2494-49fa-b075-8050b5eb84ba"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentReceiptList"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/collections/payment-requests/payments/{paymentId}/receipts/{receiptId}/download": {
      "get": {
        "tags": [
          "Receipts"
        ],
        "summary": "Download payment receipt",
        "description": "Download a specific receipt file uploaded by a payer. Currently supports bank transfer proof-of-payment documents (e.g., bank transfer screenshots, payment confirmations) that payers optionally upload when completing a payment via the payment link or hosted payment page.",
        "operationId": "downloadPaymentReceipt",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paymentId",
            "in": "path",
            "description": "Unique identifier of the payment",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the payment",
              "example": "b0ae5614-2494-49fa-b075-8050b5eb84ba"
            },
            "example": "b0ae5614-2494-49fa-b075-8050b5eb84ba"
          },
          {
            "name": "receiptId",
            "in": "path",
            "description": "Unique identifier of the receipt",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the receipt",
              "example": "550e8400-e29b-41d4-a716-446655440001"
            },
            "example": "550e8400-e29b-41d4-a716-446655440001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/collections/payment-requests/find": {
      "get": {
        "tags": [
          "Payment Requests"
        ],
        "summary": "Find payment requests by external ID",
        "description": "Find payment requests for an account by external ID",
        "operationId": "findPaymentRequests",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index (0..N)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the page to be returned",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "externalId",
            "in": "query",
            "description": "External ID to search for",
            "required": true,
            "schema": {
              "type": "string",
              "description": "External ID to search for",
              "example": "EXT-001",
              "minLength": 1
            },
            "example": "EXT-001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelPaymentRequest"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/collections/payers/find": {
      "get": {
        "tags": [
          "Payers"
        ],
        "summary": "Find payers by external ID",
        "description": "Find payers for an account by external ID",
        "operationId": "findPayers",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index (0..N)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the page to be returned",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "externalId",
            "in": "query",
            "description": "External ID to search for",
            "required": true,
            "schema": {
              "type": "string",
              "description": "External ID to search for",
              "example": "EXT-001",
              "minLength": 1
            },
            "example": "EXT-001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelPayer"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/beneficiaries/find": {
      "get": {
        "tags": [
          "Beneficiaries"
        ],
        "summary": "Find beneficiaries by external ID",
        "description": "Find beneficiaries for an account by external ID",
        "operationId": "findBeneficiaries",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index (0..N)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "The size of the page to be returned",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "externalId",
            "in": "query",
            "description": "External ID to search for",
            "required": true,
            "schema": {
              "type": "string",
              "description": "External ID to search for",
              "example": "EXT-001",
              "minLength": 1
            },
            "example": "EXT-001"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelBeneficiary"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "List users",
        "description": "Get all active users linked to the account",
        "operationId": "listUsers",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/User"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/users/invite/{inviteId}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get invite",
        "description": "Get invite details including invite URL and status",
        "operationId": "getInvite",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          },
          {
            "name": "inviteId",
            "in": "path",
            "description": "Unique identifier of the invite",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "description": "Unique identifier of the invite",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InviteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/list": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Get all accounts",
        "description": "Get all accounts created by the partner",
        "operationId": "listAccounts",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "description": "Filter by account status",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Represents the current onboarding and operational status of the account",
              "enum": [
                "CREATED",
                "APPLICATION_IN_PROGRESS",
                "APPLICATION_SUBMITTED",
                "APPLICATION_APPROVED",
                "ACTIVE",
                "DECLINED",
                "SUSPENDED",
                "CLOSED"
              ]
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Zero-based page index",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 0,
              "description": "Zero-based page index",
              "example": 0
            },
            "example": 0
          },
          {
            "name": "size",
            "in": "query",
            "description": "Page size (max 50)",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20,
              "description": "Page size (max 50)",
              "example": 20
            },
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedModelAccount"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/account/documents/required": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Get document requirements",
        "description": "Lists required documents for the account and their status",
        "operationId": "getDocumentRequirements",
        "parameters": [
          {
            "name": "AccountId",
            "in": "header",
            "description": "ID of account for which operation is to be performed",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ID of account for which operation is to be performed",
              "example": "e038b313-0b04-48d3-867e-7fee463501db"
            },
            "example": "e038b313-0b04-48d3-867e-7fee463501db"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentRequirementsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    },
    "/v1/webhooks/{webhookId}": {
      "delete": {
        "tags": [
          "Webhook management"
        ],
        "summary": "Delete a registered webhook",
        "description": "Removes a previously registered webhook by its unique identifier",
        "operationId": "deleteWebhook",
        "parameters": [
          {
            "name": "webhookId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "405": {
            "description": "Method Not Allowed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "415": {
            "description": "Unsupported Media Type",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Authorization": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "ApiErrorResponse": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Stable machine-readable code",
            "enum": [
              "validation_failed",
              "unauthorized",
              "forbidden",
              "not_found",
              "conflict",
              "internal_error",
              "operation_unavailable"
            ],
            "example": "validation_failed"
          },
          "message": {
            "type": "string",
            "example": "One or more fields are missing or invalid"
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "example": 400
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "example": "2025-06-10T10:15:31Z"
          },
          "path": {
            "type": "string",
            "example": "/v1/collections/rates"
          },
          "errors": {
            "type": "array",
            "description": "Field-level validation errors",
            "items": {
              "$ref": "#/components/schemas/FieldError"
            }
          }
        }
      },
      "FieldError": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "example": "sourceCurrency"
          },
          "message": {
            "type": "string",
            "example": "Source currency is required"
          }
        }
      },
      "PaymentRequest": {
        "type": "object",
        "description": "Details of a payment request",
        "properties": {
          "executionMode": {
            "type": "string",
            "description": "Specifies how the payer is expected to complete the payment request",
            "enum": [
              "PAYMENT_LINK",
              "HOSTED_PAGE"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "System-generated unique identifier for the payment request"
          },
          "externalId": {
            "type": "string",
            "description": "Client-provided identifier for the payment request, used for idempotency or external reference",
            "maxLength": 36,
            "minLength": 0
          },
          "accountId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the account associated with this payment request"
          },
          "payerId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the payer"
          },
          "currency": {
            "type": "string",
            "description": "Three-letter ISO or crypto currency code for settlement",
            "example": "AED",
            "minLength": 1,
            "pattern": "[A-Z]{3,5}"
          },
          "amount": {
            "type": "number",
            "description": "Amount to be received in the specified currency",
            "example": 150.0
          },
          "dueDate": {
            "type": "string",
            "format": "date",
            "description": "Optional due date by which the payment should be made"
          },
          "documentReference": {
            "type": "string",
            "description": "Document reference such as an invoice number or PO reference",
            "minLength": 1
          },
          "documentId": {
            "type": "string",
            "format": "uuid",
            "description": "Internal document UUID associated with this payment request"
          },
          "paymentMethods": {
            "type": "array",
            "description": "List of permitted payment methods (e.g., CARD, BANK_TRANSFER, CRYPTO)",
            "items": {
              "type": "string",
              "enum": [
                "CARD",
                "BANK_TRANSFER",
                "CRYPTO"
              ]
            },
            "minItems": 1
          },
          "status": {
            "type": "string",
            "description": "Status of the payment request (e.g., PENDING, PAID, CANCELLED)",
            "enum": [
              "PAID",
              "PART_PAID",
              "UNPAID",
              "CANCELLED"
            ]
          },
          "paymentLinkReference": {
            "type": "string",
            "description": "Internal reference ID linking to the payment URL"
          },
          "paymentUrl": {
            "type": "string",
            "description": "Public URL where the payer can complete the payment"
          },
          "successRedirectUrl": {
            "type": "string",
            "description": "URL to redirect the payer when they have successfully completed their payment journey.\n\n**Important:** This redirect does NOT confirm that funds have been received. For asynchronous\npayment methods like bank transfers, the payer may have successfully submitted payment\ninstructions, but funds may not yet be received by Hubpay.\n\n**Always verify payment status** via webhooks or API lookup before fulfilling orders or\nproviding services.\n\nHubpay will append `paymentRequestId` and `paymentId` as query parameters to this URL\nduring the **redirect flow only** — they are not included in the API response payload.\n"
          },
          "cancelRedirectUrl": {
            "type": "string",
            "description": "URL to redirect the payer if they cancel the payment"
          },
          "autoSendPaymentLink": {
            "type": "boolean",
            "description": "Whether the payment link was automatically sent to the payer\u0027s email address upon creation"
          },
          "payoutDetails": {
            "$ref": "#/components/schemas/PayoutDetails",
            "description": "Details for payout to a beneficiary.\nIf this is provided then evey payment made against this request will be paid out to the provided beneficiary\n"
          },
          "amountPaid": {
            "type": "number",
            "description": "Total amount paid against this payment request",
            "example": 50.0
          },
          "amountRemaining": {
            "type": "number",
            "description": "Remaining amount to be paid",
            "example": 100.0
          },
          "payments": {
            "type": "array",
            "description": "List of payments made against this payment request",
            "items": {
              "$ref": "#/components/schemas/PaymentRequestPayment"
            }
          }
        },
        "required": [
          "accountId",
          "amount",
          "currency",
          "documentReference",
          "executionMode",
          "externalId",
          "id",
          "payerId",
          "paymentMethods",
          "status"
        ]
      },
      "PaymentRequestBankTransferPayment": {
        "type": "object",
        "description": "Bank transfer details",
        "properties": {
          "bankReference": {
            "type": "string",
            "description": "Bank reference number for the payment",
            "example": 123456789
          },
          "senderAccountNumber": {
            "type": "string",
            "description": "Sender\u0027s account number",
            "example": "GB29NWBK60161331926819"
          },
          "senderName": {
            "type": "string",
            "description": "Sender\u0027s name",
            "example": "John Doe"
          }
        }
      },
      "PaymentRequestCardPayment": {
        "type": "object",
        "description": "Card details",
        "properties": {
          "issuer": {
            "type": "string",
            "description": "Card issuer"
          },
          "issuerCountry": {
            "type": "string",
            "description": "Country of the card issuer"
          },
          "scheme": {
            "type": "string",
            "description": "Card scheme",
            "example": "VISA"
          },
          "cardType": {
            "type": "string",
            "description": "Card type",
            "example": "CREDIT"
          },
          "last4": {
            "type": "string"
          }
        }
      },
      "PaymentRequestCryptoPayment": {
        "type": "object",
        "description": "Crypto details",
        "properties": {
          "transactionHash": {
            "type": "string",
            "description": "Transaction hash for the crypto payment",
            "example": "0x5c69bee701ef814a2b6a3f8d1e4f7b8c9e1f5c6d7e8f9a0b1c2d3e4f5g6h7i8j"
          }
        }
      },
      "PaymentRequestPayment": {
        "type": "object",
        "description": "Unified payment object with method-specific details",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the payment",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "reference": {
            "type": "string",
            "description": "Reference for the payment",
            "example": "REF123"
          },
          "status": {
            "type": "string",
            "description": "Status of the payment",
            "enum": [
              "CREATED",
              "PENDING",
              "RECEIVED",
              "COMPLETE",
              "FAILED",
              "REVERSED"
            ],
            "example": "PENDING"
          },
          "sendCurrency": {
            "type": "string",
            "description": "Currency the payer sends in (crypto code for crypto payments, fiat code for card/bank)",
            "example": "USDT"
          },
          "sendAmount": {
            "type": "number",
            "description": "Amount the payer sends, in sendCurrency",
            "example": 272.48
          },
          "receiveCurrency": {
            "type": "string",
            "description": "Currency the merchant receives in",
            "example": "AED"
          },
          "receiveAmount": {
            "type": "number",
            "description": "Amount the merchant receives, in receiveCurrency",
            "example": 1000.0
          },
          "method": {
            "type": "string",
            "description": "Payment method used for the transaction",
            "enum": [
              "CARD",
              "BANK_TRANSFER",
              "CRYPTO"
            ],
            "example": "BANK_TRANSFER"
          },
          "accountId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the account",
            "example": "123e4567-e89b-12d3-a456-426614174004"
          },
          "payerId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the payer",
            "example": "123e4567-e89b-12d3-a456-426614174001"
          },
          "paymentRequestId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the payment request",
            "example": "123e4567-e89b-12d3-a456-426614174002"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the payment was created",
            "example": "2023-10-01T12:00:00Z"
          },
          "details": {
            "$ref": "#/components/schemas/PaymentRequestPaymentDetails",
            "description": "Details depending on payment method",
            "oneOf": [
              {
                "$ref": "#/components/schemas/PaymentRequestCardPayment"
              },
              {
                "$ref": "#/components/schemas/PaymentRequestCryptoPayment"
              },
              {
                "$ref": "#/components/schemas/PaymentRequestBankTransferPayment"
              }
            ]
          },
          "payout": {
            "$ref": "#/components/schemas/PaymentRequestPaymentPayout"
          }
        }
      },
      "PaymentRequestPaymentDetails": {
        "discriminator": {
          "propertyName": "type"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/PaymentRequestCardPayment"
          },
          {
            "$ref": "#/components/schemas/PaymentRequestCryptoPayment"
          },
          {
            "$ref": "#/components/schemas/PaymentRequestBankTransferPayment"
          }
        ]
      },
      "PaymentRequestPaymentPayout": {
        "type": "object",
        "properties": {
          "beneficiaryId": {
            "type": "string",
            "format": "uuid"
          },
          "reference": {
            "type": "string"
          },
          "transactionReference": {
            "type": "string"
          },
          "purposeOfPayment": {
            "type": "string",
            "enum": [
              "COMPUTER_SERVICES",
              "FAMILY_SUPPORT",
              "EDUCATION",
              "MEDICAL_TREATMENT",
              "MAINTENANCE_EXPENSES",
              "TRAVEL",
              "SMALL_VALUE_REMITTANCE",
              "CONSTRUCTION_EXPENSES",
              "HOTEL_ACCOMMODATION",
              "ADVERTISING_EXPENSES",
              "ADVISORY_FEES",
              "BUSINESS_INSURANCE",
              "INSURANCE_CLAIMS",
              "DELIVERY_FEES",
              "EXPORTED_GOODS",
              "SERVICE_CHARGES",
              "LOAN_PAYMENT",
              "OFFICE_EXPENSES",
              "PROPERTY_PURCHASE",
              "PROPERTY_RENTAL",
              "ROYALTY_FEES",
              "SHARES_INVESTMENT",
              "FUND_INVESTMENT",
              "TAX_PAYMENT",
              "TRANSPORTATION_FEES",
              "UTILITY_BILLS",
              "PERSONAL_TRANSFER",
              "SALARY_PAYMENT",
              "INFLUENCER_PAYMENT",
              "DIVIDEND_PAYMENT",
              "REWARD_PAYMENT",
              "OTHER_FEES",
              "OTHER"
            ]
          },
          "amount": {
            "type": "number"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "description": "Status of a payment payout during its lifecycle.",
            "enum": [
              "PENDING_APPROVAL",
              "INITIATED",
              "PAID",
              "FAILED"
            ]
          }
        }
      },
      "PayoutDetails": {
        "type": "object",
        "description": "Payout details for a payment request",
        "properties": {
          "payoutBeneficiaryId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the payout beneficiary"
          },
          "payoutReference": {
            "type": "string",
            "description": "Reference for the payout, such as an invoice number or transaction ID",
            "maxLength": 255,
            "minLength": 0
          },
          "payoutPurposeOfPayment": {
            "type": "string",
            "description": "Purpose of the payout, indicating the reason for the payment to the beneficiary",
            "enum": [
              "COMPUTER_SERVICES",
              "FAMILY_SUPPORT",
              "EDUCATION",
              "MEDICAL_TREATMENT",
              "MAINTENANCE_EXPENSES",
              "TRAVEL",
              "SMALL_VALUE_REMITTANCE",
              "CONSTRUCTION_EXPENSES",
              "HOTEL_ACCOMMODATION",
              "ADVERTISING_EXPENSES",
              "ADVISORY_FEES",
              "BUSINESS_INSURANCE",
              "INSURANCE_CLAIMS",
              "DELIVERY_FEES",
              "EXPORTED_GOODS",
              "SERVICE_CHARGES",
              "LOAN_PAYMENT",
              "OFFICE_EXPENSES",
              "PROPERTY_PURCHASE",
              "PROPERTY_RENTAL",
              "ROYALTY_FEES",
              "SHARES_INVESTMENT",
              "FUND_INVESTMENT",
              "TAX_PAYMENT",
              "TRANSPORTATION_FEES",
              "UTILITY_BILLS",
              "PERSONAL_TRANSFER",
              "SALARY_PAYMENT",
              "INFLUENCER_PAYMENT",
              "DIVIDEND_PAYMENT",
              "REWARD_PAYMENT",
              "OTHER_FEES",
              "OTHER"
            ]
          }
        },
        "required": [
          "payoutBeneficiaryId",
          "payoutPurposeOfPayment",
          "payoutReference"
        ]
      },
      "PayerUpdateRequest": {
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string",
            "description": "Email address of the payer",
            "maxLength": 255,
            "minLength": 0
          },
          "phoneNumber": {
            "type": "string",
            "description": "Required if payer is crypto enabled",
            "maxLength": 255,
            "minLength": 0
          },
          "notificationEnabled": {
            "type": "boolean",
            "description": "Enable to send transaction-update emails to this payer"
          },
          "address": {
            "type": "string",
            "description": "Required if payer is crypto enabled",
            "maxLength": 255,
            "minLength": 0
          },
          "areaOrCity": {
            "type": "string",
            "description": "Required if payer is crypto enabled and type INDIVIDUAL",
            "maxLength": 255,
            "minLength": 0
          },
          "provinceOrState": {
            "type": "string",
            "description": "Required if payer is crypto enabled and type BUSINESS",
            "maxLength": 255,
            "minLength": 0
          },
          "postalCode": {
            "type": "string",
            "description": "Required if payer is crypto enabled and type BUSINESS",
            "maxLength": 255,
            "minLength": 0
          },
          "cryptoEnabled": {
            "type": "boolean",
            "description": "Set to true to allow this payer to make cryptocurrency payments"
          }
        },
        "required": [
          "cryptoEnabled",
          "emailAddress"
        ]
      },
      "Payer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "externalId": {
            "type": "string",
            "minLength": 1
          },
          "accountId": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "enum": [
              "INDIVIDUAL",
              "BUSINESS"
            ]
          },
          "fullLegalName": {
            "type": "string",
            "minLength": 1
          },
          "emailAddress": {
            "type": "string",
            "minLength": 1
          },
          "phoneNumber": {
            "type": "string"
          },
          "country": {
            "type": "string",
            "minLength": 1
          },
          "notificationEnabled": {
            "type": "boolean"
          },
          "address": {
            "type": "string"
          },
          "areaOrCity": {
            "type": "string"
          },
          "provinceOrState": {
            "type": "string"
          },
          "postalCode": {
            "type": "string"
          },
          "cryptoEnabled": {
            "type": "boolean"
          }
        },
        "required": [
          "accountId",
          "country",
          "cryptoEnabled",
          "emailAddress",
          "externalId",
          "fullLegalName",
          "id",
          "type"
        ]
      },
      "BeneficiaryBankDetails": {
        "type": "object",
        "properties": {
          "accountNumber": {
            "type": "string",
            "description": "Beneficiary\u0027s account number, this is expected to be an iban if the bankCountry is an iban country"
          },
          "bic": {
            "type": "string",
            "description": "Beneficiary\u0027s bank identifier code, such as BIC or SWIFT"
          },
          "bankCode": {
            "type": "string",
            "description": "Code of the beneficiary\u0027s bank",
            "example": "BANK123"
          },
          "currency": {
            "type": "string",
            "description": "Currency of the beneficiary\u0027s bank account. Currently only AED is supported via the API. For other currencies, please use the HubPay corporate portal.",
            "example": "AED"
          },
          "bankName": {
            "type": "string",
            "description": "Name of the beneficiary\u0027s bank"
          },
          "bankBranchName": {
            "type": "string",
            "description": "Name of the beneficiary\u0027s bank branch"
          },
          "bankAddress": {
            "type": "string",
            "description": "Address of the beneficiary\u0027s bank"
          },
          "bankCity": {
            "type": "string",
            "description": "City where the beneficiary\u0027s bank is located"
          },
          "bankProvince": {
            "type": "string",
            "description": "Province or state where the beneficiary\u0027s bank is located"
          },
          "bankPostalCode": {
            "type": "string",
            "description": "Postal code of the beneficiary\u0027s bank"
          },
          "bankCountry": {
            "type": "string",
            "description": "Country where the beneficiary\u0027s bank is located, in ISO 3166-1 alpha-2 format. Currently only AE (United Arab Emirates) is supported via the API. For international beneficiaries, please use the HubPay corporate portal.",
            "example": "AE",
            "maxLength": 2,
            "minLength": 2
          },
          "accountType": {
            "type": "string",
            "description": "Type of the beneficiary\u0027s bank account",
            "enum": [
              "CHECKING",
              "SAVINGS",
              "STANDARD",
              "DEPOSIT",
              "OTHERS"
            ],
            "example": "SAVINGS"
          },
          "branchCode": {
            "type": "string",
            "description": "Branch code of the beneficiary\u0027s bank, if applicable"
          }
        },
        "required": [
          "accountNumber",
          "bankCountry",
          "bic",
          "currency"
        ]
      },
      "BeneficiaryPersonalDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Classification of the beneficiary, such as INDIVIDUAL or BUSINESS",
            "enum": [
              "INDIVIDUAL",
              "BUSINESS"
            ]
          },
          "name": {
            "type": "string",
            "description": "Full legal name of the beneficiary"
          },
          "addressLine1": {
            "type": "string",
            "description": "Beneficiary\u0027s address line 1"
          },
          "addressLine2": {
            "type": "string",
            "description": "Beneficiary\u0027s address line 2, if applicable"
          },
          "city": {
            "type": "string",
            "description": "City where the beneficiary resides"
          },
          "province": {
            "type": "string",
            "description": "Province or state where the beneficiary resides"
          },
          "postalCode": {
            "type": "string",
            "description": "Postal code of the beneficiary\u0027s address"
          },
          "country": {
            "type": "string",
            "description": "Country where the beneficiary resides, in ISO 3166-1 alpha-2 format",
            "example": "AE",
            "maxLength": 2,
            "minLength": 2
          },
          "phoneNumber": {
            "type": "string",
            "description": "Beneficiary\u0027s phone number, including country code"
          },
          "taxId": {
            "type": "string",
            "description": "Beneficiary\u0027s tax identification number, if applicable"
          },
          "idNumber": {
            "type": "string",
            "description": "Beneficiary\u0027s identification number, such as a passport or national ID"
          },
          "contactName": {
            "type": "string",
            "description": "Name of the contact person for the beneficiary, if applicable"
          }
        },
        "required": [
          "addressLine1",
          "country",
          "name",
          "type"
        ]
      },
      "BeneficiaryRequest": {
        "type": "object",
        "description": "Request for creating beneficiary",
        "properties": {
          "personalDetails": {
            "$ref": "#/components/schemas/BeneficiaryPersonalDetails",
            "description": "Beneficiary\u0027s personal details"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/BeneficiaryBankDetails",
            "description": "Beneficiary\u0027s bank details"
          },
          "externalId": {
            "type": "string",
            "description": "Client-provided identifier for the beneficiary, used for idempotency or external reference",
            "minLength": 1
          }
        },
        "required": [
          "bankDetails",
          "externalId",
          "personalDetails"
        ]
      },
      "Beneficiary": {
        "type": "object",
        "description": "Details of a Beneficiary",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "System-generated unique identifier for the beneficiary"
          },
          "externalId": {
            "type": "string",
            "description": "Client-provided identifier for the beneficiary, used for idempotency or external reference",
            "maxLength": 36,
            "minLength": 0
          },
          "accountId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the account associated with this beneficiary"
          },
          "beneficiaryStatus": {
            "type": "string",
            "description": "The status of the beneficiary, e.g. VERIFIED",
            "enum": [
              "CREATED",
              "FAILED",
              "VERIFIED"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time when the beneficiary was created"
          },
          "personalDetails": {
            "$ref": "#/components/schemas/BeneficiaryPersonalDetails",
            "description": "Beneficiary\u0027s personal details"
          },
          "bankDetails": {
            "$ref": "#/components/schemas/BeneficiaryBankDetails",
            "description": "Beneficiary\u0027s bank details"
          }
        },
        "required": [
          "accountId",
          "bankDetails",
          "beneficiaryStatus",
          "createdAt",
          "externalId",
          "id",
          "personalDetails"
        ]
      },
      "UpdateUserRequest": {
        "type": "object",
        "description": "Request to update a user",
        "properties": {
          "displayName": {
            "type": "string",
            "description": "Display name of the user",
            "maxLength": 255,
            "minLength": 0
          },
          "userBlockedStatus": {
            "type": "string",
            "description": "Blocked status of the user",
            "enum": [
              "BLOCKED",
              "NOT_BLOCKED"
            ]
          }
        },
        "required": [
          "displayName"
        ]
      },
      "User": {
        "type": "object",
        "description": "A user linked to the account",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the user"
          },
          "idpId": {
            "type": "string",
            "format": "uuid",
            "description": "Identity provider ID"
          },
          "emailAddress": {
            "type": "string",
            "description": "Email address of the user"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number of the user"
          },
          "displayName": {
            "type": "string",
            "description": "Display name of the user"
          },
          "blockedStatus": {
            "type": "string",
            "description": "Blocked status of the user",
            "enum": [
              "BLOCKED",
              "NOT_BLOCKED"
            ]
          },
          "role": {
            "type": "string",
            "description": "User role within the account.\n\n- **OWNER** — Full account access. Can manage users, accept terms and conditions, and approve own transactions.\n- **ADMIN** — Full operational access. Can approve own transactions but cannot manage users.\n- **EXECUTOR** — Can create and approve payments and transfers. Cannot approve own transactions (segregation of duties).\n- **PREPARER** — Can draft payments and manage beneficiaries. Cannot execute or approve transactions.\n- **VIEWER** — Read-only access.\n",
            "enum": [
              "OWNER",
              "ADMIN",
              "EXECUTOR",
              "PREPARER",
              "VIEWER"
            ]
          },
          "accountId": {
            "type": "string",
            "format": "uuid",
            "description": "Account ID the user is linked to"
          }
        }
      },
      "UpdateUserRoleRequest": {
        "type": "object",
        "description": "Request to update user role",
        "properties": {
          "role": {
            "type": "string",
            "description": "User role within the account.\n\n- **OWNER** — Full account access. Can manage users, accept terms and conditions, and approve own transactions.\n- **ADMIN** — Full operational access. Can approve own transactions but cannot manage users.\n- **EXECUTOR** — Can create and approve payments and transfers. Cannot approve own transactions (segregation of duties).\n- **PREPARER** — Can draft payments and manage beneficiaries. Cannot execute or approve transactions.\n- **VIEWER** — Read-only access.\n",
            "enum": [
              "OWNER",
              "ADMIN",
              "EXECUTOR",
              "PREPARER",
              "VIEWER"
            ]
          }
        },
        "required": [
          "role"
        ]
      },
      "ConfirmSubmissionRequest": {
        "type": "object",
        "properties": {
          "accountTier": {
            "type": "string",
            "description": "See [Hubpay tier plans](https://wearehubpay.com/pricing)",
            "enum": [
              "STARTER",
              "SCALE",
              "TREASURY"
            ]
          }
        },
        "required": [
          "accountTier"
        ]
      },
      "Account": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique ID",
            "readOnly": true
          },
          "accountType": {
            "type": "string",
            "description": "Account type.",
            "enum": [
              "INDIVIDUAL",
              "BUSINESS"
            ]
          },
          "accountName": {
            "type": "string",
            "description": "Name of account."
          },
          "email": {
            "type": "string",
            "description": "Email address."
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number of customer (preferably mobile)."
          },
          "countryCode": {
            "type": "string",
            "description": "Country of residence for INDIVIDUAL. Country of registration for BUSINESS.",
            "example": "GB"
          },
          "externalId": {
            "type": "string",
            "description": "Client-provided identifier for the account. Used for idempotency and external reference."
          },
          "accountStatus": {
            "type": "string",
            "description": "Represents the current onboarding and operational status of the account.\n\nPossible values:\n- **CREATED**: Account created.\n- **APPLICATION_IN_PROGRESS**: Account sign-up accepted, onboarding in progress.\n- **APPLICATION_SUBMITTED**: Customer has submitted the application and pending review by operations.\n- **APPLICATION_APPROVED**: Application approved by operations, awaiting card details to activate account.\n- **ACTIVE**: Card details added and account is now fully onboarded.\n- **DECLINED**: Application was rejected by operations or did not meet eligibility criteria.\n- **SUSPENDED**: Account temporarily disabled due to billing issues or subscription expiry.\n- **CLOSED**: Account has been permanently closed or terminated.\n",
            "enum": [
              "CREATED",
              "APPLICATION_IN_PROGRESS",
              "APPLICATION_SUBMITTED",
              "APPLICATION_APPROVED",
              "ACTIVE",
              "DECLINED",
              "SUSPENDED",
              "CLOSED"
            ]
          },
          "accountTier": {
            "type": "string",
            "description": "See [Hubpay tier plans](https://wearehubpay.com/pricing)",
            "enum": [
              "STARTER",
              "SCALE",
              "TREASURY"
            ]
          }
        },
        "required": [
          "accountType",
          "id"
        ]
      },
      "PersonAttachedDocuments": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Specifies the type of the document being attached",
            "enum": [
              "PASSPORT",
              "EMIRATES_ID",
              "BANK_STATEMENT",
              "CV",
              "VALID_GOVERNMENT_ID",
              "RESIDING_COUNTRY_PROOF_OF_ADDRESS"
            ]
          },
          "documentIds": {
            "type": "array",
            "description": "List of document IDs uploaded for the selected type",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "minItems": 1,
            "uniqueItems": true
          }
        },
        "required": [
          "documentIds",
          "type"
        ]
      },
      "RelatedPersonRequest": {
        "type": "object",
        "properties": {
          "fullNameAsPerId": {
            "type": "string",
            "description": "Full name of the individual exactly as it appears on their official identification document (e.g., passport or national ID)",
            "maxLength": 255,
            "minLength": 0
          },
          "attachedDocuments": {
            "type": "array",
            "description": "A list of documents attached for the individual. These documents should be uploaded first. See [Upload Documents API](./upload-document) for more details.\n\n- **PASSPORT**: Mandatory for all individuals. Used for identity verification.\n- **EMIRATES_ID**: Required for UAE residents as a government-issued ID.\n- **BANK_STATEMENT**: Required for shareholders **only if the business does not have a bank account**. Must include the last 6 months of statements to verify financial standing and source of funds.\n- **CV**: Required for Directors **only if the business does not have a bank account and a LinkedIn profile URL is not provided**. Helps assess the individual’s professional background and experience.\n- **VALID_GOVERNMENT_ID**: Required for Directors or UBOs **only if the individual is NOT residing in the UAE** (i.e. national ID, driver\u0027s license, etc).\n- **RESIDING_COUNTRY_PROOF_OF_ADDRESS**: Required for Directors or UBOs **only if the individual is NOT residing in the UAE** (i.e. utility bill issued within 90 days or valid tenancy contract).\n",
            "items": {
              "$ref": "#/components/schemas/PersonAttachedDocuments"
            },
            "minItems": 1
          },
          "authorizedSignatory": {
            "type": "boolean",
            "description": "Indicates whether the individual has the authority to sign documents and make official commitments on behalf of the company"
          },
          "director": {
            "type": "boolean",
            "description": "Indicates whether the individual is legally responsible for managing the company\u0027s operations and decision-making"
          },
          "shareholder": {
            "type": "boolean",
            "description": "Indicates whether the individual is a shareholder of the company"
          },
          "uaeResident": {
            "type": "boolean",
            "description": "Indicates whether the individual resides in the UAE"
          },
          "linkedInProfileUrl": {
            "type": "string",
            "description": "URL to the individual\u0027s LinkedIn profile. Can be provided as an alternative to the CV document for directors when the business does not have a bank account.",
            "maxLength": 120,
            "minLength": 0,
            "pattern": "^$|^(https?://)?(www\\.)?linkedin\\.com/in/[a-zA-Z0-9-]+(/.*)?(\\?.*)?$"
          }
        },
        "required": [
          "attachedDocuments",
          "authorizedSignatory",
          "director",
          "fullNameAsPerId",
          "shareholder",
          "uaeResident"
        ]
      },
      "DocumentUpload": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "fileName": {
            "type": "string"
          },
          "contentType": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "contentType",
          "createdAt",
          "fileName",
          "id"
        ]
      },
      "PersonDocument": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "NOT_SUBMITTED",
              "PENDING_REVIEW",
              "DECLINED",
              "APPROVED",
              "PENDING_VERIFICATION",
              "VALIDATION_WARNINGS"
            ]
          },
          "required": {
            "type": "boolean"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "declinedReason": {
            "type": "string",
            "enum": [
              "NOT_CERTIFIED",
              "INVALID_DOCUMENT_TYPE",
              "QUALITY",
              "OTHER_SEE_SUPPORT"
            ]
          },
          "declinedCustomerDisplayReason": {
            "type": "string"
          },
          "validationStatus": {
            "type": "string",
            "description": "When status is VALIDATION_WARNINGS, the specific warning category from automated document review.",
            "enum": [
              "WARNING_NOT_CERTIFIED",
              "WARNING_SUSPECTED_INVALID_DOCUMENT_TYPE",
              "WARNING_QUALITY_INSUFFICIENT",
              "WARNING_EXPIRED_DOCUMENT",
              "WARNING_EXPIRING_DOCUMENT",
              "WARNING_OTHER",
              "WARNING_REQUIRED_FIELDS_MISSING",
              "CRITICAL_CERTAIN_INVALID_DOCUMENT_TYPE",
              "CRITICAL_DOCUMENT_UNREADABLE",
              "CRITICAL_OTHER"
            ]
          },
          "validationMessage": {
            "type": "string",
            "description": "When status is VALIDATION_WARNINGS, a human-readable warning message safe to show the end customer."
          },
          "lastUpdatedBy": {
            "type": "string"
          },
          "lastUpdatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "documentUploads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentUpload"
            }
          },
          "documentType": {
            "type": "string",
            "description": "A list of documents attached for the individual. These documents should be uploaded first. See [Upload Documents API](./upload-document) for more details.\n\n- **PASSPORT**: Mandatory for all individuals. Used for identity verification.\n- **EMIRATES_ID**: Required for UAE residents as a government-issued ID.\n- **BANK_STATEMENT**: Required for shareholders **only if the business does not have a bank account**. Must include the last 6 months of statements to verify financial standing and source of funds.\n- **CV**: Required for Directors or UBOs **only if the business do not have a bank account**. Helps assess the individual’s professional background and experience.\n- **VALID_GOVERNMENT_ID**: Required for Directors or UBOs **only if the individual is NOT residing in the UAE** (i.e. national ID, driver\u0027s license, etc).\n- **RESIDING_COUNTRY_PROOF_OF_ADDRESS**: Required for Directors or UBOs **only if the individual is NOT residing in the UAE** (i.e. utility bill issued within 90 days or valid tenancy contract).\n",
            "enum": [
              "PASSPORT",
              "EMIRATES_ID",
              "BANK_STATEMENT",
              "CV",
              "VALID_GOVERNMENT_ID",
              "RESIDING_COUNTRY_PROOF_OF_ADDRESS"
            ]
          }
        },
        "required": [
          "description",
          "documentType",
          "documentUploads",
          "id",
          "required",
          "status",
          "title"
        ]
      },
      "RelatedPerson": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the related person"
          },
          "status": {
            "type": "string",
            "description": "Status of the related person in the onboarding or review process.\n\n- **NOT_SUBMITTED**: The individual’s details have not yet been submitted for review.\n- **UNDER_REVIEW**: The individual\u0027s information and documents are currently under review.\n- **ACTION_REQUIRED**: The individual’s submission requires additional actions, such as uploading missing or invalid documents.\n- **APPROVED**: The individual’s information has been reviewed and approved.\n",
            "enum": [
              "NOT_SUBMITTED",
              "UNDER_REVIEW",
              "ACTION_REQUIRED",
              "APPROVED"
            ]
          },
          "fullNameAsPerId": {
            "type": "string",
            "description": "Full name of the individual exactly as it appears on their official identification document (e.g., passport or national ID)"
          },
          "documents": {
            "type": "array",
            "description": "A list of documents associated with the individual",
            "items": {
              "$ref": "#/components/schemas/PersonDocument"
            }
          },
          "authorizedSignatory": {
            "type": "boolean",
            "description": "Indicates whether the individual has the authority to sign documents and make official commitments on behalf of the company"
          },
          "director": {
            "type": "boolean",
            "description": "Indicates whether the individual is legally responsible for managing the company\u0027s operations and decision-making"
          },
          "shareholder": {
            "type": "boolean",
            "description": "Indicates whether the individual is a shareholder of the company"
          },
          "uaeResident": {
            "type": "boolean",
            "description": "Indicates whether the individual resides in the UAE"
          },
          "linkedInProfileUrl": {
            "type": "string",
            "description": "URL to the individual\u0027s LinkedIn profile, used for background and professional verification"
          }
        },
        "required": [
          "authorizedSignatory",
          "director",
          "documents",
          "fullNameAsPerId",
          "id",
          "shareholder",
          "status",
          "uaeResident"
        ]
      },
      "CorporateAttachedDocuments": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Specifies the type of the document being attached",
            "enum": [
              "TRADE_LICENSE",
              "MEMORANDUM_OF_ASSOCIATION_OR_ARTICLES_OF_ASSOCIATION",
              "SHAREHOLDING_CERTIFICATE"
            ]
          },
          "documentIds": {
            "type": "array",
            "description": "List of document IDs uploaded for the selected type",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "minItems": 1,
            "uniqueItems": true
          }
        },
        "required": [
          "documentIds",
          "type"
        ]
      },
      "RelatedCorporateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Registered legal name of the corporate entity",
            "maxLength": 255,
            "minLength": 0,
            "pattern": "^[a-zA-Z0-9\\s\\-\\.\u0026]+$"
          },
          "relationship": {
            "type": "string",
            "description": "The relationship of the corporate entity to the business being onboarded.\n\n- **PARENT**: A company that owns or controls the business being onboarded\n- **SUBSIDIARY**: A company that is owned or controlled by the business being onboarded\n",
            "enum": [
              "PARENT",
              "SUBSIDIARY"
            ]
          },
          "sharePercentageOwned": {
            "type": "number",
            "format": "double",
            "description": "Percentage of shares owned (1-100)",
            "maximum": 100,
            "minimum": 1
          },
          "attachedDocuments": {
            "type": "array",
            "description": "A list of documents attached for the corporate entity. These documents should be uploaded first. See [Upload Documents API](./upload-document) for more details.\n\nDocument requirements depend on the relationship type:\n\n**PARENT relationship:**\n\n- **TRADE_LICENSE**: Required. The corporate entity\u0027s trade licence.\n- **MEMORANDUM_OF_ASSOCIATION_OR_ARTICLES_OF_ASSOCIATION**: Required. Becomes optional if a Shareholding Certificate is provided.\n- **SHAREHOLDING_CERTIFICATE**: Optional.\n\n**SUBSIDIARY relationship:** No document requirements.\n",
            "items": {
              "$ref": "#/components/schemas/CorporateAttachedDocuments"
            }
          }
        },
        "required": [
          "name",
          "relationship",
          "sharePercentageOwned"
        ]
      },
      "CorporateDocument": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "NOT_SUBMITTED",
              "PENDING_REVIEW",
              "DECLINED",
              "APPROVED",
              "PENDING_VERIFICATION",
              "VALIDATION_WARNINGS"
            ]
          },
          "required": {
            "type": "boolean"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "declinedReason": {
            "type": "string",
            "enum": [
              "NOT_CERTIFIED",
              "INVALID_DOCUMENT_TYPE",
              "QUALITY",
              "OTHER_SEE_SUPPORT"
            ]
          },
          "declinedCustomerDisplayReason": {
            "type": "string"
          },
          "validationStatus": {
            "type": "string",
            "description": "When status is VALIDATION_WARNINGS, the specific warning category from automated document review.",
            "enum": [
              "WARNING_NOT_CERTIFIED",
              "WARNING_SUSPECTED_INVALID_DOCUMENT_TYPE",
              "WARNING_QUALITY_INSUFFICIENT",
              "WARNING_EXPIRED_DOCUMENT",
              "WARNING_EXPIRING_DOCUMENT",
              "WARNING_OTHER",
              "WARNING_REQUIRED_FIELDS_MISSING",
              "CRITICAL_CERTAIN_INVALID_DOCUMENT_TYPE",
              "CRITICAL_DOCUMENT_UNREADABLE",
              "CRITICAL_OTHER"
            ]
          },
          "validationMessage": {
            "type": "string",
            "description": "When status is VALIDATION_WARNINGS, a human-readable warning message safe to show the end customer."
          },
          "lastUpdatedBy": {
            "type": "string"
          },
          "lastUpdatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "documentUploads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentUpload"
            }
          },
          "documentType": {
            "type": "string",
            "description": "The type of corporate document.\n\n- **TRADE_LICENSE**: The corporate entity\u0027s trade licence. Required for PARENT relationships.\n- **MEMORANDUM_OF_ASSOCIATION_OR_ARTICLES_OF_ASSOCIATION**: Required for PARENT relationships. Becomes optional if a Shareholding Certificate is attached.\n- **SHAREHOLDING_CERTIFICATE**: Optional for PARENT relationships.\n",
            "enum": [
              "TRADE_LICENSE",
              "MEMORANDUM_OF_ASSOCIATION_OR_ARTICLES_OF_ASSOCIATION",
              "SHAREHOLDING_CERTIFICATE"
            ]
          }
        },
        "required": [
          "description",
          "documentType",
          "documentUploads",
          "id",
          "required",
          "status",
          "title"
        ]
      },
      "RelatedCorporate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the related corporate entity"
          },
          "name": {
            "type": "string",
            "description": "Registered legal name of the corporate entity"
          },
          "relationship": {
            "type": "string",
            "description": "The relationship of the corporate entity to the business being onboarded",
            "enum": [
              "PARENT",
              "SUBSIDIARY"
            ]
          },
          "percentageOwned": {
            "type": "number",
            "format": "double",
            "description": "Percentage of shares owned"
          },
          "documents": {
            "type": "array",
            "description": "A list of documents associated with the corporate entity",
            "items": {
              "$ref": "#/components/schemas/CorporateDocument"
            }
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the corporate entity was added"
          }
        },
        "required": [
          "createdAt",
          "documents",
          "id",
          "name",
          "percentageOwned",
          "relationship"
        ]
      },
      "BusinessProfileRequest": {
        "type": "object",
        "properties": {
          "accountName": {
            "type": "string",
            "description": "The legal entity name of the business.",
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[a-zA-Z0-9\\s\\-\\.\u0026]+$"
          },
          "countryOfRegistration": {
            "type": "string",
            "description": "Country of registration of the business.",
            "example": "AE",
            "minLength": 1
          },
          "industries": {
            "type": "array",
            "description": "Industry or industries in which the business operates.",
            "items": {
              "type": "string",
              "enum": [
                "GENERAL_TRADING",
                "MEDICAL_SUPPLIES",
                "AUTO_SPARE_PARTS",
                "RECRUITMENT",
                "TEXTILES",
                "MACHINERY_PARTS",
                "ADVISORY_FIRM",
                "CONSULTANCY",
                "HEALTHCARE_AND_DENTISTRY",
                "FOODSTUFF",
                "HOTEL_SUPPLIES",
                "SHIPPING_AND_TRANSPORT",
                "MEAT",
                "PERFUMES_TRADING",
                "WHOLESALERS",
                "PET_SUPPLIES_AND_FOODS",
                "AGRICULTURE_SUPPLIES",
                "FLOWER_SHOPS",
                "RAW_MATERIALS",
                "INFORMATION_TECHNOLOGY",
                "CHOCOLATE_AND_SWEETS",
                "MARINE_SUPPLIES",
                "EDUCATION",
                "ELECTRICAL_TRADING",
                "ACCOUNTING_TAXATION_PAYROLL_SERVICES",
                "ADULT_ENTERTAINMENT_AND_OR_PORNOGRAPHY",
                "ADVERTISING_MARKETING_AND_PR",
                "ADVOCACY_ORGANIZATIONS",
                "AEROSPACE_AND_DEFENSE",
                "AGRICULTURE",
                "AIRCRAFT_MANUFACTURER_AND_SPARE_PARTS",
                "AIRLINES",
                "AIR_CARGO",
                "AIRPORT_HARBOR_AND_TERMINAL_OPERATIONS",
                "ALCOHOLIC_BEVERAGES",
                "ALTERNATIVE_ENERGY_SOURCES",
                "AMUSEMENT_PARKS_AND_ATTRACTIONS",
                "ANIMAL_TRADING",
                "APPAREL_AND_ACCESSORIES_RETAILERS_AND_WHOLESALERS",
                "ARCHITECTURE_ENGINEERING_AND_DESIGN",
                "ARMS_MANUFACTURERS_AND_DEALERS",
                "AUCTION_SERVICES",
                "AUDIO_VIDEO_AND_PHOTOGRAPHY",
                "AUTOMOBILE_DEALERS_NEW_VEHICLES",
                "AUTOMOBILE_PARTS_WHOLESALERS",
                "AUTOMOTIVE_REPAIR_AND_MAINTENANCE",
                "BANKING_AND_FINANCIAL_SERVICES",
                "BEAUTY_SUPPLIES_AND_COSMETICS",
                "BIOTECHNOLOGY",
                "BLOOD_ORGANS_BODY_PARTS",
                "BOAT_AND_YACHT_DEALERS",
                "BUILDING_MATERIALS_CONCRETE_AND_GLASS",
                "CABLE_AND_TELEVISION_PROVIDERS",
                "CALL_CENTERS",
                "CAR_WASH_SERVICES",
                "CASINOS_GAMBLING_WAGERING_INSTITUTIONS_AND_ONLINE_GAMBLING",
                "CHEMICALS_PETROCHEMICALS_AND_PETROLEUM_PRODUCTS",
                "CLOTHING_AND_SHOE_STORES",
                "COLLEGES_AND_UNIVERSITIES",
                "COMPUTER_AND_ELECTRONICS",
                "COMMERCIAL_BROKERS",
                "COMPANY_SERVICE_PROVIDERS",
                "CONSTRUCTION_AND_REMODELING",
                "CONSTRUCTION_EQUIPMENT_AND_SUPPLIES",
                "CONSULTING_SERVICES",
                "COUNTERFEIT_PIRATED_GOODS",
                "CROWDFUNDING",
                "CRUISE_SHIP_OPERATIONS",
                "CRYPTO_CURRENCY_VIRTUAL_ASSETS_NFT",
                "CYBER_LOCKERS",
                "DATA_ANALYTICS_AND_MANAGEMENT",
                "DATA_AND_RECORDS_MANAGEMENT",
                "DATING_AGENCIES",
                "DEBT_COLLECTION_SERVICES",
                "DEPARTMENTAL_AND_GROCERY_STORES",
                "DIAGNOSTIC_LABORATORIES",
                "DIAMOND_GOLD_JEWELRY_PRECIOUS_METAL_AND_STONES_DEALERS",
                "DOCTORS_AND_HEALTH_CARE_PRACTITIONERS",
                "DRY_CLEANERS_AND_LAUNDRIES",
                "E_COMMERCE_AND_INTERNET_BUSINESS",
                "EDUCATION_SERVICES",
                "EMBASSIES_DIPLOMATIC_MISSIONS_AND_CONSULATE",
                "EXCHANGE_HOUSE",
                "FACILITIES_MANAGEMENT_AND_MAINTENANCE",
                "FISHING_HUNTING_AND_FORESTRY_AND_LOGGING",
                "FOLLOWER_AND_LIKE_FARMS",
                "FOOD_AND_BEVERAGE_SUPPLIERS",
                "FOOD_AND_DAIRY_PRODUCT_MANUFACTURING_AND_PACKAGING",
                "FLAVORS_AND_FRAGRANCES",
                "FREIGHT_HAULING_RAIL_AND_TRUCK",
                "FUNERAL_HOMES_AND_SERVICES",
                "FURNITURE_STORES_AND_MANUFACTURING",
                "GAMING",
                "GIFT_CARDS",
                "GENERAL_TRADING_OR_GOODS_WHOLESALERS",
                "GOVERNMENT_ORGANIZATIONS",
                "HACKING_MATERIALS",
                "HAIRDRESSERS_BARBER_SHOPS_AND_SALONS",
                "HARDWARE_AND_BUILDING_MATERIAL_DEALERS",
                "HEALTHCARE_AND_HOSPITALS",
                "HEAVY_EQUIPMENT_AND_MACHINERY_SPARE_PARTS_TRADING",
                "HOTELS",
                "HR_AND_RECRUITING_SERVICES",
                "INTERNATIONAL_BODIES_AND_ORGANIZATIONS",
                "INTERNET_PUBLISHING",
                "INVESTMENT",
                "IT_AND_NETWORK_SERVICES_AND_SUPPORT",
                "LAUNDRY_AND_DRY_CLEANING",
                "LAW_FIRMS_AND_LEGAL_SERVICES",
                "LENDING_AND_MORTGAGES",
                "LEASING_AIRCRAFTS",
                "LIBRARIES_ARCHIVES_AND_MUSEUMS",
                "LITIGATION_FINANCE_COMPANIES",
                "MACHINERY_AND_EQUIPMENT",
                "MARIJUANA_CANNABIS_INDUSTRY_AND_OTHER_RECREATIONAL_DRUG_INDUSTRIES",
                "MARINE_AND_INLAND_SHIPPING_AND_CARGO",
                "MARINE_EQUIPMENT_TRADING",
                "MASSAGE_PARLOURS",
                "MEAT_TRADERS",
                "MEDIA_AND_ENTERTAINMENT",
                "MEDICAL_DEVICES_AND_EQUIPMENT_MANUFACTURERS_AND_SUPPLIERS",
                "METAL_AND_MINERAL_WHOLESALERS",
                "MINING_AND_QUARRYING",
                "MONEY_BROKERS",
                "MONEY_SERVICES_BUSINESS_PAYMENT_SERVICES_PROVIDERS",
                "MOTION_PICTURE_AND_RECORDING_PRODUCERS",
                "MOVING_COMPANIES_AND_SERVICES",
                "MULTI_LEVEL_MARKETING_OR_PYRAMID_SCHEMES",
                "NAIL_SALONS",
                "NETWORK_EQUIPMENT_AND_SECURITY_PRODUCTS",
                "NEWSPAPER_BOOKS_AND_PERIODICALS_PUBLISHERS",
                "NIGHT_CLUBS",
                "NON_GOVERNMENT_ORGANIZATIONS_CHARITIES_OR_TRUSTS",
                "OFFICE_EQUIPMENT_AND_SUPPLIERS_AND_WHOLESALERS",
                "OIL_AND_GAS",
                "OIL_AND_GAS_MACHINERY_AND_EQUIPMENT",
                "PAPER_AND_PAPER_PRODUCTS",
                "PARKING_LOTS_AND_GARAGE_MANAGEMENT",
                "PAWN_BROKERS_AND_SHOPS",
                "PAYDAY_LOAN_COMPANIES",
                "PENSION_FUNDS",
                "PHARMACEUTICALS",
                "PLASTIC_WHOLESALER",
                "PLASTICS_AND_RUBBER_MANUFACTURING",
                "POSTAL_EXPRESS_DELIVERY_AND_COURIERS",
                "PRECISION_INSTRUMENTS_AND_CONTROLS",
                "PRIVATE_SECURITY_FIRMS_AND_PRIVATE_MILITARY_CONTRACTORS",
                "PROLIFERATION_OF_WEAPONS_OF_MASS_DESTRUCTION",
                "PROPERTY_LEASING_AND_MANAGEMENT",
                "PROSTITUTION_MODEL_AGENCIES_ESCORT",
                "PROVIDERS_OF_PRIVATE_ONLINE_LOTTERY_MAIL_ORDER_LOTTERIES_AND_SWEEPSTAKES",
                "RADIO_AND_TELEVISION_BROADCASTING",
                "REAL_ESTATE_AGENTS_AND_APPRAISERS",
                "REAL_ESTATE_CONSTRUCTION_AND_DEVELOPERS",
                "RELIGIOUS_ORGANIZATIONS_AND_PLACES_OF_WORSHIP",
                "RENTAL_CARS",
                "RESIDENTIAL_AND_LONG_TERM_CARE_FACILITIES",
                "RESTAURANTS_AND_BARS",
                "SAUNA_HAMMAM_OR_BATH_HOUSES",
                "SCRAP_METAL",
                "SCUBA_DIVING_EQUIPMENT",
                "SECURITIES_AND_COMMODITY_EXCHANGES",
                "SECURITIES_AGENTS_AND_BROKERS",
                "SEMICONDUCTOR_AND_MICROCHIP_MANUFACTURING",
                "SEWAGE_TREATMENT_FACILITIES",
                "SHELL_BANKS",
                "SMOKING_CLUBS",
                "SOCIAL_AND_MEMBERSHIP_ORGANIZATIONS",
                "SOCIAL_MEDIA",
                "SOFTWARE_SERVICES",
                "SPORTS_GAMBLING",
                "SPORTS_ARTS_AND_RECREATION",
                "TATTOO_SHOPS",
                "TAXI_BUSES_AND_TRANSIT_SYSTEMS",
                "TECHNICAL_AND_TRADE_SCHOOLS",
                "TELECOMMUNICATIONS_EQUIPMENT_AND_ACCESSORIES",
                "TELEPHONE_SERVICE_PROVIDERS_AND_CARRIERS",
                "TEXTILES_APPAREL_AND_ACCESSORIES",
                "TOBACCO_VAPE_E_CIGARETTES_CONTROLLED_PRODUCTS",
                "TOOLS_AND_HARDWARE",
                "TRADE_GROUPS_AND_LABOR_UNIONS",
                "TRADING_FOR_RETAIL_CUSTOMERS",
                "TRAVEL_AGENTS_AND_SERVICES",
                "TRAVEL_TOURISM_RECREATIONS_AND_LEISURE",
                "TRUST_FIDUCIARY_AND_CUSTODIAN_ACTIVITIES",
                "UNAUTHORISED_TICKET_SELLERS",
                "UNLAWFUL_INTERNET_GAMBLING",
                "USED_AUTOMOBILE_DEALERS_AND_SELLERS_OF_USED_CAR_PARTS",
                "VETERINARY_CLINICS_AND_SERVICES",
                "VIDEO_AND_LIVE_STREAMING",
                "VIDEO_AND_TELECONFERENCING",
                "WAREHOUSING_AND_STORAGE",
                "WASTE_MANAGEMENT_AND_RECYCLING",
                "WATER_TREATMENT_AND_UTILITIES",
                "OTHER"
              ]
            },
            "minItems": 1,
            "uniqueItems": true
          },
          "legalType": {
            "type": "string",
            "description": "Legal business type.",
            "enum": [
              "LIMITED_LIABILITY_COMPANY",
              "SOLE_PROPRIETORSHIP",
              "GENERAL_PARTNERSHIP_COMPANY"
            ]
          },
          "incorporatedInUae": {
            "type": "boolean",
            "description": "Indicates if the business is incorporated in the UAE."
          },
          "hasBankAccount": {
            "type": "boolean",
            "description": "Indicates if the business has a bank account."
          },
          "yearsOfBusinessRange": {
            "type": "string",
            "description": "The number of years the business has been in operation.",
            "enum": [
              "LESS_THAN_ONE",
              "ONE_TO_TWO",
              "TWO_TO_FIVE",
              "FIVE_PLUS"
            ]
          },
          "numberOfEmployeesRange": {
            "type": "string",
            "description": "The number of employees the business currently has.",
            "enum": [
              "ONE_TO_TEN",
              "TEN_TO_THIRTY",
              "THIRTY_PLUS"
            ]
          },
          "annualRevenue": {
            "type": "integer",
            "format": "int32",
            "description": "The annual revenue (in USD) of the business. A positive integer is required."
          },
          "website": {
            "type": "string",
            "description": "The full website URL of the business.",
            "maxLength": 500,
            "minLength": 0
          },
          "productOrServiceSold": {
            "type": "string",
            "description": "**Required** if website is not provided.\n\nDescription of the product or service the business sells.\n",
            "maxLength": 500,
            "minLength": 0
          },
          "intendedSalesChannel": {
            "type": "string",
            "description": "**Required** if website is not provided.\n\nThe intended sales channel for the business.\n",
            "enum": [
              "ONLINE",
              "IN_PERSON",
              "BOTH"
            ]
          },
          "salesDistributionChannels": {
            "type": "array",
            "description": "**Required** if website is not provided.\n\nThe primary sales and distribution channels used by the business.\n",
            "items": {
              "type": "string",
              "enum": [
                "SOCIAL_MEDIA",
                "REFERRALS",
                "TRADE_SHOWS",
                "DIGITAL_ADVERTISING",
                "IN_PERSON_SALES_TEAM",
                "OTHER"
              ]
            },
            "uniqueItems": true
          },
          "investmentSourceOfFunds": {
            "$ref": "#/components/schemas/InvestmentSourceOfFunds",
            "description": "**Required** if business does not have a bank account in UAE.\n\nDetails of source of funds for the business.\n"
          },
          "incomingPaymentCountries": {
            "type": "array",
            "description": "The countries from which payments will be made into your account. These must be valid ISO 3166-1 alpha-2 country codes.",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "incomingPaymentsMonthlyVolume": {
            "type": "integer",
            "format": "int32",
            "description": "The estimated volume (in USD) of incoming payments per month."
          },
          "incomingPaymentsMonthlyCount": {
            "type": "integer",
            "format": "int32",
            "description": "The estimated number of incoming payments per month."
          },
          "outgoingPaymentCountries": {
            "type": "array",
            "description": "The countries to which payments will be made from your account. These must be valid ISO 3166-1 alpha-2 country codes.",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "outgoingPaymentsMonthlyVolume": {
            "type": "integer",
            "format": "int32",
            "description": "The estimated volume (in USD) of outgoing payments per month."
          },
          "outgoingPaymentsMonthlyCount": {
            "type": "integer",
            "format": "int32",
            "description": "The estimated number of outgoing payments per month."
          },
          "accountOpeningPurposes": {
            "type": "array",
            "description": "The purpose(s) for opening the account. At least one option must be selected.",
            "items": {
              "type": "string",
              "enum": [
                "RECEIVE_FUNDS",
                "SEND_FUNDS",
                "UAE_PAYMENTS",
                "PLATFORM_INTEGRATION",
                "BULK_PAYMENTS",
                "CRYPTOCURRENCY_PAYMENTS",
                "OTHER"
              ]
            },
            "minItems": 1,
            "uniqueItems": true
          },
          "addressLine1": {
            "type": "string",
            "description": "First line of address.",
            "maxLength": 100,
            "minLength": 0
          },
          "addressLine2": {
            "type": "string",
            "description": "Second line of address.",
            "maxLength": 100,
            "minLength": 0
          },
          "areaOrCity": {
            "type": "string",
            "description": "Address town or city.",
            "maxLength": 50,
            "minLength": 0
          },
          "provinceState": {
            "type": "string",
            "description": "Address province or state.",
            "maxLength": 50,
            "minLength": 0
          },
          "postalCode": {
            "type": "string",
            "description": "Address postal code. Use 0000 if not applicable.",
            "maxLength": 15,
            "minLength": 0
          },
          "dateOfIncorporation": {
            "type": "string",
            "format": "date",
            "description": "The date of incorporation of the business.",
            "example": "2023-12-31"
          }
        },
        "required": [
          "accountName",
          "accountOpeningPurposes",
          "countryOfRegistration",
          "hasBankAccount",
          "incomingPaymentCountries",
          "incomingPaymentsMonthlyCount",
          "incomingPaymentsMonthlyVolume",
          "incorporatedInUae",
          "industries",
          "legalType",
          "numberOfEmployeesRange",
          "outgoingPaymentCountries",
          "outgoingPaymentsMonthlyCount",
          "outgoingPaymentsMonthlyVolume",
          "yearsOfBusinessRange"
        ]
      },
      "InvestmentSourceOfFunds": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The primary source of funds for the business.",
            "enum": [
              "PERSONAL",
              "INVESTOR",
              "BUSINESS_REVENUE",
              "SALE_OF_ASSET",
              "OTHER"
            ]
          },
          "description": {
            "type": "string",
            "description": "Further explanatory details of source of funds.",
            "minLength": 1
          }
        },
        "required": [
          "description",
          "type"
        ]
      },
      "UpdateBrandingRequest": {
        "type": "object",
        "properties": {
          "primaryColor": {
            "type": "string",
            "description": "Primary branding color in hex format",
            "example": "#123456",
            "pattern": "^#(?:[0-9a-fA-F]{3}){1,2}$"
          },
          "secondaryColor": {
            "type": "string",
            "description": "Secondary branding color in hex format",
            "example": "#abcdef",
            "pattern": "^#(?:[0-9a-fA-F]{3}){1,2}$"
          },
          "logo": {
            "type": "string",
            "format": "binary",
            "description": "Logo file to be displayed during payment. Must be JPG or PNG format, at least 128x128 pixels, and no larger than 512KB."
          }
        }
      },
      "AccountBranding": {
        "type": "object",
        "properties": {
          "primaryColor": {
            "type": "string",
            "description": "Primary branding color in hex format",
            "example": "#123456"
          },
          "secondaryColor": {
            "type": "string",
            "description": "Secondary branding color in hex format",
            "example": "#abcdef"
          },
          "logoUrl": {
            "type": "string",
            "description": "Logo url to the file to be displayed during payment"
          }
        }
      },
      "SubscriptionRequest": {
        "type": "object",
        "description": "Webhook registration request",
        "properties": {
          "callbackUrl": {
            "type": "string",
            "description": "The callback URL to receive events",
            "example": "https://your-callback.url/webhook"
          },
          "eventTypes": {
            "type": "array",
            "description": "One or more event types to subscribe to. Account owners may only subscribe to collection events (v1.collection.*). Partner accounts may only subscribe to onboarding events (v1.onboarding.*).",
            "items": {
              "type": "string",
              "description": "Webhook event identifier",
              "enum": [
                "v1.collection.payment_request.created",
                "v1.collection.payment_request.paid",
                "v1.collection.payment_request.part_paid",
                "v1.collection.payment_request.cancelled",
                "v1.collection.payment_request.payment.created",
                "v1.collection.payment_request.payment.pending",
                "v1.collection.payment_request.payment.received",
                "v1.collection.payment_request.payment.completed",
                "v1.collection.payment_request.payment.failed",
                "v1.collection.payment_request.payment.reversed",
                "v1.collection.payment_request.payment.payout.pending_approval",
                "v1.collection.payment_request.payment.payout.initiated",
                "v1.collection.payment_request.payment.payout.paid",
                "v1.collection.payment_request.payment.payout.failed",
                "v1.onboarding.account.created",
                "v1.onboarding.account.signed_up",
                "v1.onboarding.account.submitted",
                "v1.onboarding.account.approved",
                "v1.onboarding.account.rejected",
                "v1.onboarding.account.onboarded",
                "v1.onboarding.document.approved",
                "v1.onboarding.document.declined",
                "v1.onboarding.document.validation_warnings"
              ]
            },
            "minItems": 1
          }
        },
        "required": [
          "callbackUrl",
          "eventTypes"
        ]
      },
      "SubscriptionResponse": {
        "type": "object",
        "description": "Webhook registration response",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "ID of webhook subscription",
            "example": "5ed9fc67-7c25-418b-8240-b20822cd42ee"
          }
        },
        "required": [
          "id"
        ]
      },
      "CreatePaymentsRequest": {
        "type": "object",
        "description": "Request for creating payments",
        "properties": {
          "payments": {
            "type": "array",
            "description": "List of payment properties for creating payments",
            "items": {
              "$ref": "#/components/schemas/PaymentProperties"
            },
            "minItems": 1
          }
        },
        "required": [
          "payments"
        ]
      },
      "File": {
        "type": "object",
        "properties": {
          "mediaType": {
            "type": "string",
            "description": "The MIME type of the file, such as \u0027application/pdf\u0027 for a PDF file or \u0027image/jpeg\u0027 for a JPEG image",
            "example": "application/pdf",
            "minLength": 1
          },
          "name": {
            "type": "string",
            "description": "The name of the file, including the file extension",
            "example": "document.pdf",
            "minLength": 1
          },
          "base64EncodedFile": {
            "type": "string",
            "description": "The content of the file, encoded as a Base64 string",
            "example": "iVBORw0KG...",
            "minLength": 1,
            "writeOnly": true
          }
        },
        "required": [
          "base64EncodedFile",
          "mediaType",
          "name"
        ]
      },
      "Money": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number",
            "description": "The specific monetary value that is being converted from in the currency exchange",
            "example": 100
          },
          "currency": {
            "type": "string",
            "description": "The type of currency that the money is being exchanged from",
            "example": "USD",
            "minLength": 1,
            "pattern": "[A-Z]{3}"
          }
        },
        "required": [
          "amount",
          "currency"
        ]
      },
      "PaymentProperties": {
        "type": "object",
        "description": "Properties of a payment",
        "properties": {
          "externalId": {
            "type": "string",
            "description": "External ID of the payment",
            "example": "EXT123",
            "minLength": 1
          },
          "quoteId": {
            "type": "string",
            "format": "uuid",
            "description": "Quote ID associated with the payment",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "amount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount of the payment"
          },
          "reference": {
            "type": "string",
            "description": "Reference for the payment",
            "example": "REF123",
            "minLength": 1
          },
          "purposeOfPayment": {
            "type": "string",
            "description": "Purpose of the payment",
            "enum": [
              "COMPUTER_SERVICES",
              "FAMILY_SUPPORT",
              "EDUCATION",
              "MEDICAL_TREATMENT",
              "MAINTENANCE_EXPENSES",
              "TRAVEL",
              "SMALL_VALUE_REMITTANCE",
              "CONSTRUCTION_EXPENSES",
              "HOTEL_ACCOMMODATION",
              "ADVERTISING_EXPENSES",
              "ADVISORY_FEES",
              "BUSINESS_INSURANCE",
              "INSURANCE_CLAIMS",
              "DELIVERY_FEES",
              "EXPORTED_GOODS",
              "SERVICE_CHARGES",
              "LOAN_PAYMENT",
              "OFFICE_EXPENSES",
              "PROPERTY_PURCHASE",
              "PROPERTY_RENTAL",
              "ROYALTY_FEES",
              "SHARES_INVESTMENT",
              "FUND_INVESTMENT",
              "TAX_PAYMENT",
              "TRANSPORTATION_FEES",
              "UTILITY_BILLS",
              "PERSONAL_TRANSFER",
              "SALARY_PAYMENT",
              "INFLUENCER_PAYMENT",
              "DIVIDEND_PAYMENT",
              "OTHER_FEES",
              "OTHER"
            ]
          },
          "beneficiaryId": {
            "type": "string",
            "format": "uuid",
            "description": "Beneficiary ID associated with the payment",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "documentReference": {
            "type": "string",
            "description": "Document reference associated with the payment",
            "example": "DOC123"
          },
          "document": {
            "$ref": "#/components/schemas/File",
            "description": "Document associated with the payment"
          }
        },
        "required": [
          "amount",
          "beneficiaryId",
          "externalId",
          "purposeOfPayment",
          "quoteId",
          "reference"
        ]
      },
      "PageMetadata": {
        "type": "object",
        "properties": {
          "size": {
            "type": "integer",
            "format": "int64"
          },
          "number": {
            "type": "integer",
            "format": "int64"
          },
          "totalElements": {
            "type": "integer",
            "format": "int64"
          },
          "totalPages": {
            "type": "integer",
            "format": "int64"
          }
        }
      },
      "PagedModelPayment": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Payment"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageMetadata"
          }
        }
      },
      "Payment": {
        "type": "object",
        "description": "Payment details",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the payment",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "status": {
            "$ref": "#/components/schemas/PaymentStatus"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Creation time of the payment",
            "example": "2023-01-01T00:00:00Z"
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Completion time of the payment",
            "example": "2023-01-01T00:00:00Z"
          },
          "externalId": {
            "type": "string",
            "description": "External ID of the payment",
            "example": "EXT123",
            "minLength": 1
          },
          "quoteId": {
            "type": "string",
            "format": "uuid",
            "description": "Quote ID associated with the payment",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "amount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount of the payment"
          },
          "reference": {
            "type": "string",
            "description": "Reference for the payment",
            "example": "REF123",
            "minLength": 1
          },
          "purposeOfPayment": {
            "type": "string",
            "description": "Purpose of the payment",
            "enum": [
              "COMPUTER_SERVICES",
              "FAMILY_SUPPORT",
              "EDUCATION",
              "MEDICAL_TREATMENT",
              "MAINTENANCE_EXPENSES",
              "TRAVEL",
              "SMALL_VALUE_REMITTANCE",
              "CONSTRUCTION_EXPENSES",
              "HOTEL_ACCOMMODATION",
              "ADVERTISING_EXPENSES",
              "ADVISORY_FEES",
              "BUSINESS_INSURANCE",
              "INSURANCE_CLAIMS",
              "DELIVERY_FEES",
              "EXPORTED_GOODS",
              "SERVICE_CHARGES",
              "LOAN_PAYMENT",
              "OFFICE_EXPENSES",
              "PROPERTY_PURCHASE",
              "PROPERTY_RENTAL",
              "ROYALTY_FEES",
              "SHARES_INVESTMENT",
              "FUND_INVESTMENT",
              "TAX_PAYMENT",
              "TRANSPORTATION_FEES",
              "UTILITY_BILLS",
              "PERSONAL_TRANSFER",
              "SALARY_PAYMENT",
              "INFLUENCER_PAYMENT",
              "DIVIDEND_PAYMENT",
              "OTHER_FEES",
              "OTHER"
            ]
          },
          "beneficiaryId": {
            "type": "string",
            "format": "uuid",
            "description": "Beneficiary ID associated with the payment",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "documentReference": {
            "type": "string",
            "description": "Document reference associated with the payment",
            "example": "DOC123"
          },
          "document": {
            "$ref": "#/components/schemas/File",
            "description": "Document associated with the payment"
          },
          "paymentProperties": {
            "description": "Payment properties object"
          }
        },
        "required": [
          "amount",
          "beneficiaryId",
          "createdAt",
          "externalId",
          "id",
          "purposeOfPayment",
          "quoteId",
          "reference"
        ]
      },
      "PaymentStatus": {
        "type": "object",
        "description": "Status of a payment",
        "properties": {
          "state": {
            "type": "string",
            "description": "State of the payment",
            "enum": [
              "DRAFT",
              "CANCELLED",
              "PENDING_APPROVAL",
              "DUE",
              "PAID"
            ]
          },
          "reason": {
            "type": "string",
            "description": "Reason for the payment status"
          },
          "complete": {
            "type": "boolean",
            "description": "Payment status",
            "example": false
          }
        },
        "required": [
          "state"
        ]
      },
      "PaymentQuoteRequest": {
        "type": "object",
        "description": "Payment quote request details",
        "properties": {
          "currency": {
            "type": "string",
            "description": "Currency for the payment quote request",
            "example": "AED",
            "pattern": "[A-Z]{3}"
          },
          "country": {
            "type": "string",
            "description": "Country for the payment quote request",
            "example": "AE"
          }
        },
        "required": [
          "country",
          "currency"
        ]
      },
      "PaymentQuote": {
        "type": "object",
        "description": "Payment quote details",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique ID of the payment quote",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "fee": {
            "$ref": "#/components/schemas/Money",
            "description": "Fee associated with the payment quote"
          }
        },
        "required": [
          "fee",
          "id"
        ]
      },
      "ExchangeQuoteRequest": {
        "type": "object",
        "description": "Request for an exchange quote",
        "properties": {
          "from": {
            "$ref": "#/components/schemas/Money",
            "description": "Details of the currency and amount being exchanged from"
          },
          "to": {
            "$ref": "#/components/schemas/Money",
            "description": "Details of the currency and amount being exchanged to"
          },
          "settlementDate": {
            "type": "string",
            "format": "date",
            "description": "Settlement date for the exchange quote",
            "example": "2023-12-31"
          }
        },
        "required": [
          "from",
          "settlementDate",
          "to"
        ]
      },
      "ExchangeQuote": {
        "type": "object",
        "description": "Exchange quote record",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique ID of the exchange quote"
          },
          "rate": {
            "$ref": "#/components/schemas/Rate",
            "description": "Rate of the exchange quote"
          },
          "from": {
            "$ref": "#/components/schemas/Money",
            "description": "The amount and currency being exchanged from"
          },
          "to": {
            "$ref": "#/components/schemas/Money",
            "description": "The amount and currency being exchanged to"
          },
          "expiresAt": {
            "type": "string",
            "format": "date",
            "description": "Expiration date of the exchange quote",
            "example": "2023-12-31"
          },
          "settlementDate": {
            "type": "string",
            "format": "date",
            "description": "Settlement date of the exchange quote",
            "example": "2023-12-31"
          }
        },
        "required": [
          "expiresAt",
          "from",
          "id",
          "rate",
          "settlementDate",
          "to"
        ]
      },
      "Rate": {
        "type": "object",
        "properties": {
          "price": {
            "type": "number"
          },
          "currencyPair": {
            "type": "string",
            "minLength": 1
          },
          "type": {
            "type": "string",
            "enum": [
              "BID",
              "OFFER"
            ]
          }
        },
        "required": [
          "currencyPair",
          "price",
          "type"
        ]
      },
      "ExchangeRequest": {
        "type": "object",
        "description": "Request for an exchange",
        "properties": {
          "quoteId": {
            "type": "string",
            "format": "uuid",
            "description": "The unique ID of the quote for the exchange",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "externalId": {
            "type": "string",
            "description": "A unique identifier for this request, generated by the client",
            "example": "clientGeneratedId"
          }
        },
        "required": [
          "externalId",
          "quoteId"
        ]
      },
      "Exchange": {
        "type": "object",
        "description": "Exchange record",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique ID of the exchange",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "shortId": {
            "type": "string",
            "description": "Short ID of the exchange",
            "example": "TR123",
            "minLength": 1
          },
          "externalId": {
            "type": "string",
            "description": "External ID of the exchange",
            "example": "EX123",
            "minLength": 1
          },
          "rate": {
            "$ref": "#/components/schemas/Rate",
            "description": "Rate of the exchange"
          },
          "from": {
            "$ref": "#/components/schemas/Money",
            "description": "Money from the exchange"
          },
          "to": {
            "$ref": "#/components/schemas/Money",
            "description": "Money to the exchange"
          },
          "settlementDate": {
            "type": "string",
            "format": "date",
            "description": "Settlement date of the exchange",
            "example": "2023-12-31"
          },
          "exchangeStatus": {
            "$ref": "#/components/schemas/ExchangeStatus",
            "description": "Status of the exchange"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Creation time of the exchange",
            "example": "2023-01-01T00:00:00Z"
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Completion time of the exchange",
            "example": "2023-01-02T00:00:00Z"
          }
        },
        "required": [
          "createdAt",
          "exchangeStatus",
          "externalId",
          "from",
          "id",
          "rate",
          "settlementDate",
          "shortId",
          "to"
        ]
      },
      "ExchangeStatus": {
        "type": "object",
        "description": "Status of the exchange",
        "properties": {
          "state": {
            "type": "string",
            "description": "State of the exchange",
            "enum": [
              "DRAFT",
              "SUBMITTING",
              "UNKNOWN",
              "SUBMITTED",
              "ORDERED",
              "ORDER_SETTLED",
              "SUCCESS",
              "REJECTED",
              "FAILED",
              "CANCELLED"
            ],
            "example": "SUBMITTED"
          },
          "reason": {
            "type": "string",
            "description": "Reason for the exchange state",
            "enum": [
              "DRAFT",
              "SUBMITTING",
              "UNKNOWN",
              "SUBMITTED",
              "ORDERED",
              "ORDER_SETTLED",
              "SUCCESS",
              "REJECTED",
              "FAILED",
              "FAILED_BREACHES_LIMIT",
              "CANCELLED"
            ],
            "example": "REJECTED_BREACHES_LIMIT"
          },
          "complete": {
            "type": "boolean",
            "description": "Completion status of the exchange",
            "example": false
          }
        },
        "required": [
          "state"
        ]
      },
      "SimulatePaymentRequest": {
        "type": "object",
        "description": "Request to simulate a payment against a payment request in sandbox environments",
        "properties": {
          "paymentRequestId": {
            "type": "string",
            "format": "uuid",
            "description": "The payment request ID returned from POST /v1/collections/payment-requests",
            "example": "d4f7a8b2-1234-5678-9abc-def012345678"
          },
          "paymentMethod": {
            "type": "string",
            "description": "The payment method to simulate",
            "enum": [
              "BANK_TRANSFER",
              "CRYPTO",
              "CARD"
            ],
            "example": "BANK_TRANSFER"
          },
          "amount": {
            "type": "number",
            "description": "Amount to simulate. If omitted, the full remaining balance is used",
            "example": 1000.0
          },
          "cryptoCurrency": {
            "type": "string",
            "description": "Cryptocurrency to simulate (USDT or USDC). Defaults to USDT. Only applicable when paymentMethod is CRYPTO",
            "example": "USDT"
          }
        },
        "required": [
          "paymentMethod",
          "paymentRequestId"
        ]
      },
      "SimulatePaymentResponse": {
        "type": "object",
        "description": "Result of a simulated payment in sandbox environments",
        "properties": {
          "paymentRequestId": {
            "type": "string",
            "format": "uuid",
            "description": "The payment request ID"
          },
          "paymentId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the simulated payment. Use this to query payment details via GET /v1/collections/payment-requests/{paymentRequestId}"
          },
          "paymentReference": {
            "type": "string",
            "description": "The unique reference for the simulated payment"
          },
          "paymentMethod": {
            "type": "string",
            "description": "The payment method that was simulated",
            "enum": [
              "BANK_TRANSFER",
              "CRYPTO",
              "CARD"
            ]
          },
          "amount": {
            "type": "number",
            "description": "The amount that was simulated"
          },
          "currency": {
            "type": "string",
            "description": "The currency of the payment",
            "example": "AED"
          },
          "paymentRequestStatus": {
            "type": "string",
            "description": "The updated status of the payment request after simulation (PAID or PART_PAID)"
          }
        }
      },
      "PayerCreateRequest": {
        "type": "object",
        "properties": {
          "externalId": {
            "type": "string",
            "description": "External ID of the payer",
            "example": "EX123",
            "maxLength": 36,
            "minLength": 0
          },
          "type": {
            "type": "string",
            "description": "The type of the payer",
            "enum": [
              "INDIVIDUAL",
              "BUSINESS"
            ]
          },
          "fullLegalName": {
            "type": "string",
            "description": "Full legal name of the payer",
            "maxLength": 255,
            "minLength": 0
          },
          "emailAddress": {
            "type": "string",
            "description": "Email address of the payer",
            "maxLength": 255,
            "minLength": 0
          },
          "phoneNumber": {
            "type": "string",
            "description": "Required if payer is crypto enabled",
            "maxLength": 255,
            "minLength": 0
          },
          "country": {
            "type": "string",
            "description": "Country of the payer",
            "minLength": 1
          },
          "notificationEnabled": {
            "type": "boolean",
            "description": "Enable to send transaction-update emails to this payer"
          },
          "address": {
            "type": "string",
            "description": "Required if payer is crypto enabled",
            "maxLength": 255,
            "minLength": 0
          },
          "areaOrCity": {
            "type": "string",
            "description": "Required if payer is crypto enabled and type INDIVIDUAL",
            "maxLength": 255,
            "minLength": 0
          },
          "provinceOrState": {
            "type": "string",
            "description": "Required if payer is crypto enabled and type BUSINESS",
            "maxLength": 255,
            "minLength": 0
          },
          "postalCode": {
            "type": "string",
            "description": "Required if payer is crypto enabled and type BUSINESS",
            "maxLength": 255,
            "minLength": 0
          },
          "cryptoEnabled": {
            "type": "boolean",
            "description": "Set to true to allow this payer to make cryptocurrency payments"
          }
        },
        "required": [
          "country",
          "cryptoEnabled",
          "emailAddress",
          "externalId",
          "fullLegalName",
          "type"
        ]
      },
      "PaymentRequestCreateRequest": {
        "type": "object",
        "description": "Payload for creating a new payment request",
        "properties": {
          "executionMode": {
            "type": "string",
            "description": "Specifies how the payer is expected to complete the payment request",
            "enum": [
              "PAYMENT_LINK",
              "HOSTED_PAGE"
            ]
          },
          "externalId": {
            "type": "string",
            "description": "Client-provided identifier for idempotency or external tracking",
            "example": "REQ-123456",
            "maxLength": 255,
            "minLength": 0
          },
          "payerId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of an existing payer. Provide either `payerId` or `payer`, but not both.\n",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "payer": {
            "$ref": "#/components/schemas/PayerCreateRequest",
            "description": "Inline payer details to create a new payer along with the payment request.\nProvide either `payer` or `payerId`, but not both.\n"
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 or crypto currency code for settlement",
            "example": "AED",
            "maxLength": 5,
            "minLength": 0,
            "pattern": "[A-Z]{3,5}"
          },
          "amount": {
            "type": "number",
            "description": "Amount expected to be received",
            "example": 99.99
          },
          "dueDate": {
            "type": "string",
            "format": "date",
            "description": "Optional due date for the payment to be completed",
            "example": "2025-06-30"
          },
          "documentReference": {
            "type": "string",
            "description": "Document reference such as an invoice or PO number",
            "example": "INV-2025-001",
            "maxLength": 255,
            "minLength": 0
          },
          "documentId": {
            "type": "string",
            "format": "uuid",
            "description": "UUID of the uploaded document associated with this payment request. May be required based on merchant configuration and selected payment method(s).",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "paymentMethods": {
            "type": "array",
            "description": "List of accepted payment methods for the payer",
            "example": [
              "CARD",
              "CRYPTO"
            ],
            "items": {
              "type": "string",
              "enum": [
                "CARD",
                "BANK_TRANSFER",
                "CRYPTO"
              ]
            },
            "minItems": 1
          },
          "successRedirectUrl": {
            "type": "string",
            "description": "URL to redirect the payer when they have successfully completed their payment journey.\n\n**Important:** This redirect does NOT confirm that funds have been received. For asynchronous\npayment methods like bank transfers, the payer may have successfully submitted payment\ninstructions, but funds may not yet be received by Hubpay.\n\n**Always verify payment status** via webhooks or API lookup before fulfilling orders or\nproviding services.\n\nHubpay will append `paymentRequestId` and `paymentId` as query parameters to this URL\nduring the **redirect flow only**.\n",
            "example": "https://example.com/success",
            "maxLength": 255,
            "minLength": 0
          },
          "cancelRedirectUrl": {
            "type": "string",
            "description": "URL to redirect the user after payment cancellation",
            "example": "https://example.com/cancel",
            "maxLength": 255,
            "minLength": 0
          },
          "autoSendPaymentLink": {
            "type": "boolean",
            "default": false,
            "description": "When true, the payment link will be automatically sent to the payer\u0027s email address upon creation.\n"
          },
          "payoutDetails": {
            "$ref": "#/components/schemas/PayoutDetails",
            "description": "Details for payout to a beneficiary.\nIf this is provided then evey payment made against this request will be paid out to the provided beneficiary.\nOmit this object to have funds settled to your Hubpay wallet.\n"
          }
        },
        "required": [
          "amount",
          "currency",
          "documentReference",
          "executionMode",
          "externalId",
          "paymentMethods"
        ]
      },
      "AccountCreateRequest": {
        "type": "object",
        "properties": {
          "accountType": {
            "type": "string",
            "description": "Account type.",
            "enum": [
              "INDIVIDUAL",
              "BUSINESS"
            ]
          },
          "accountName": {
            "type": "string",
            "description": "Name of account.",
            "maxLength": 100,
            "minLength": 0,
            "pattern": "^[a-zA-Z0-9\\s\\-\\.\u0026]+$"
          },
          "email": {
            "type": "string",
            "description": "Email address.",
            "maxLength": 255,
            "minLength": 0
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number of customer (preferably mobile).",
            "maxLength": 30,
            "minLength": 0
          },
          "countryCode": {
            "type": "string",
            "description": "Country of residence for INDIVIDUAL. Country of registration for BUSINESS.",
            "example": "GB",
            "minLength": 1
          },
          "externalId": {
            "type": "string",
            "description": "Client-provided identifier for the account. Used for idempotency and external reference.",
            "maxLength": 36,
            "minLength": 0
          }
        },
        "required": [
          "accountName",
          "accountType",
          "countryCode",
          "externalId",
          "phoneNumber"
        ]
      },
      "CreateInviteRequest": {
        "type": "object",
        "description": "Request to invite a user to the account",
        "properties": {
          "email": {
            "type": "string",
            "description": "Email address of the user to invite",
            "maxLength": 255,
            "minLength": 0
          },
          "fullName": {
            "type": "string",
            "description": "Full name of the user to invite",
            "maxLength": 255,
            "minLength": 0
          },
          "role": {
            "type": "string",
            "description": "User role within the account.\n\n- **OWNER** — Full account access. Can manage users, accept terms and conditions, and approve own transactions.\n- **ADMIN** — Full operational access. Can approve own transactions but cannot manage users.\n- **EXECUTOR** — Can create and approve payments and transfers. Cannot approve own transactions (segregation of duties).\n- **PREPARER** — Can draft payments and manage beneficiaries. Cannot execute or approve transactions.\n- **VIEWER** — Read-only access.\n",
            "enum": [
              "OWNER",
              "ADMIN",
              "EXECUTOR",
              "PREPARER",
              "VIEWER"
            ]
          }
        },
        "required": [
          "email",
          "fullName",
          "role"
        ]
      },
      "CreateInviteResponse": {
        "type": "object",
        "description": "Response after creating or resending a user invite",
        "properties": {
          "inviteId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the invite"
          },
          "inviteUrl": {
            "type": "string",
            "description": "URL the invited user should visit to accept the invite"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the invite expires. Invite links expire 14 days after creation."
          }
        }
      },
      "AccountDocumentRequest": {
        "type": "object",
        "properties": {
          "documentType": {
            "type": "string",
            "description": "Document type identifier for the document requirement.\nSee [Get document requirements API](./get-document-requirements)\n\nAllowed values:\n- **TRADE_LICENSE**: Valid Trade/Commercial license\n- **MEMORANDUM_OF_ASSOCIATION_OR_ARTICLES_OF_ASSOCIATION**: Memorandum of Association or Articles of Association\n- **BUSINESS_PROOF_OF_ADDRESS**: Valid proof of business address\n- **POWER_OF_ATTORNEY**: Power of attorney or Board resolution\n- **BANK_STATEMENT**: 3 months bank statement\n- **LATEST_AUDITED_FINANCIAL_STATEMENTS**: Latest Audited Financial Statements\n- **LETTER_OF_AUTHORISATION_WITH_TERMS_AND_CONDITIONS**: Letter of Authorisation (with Terms and Conditions)\n",
            "enum": [
              "TRADE_LICENSE",
              "MEMORANDUM_OF_ASSOCIATION_OR_ARTICLES_OF_ASSOCIATION",
              "BUSINESS_PROOF_OF_ADDRESS",
              "POWER_OF_ATTORNEY",
              "BANK_STATEMENT",
              "LATEST_AUDITED_FINANCIAL_STATEMENTS",
              "LETTER_OF_AUTHORISATION_WITH_TERMS_AND_CONDITIONS",
              "INVESTMENT_AGREEMENT"
            ]
          },
          "documentUploadIds": {
            "type": "array",
            "description": "One or more document upload IDs associated with this document type. See /account/{id}/document/upload",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "minItems": 1
          }
        },
        "required": [
          "documentType",
          "documentUploadIds"
        ]
      },
      "AccountDocument": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "NOT_SUBMITTED",
              "PENDING_REVIEW",
              "DECLINED",
              "APPROVED",
              "PENDING_VERIFICATION",
              "VALIDATION_WARNINGS"
            ]
          },
          "required": {
            "type": "boolean"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "declinedReason": {
            "type": "string",
            "enum": [
              "NOT_CERTIFIED",
              "INVALID_DOCUMENT_TYPE",
              "QUALITY",
              "OTHER_SEE_SUPPORT"
            ]
          },
          "declinedCustomerDisplayReason": {
            "type": "string"
          },
          "validationStatus": {
            "type": "string",
            "description": "When status is VALIDATION_WARNINGS, the specific warning category from automated document review.",
            "enum": [
              "WARNING_NOT_CERTIFIED",
              "WARNING_SUSPECTED_INVALID_DOCUMENT_TYPE",
              "WARNING_QUALITY_INSUFFICIENT",
              "WARNING_EXPIRED_DOCUMENT",
              "WARNING_EXPIRING_DOCUMENT",
              "WARNING_OTHER",
              "WARNING_REQUIRED_FIELDS_MISSING",
              "CRITICAL_CERTAIN_INVALID_DOCUMENT_TYPE",
              "CRITICAL_DOCUMENT_UNREADABLE",
              "CRITICAL_OTHER"
            ]
          },
          "validationMessage": {
            "type": "string",
            "description": "When status is VALIDATION_WARNINGS, a human-readable warning message safe to show the end customer."
          },
          "lastUpdatedBy": {
            "type": "string"
          },
          "lastUpdatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "documentUploads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentUpload"
            }
          },
          "documentType": {
            "type": "string",
            "description": "Document type identifier for the document requirement.\n\nAllowed values:\n- **TRADE_LICENSE**: Valid Trade/Commercial license\n- **MEMORANDUM_OF_ASSOCIATION_OR_ARTICLES_OF_ASSOCIATION**: Memorandum of Association or Articles of Association\n- **BUSINESS_PROOF_OF_ADDRESS**: Valid proof of business address\n- **POWER_OF_ATTORNEY**: Power of attorney or Board resolution\n- **BANK_STATEMENT**: 3 months bank statement\n- **LATEST_AUDITED_FINANCIAL_STATEMENTS**: Latest Audited Financial Statements\n- **LETTER_OF_AUTHORISATION_WITH_TERMS_AND_CONDITIONS**: Letter of Authorisation (with Terms and Conditions)\n",
            "enum": [
              "TRADE_LICENSE",
              "MEMORANDUM_OF_ASSOCIATION_OR_ARTICLES_OF_ASSOCIATION",
              "BUSINESS_PROOF_OF_ADDRESS",
              "POWER_OF_ATTORNEY",
              "BANK_STATEMENT",
              "LATEST_AUDITED_FINANCIAL_STATEMENTS",
              "LETTER_OF_AUTHORISATION_WITH_TERMS_AND_CONDITIONS",
              "INVESTMENT_AGREEMENT"
            ]
          }
        },
        "required": [
          "description",
          "documentType",
          "documentUploads",
          "id",
          "required",
          "status",
          "title"
        ]
      },
      "ApprovableDocument": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "NOT_SUBMITTED",
              "PENDING_REVIEW",
              "DECLINED",
              "APPROVED",
              "PENDING_VERIFICATION",
              "VALIDATION_WARNINGS"
            ]
          },
          "required": {
            "type": "boolean"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          },
          "declinedReason": {
            "type": "string",
            "enum": [
              "NOT_CERTIFIED",
              "INVALID_DOCUMENT_TYPE",
              "QUALITY",
              "OTHER_SEE_SUPPORT"
            ]
          },
          "declinedCustomerDisplayReason": {
            "type": "string"
          },
          "validationStatus": {
            "type": "string",
            "description": "When status is VALIDATION_WARNINGS, the specific warning category from automated document review.",
            "enum": [
              "WARNING_NOT_CERTIFIED",
              "WARNING_SUSPECTED_INVALID_DOCUMENT_TYPE",
              "WARNING_QUALITY_INSUFFICIENT",
              "WARNING_EXPIRED_DOCUMENT",
              "WARNING_EXPIRING_DOCUMENT",
              "WARNING_OTHER",
              "WARNING_REQUIRED_FIELDS_MISSING",
              "CRITICAL_CERTAIN_INVALID_DOCUMENT_TYPE",
              "CRITICAL_DOCUMENT_UNREADABLE",
              "CRITICAL_OTHER"
            ]
          },
          "validationMessage": {
            "type": "string",
            "description": "When status is VALIDATION_WARNINGS, a human-readable warning message safe to show the end customer."
          },
          "lastUpdatedBy": {
            "type": "string"
          },
          "lastUpdatedAt": {
            "type": "string",
            "format": "date-time"
          },
          "documentUploads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentUpload"
            }
          }
        },
        "required": [
          "description",
          "documentUploads",
          "id",
          "required",
          "status",
          "title"
        ]
      },
      "ProblemDetail": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer",
            "format": "int32"
          },
          "detail": {
            "type": "string"
          },
          "instance": {
            "type": "string",
            "format": "uri"
          },
          "properties": {
            "type": "object",
            "additionalProperties": {}
          }
        }
      },
      "AuthRequest": {
        "type": "object",
        "description": "Request payload for client authentication",
        "properties": {
          "clientId": {
            "type": "string",
            "description": "The client ID issued to the consumer",
            "example": "your-client-id-123"
          },
          "clientSecret": {
            "type": "string",
            "description": "The client secret associated with the client ID",
            "example": "your-client-secret-abc"
          }
        },
        "required": [
          "clientId",
          "clientSecret"
        ]
      },
      "AuthResponse": {
        "type": "object",
        "description": "Response containing access token and metadata",
        "properties": {
          "access_token": {
            "type": "string",
            "description": "The JWT access token",
            "example": "eyJraWQiOiJ..."
          },
          "expires_in": {
            "type": "integer",
            "format": "int32",
            "description": "Time in seconds until the token expires",
            "example": 3600
          },
          "token_type": {
            "type": "string",
            "description": "The token type returned (usually \u0027Bearer\u0027)",
            "example": "Bearer"
          }
        }
      },
      "PagedModelWebhookRegister": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookRegister"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageMetadata"
          }
        }
      },
      "WebhookRegister": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "ownerUserAccountId": {
            "type": "string",
            "format": "uuid"
          },
          "endpointUrl": {
            "type": "string"
          },
          "algorithm": {
            "type": "string",
            "enum": [
              "SHA_256"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "INACTIVE"
            ]
          }
        }
      },
      "SigningSecretResponse": {
        "type": "object",
        "description": "Webhook signing secret response",
        "properties": {
          "key": {
            "type": "string",
            "description": "The HMAC signing secret key used to verify webhook payload signatures"
          }
        },
        "required": [
          "key"
        ]
      },
      "PagedModelWalletBalance": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WalletBalance"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageMetadata"
          }
        }
      },
      "WalletBalance": {
        "type": "object",
        "description": "Details of a wallet and its balance information",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the wallet"
          },
          "currency": {
            "type": "string",
            "description": "Currency Code",
            "pattern": "[A-Z]{3}"
          },
          "availableBalance": {
            "type": "number",
            "description": "Available unallocated balance"
          },
          "pending": {
            "type": "number",
            "description": "Funds reserved/pending"
          },
          "expectedIncoming": {
            "type": "number",
            "description": "Funds expected incoming"
          },
          "expectedOutgoing": {
            "type": "number",
            "description": "Funds expected outgoing"
          },
          "due": {
            "type": "number",
            "description": "Total settlements due"
          }
        }
      },
      "PagedModelTransaction": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Transaction"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageMetadata"
          }
        }
      },
      "Transaction": {
        "type": "object",
        "description": "Transaction details",
        "properties": {
          "walletId": {
            "type": "string",
            "format": "uuid",
            "description": "Wallet ID of the transaction",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique ID of the transaction",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "shortId": {
            "type": "string",
            "description": "Short ID of the transaction",
            "example": "TR123"
          },
          "externalId": {
            "type": "string",
            "description": "External ID of the transaction",
            "example": "EXT123"
          },
          "type": {
            "type": "string",
            "description": "Type of the transaction",
            "enum": [
              "PAYMENT",
              "DEPOSIT",
              "CHARGE",
              "EXCHANGE",
              "OTHER_CREDIT_DEBIT"
            ],
            "example": "DEPOSIT"
          },
          "status": {
            "$ref": "#/components/schemas/TransactionStatus",
            "description": "Status of the transaction",
            "example": "COMPLETED"
          },
          "amount": {
            "$ref": "#/components/schemas/Money",
            "description": "Amount of the transaction"
          },
          "deposit": {
            "$ref": "#/components/schemas/TransactionDeposit",
            "description": "Details of the deposit transaction"
          },
          "payment": {
            "$ref": "#/components/schemas/TransactionPayment",
            "description": "Details of the payment transaction"
          },
          "exchange": {
            "$ref": "#/components/schemas/TransactionExchange",
            "description": "Details of the exchange transaction"
          },
          "charge": {
            "$ref": "#/components/schemas/TransactionCharge",
            "description": "Details of the charge transaction"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "Creation time of the transaction",
            "example": "2023-01-01T00:00:00Z"
          },
          "completedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Completion time of the transaction",
            "example": "2023-01-01T00:00:00Z"
          }
        },
        "required": [
          "amount",
          "createdAt",
          "externalId",
          "id",
          "shortId",
          "status",
          "type",
          "walletId"
        ]
      },
      "TransactionCharge": {
        "type": "object",
        "description": "Details of the charge transaction",
        "properties": {
          "chargeForTransactionId": {
            "type": "string",
            "description": "Charge for the transaction ID",
            "example": "CHG123"
          }
        }
      },
      "TransactionDeposit": {
        "type": "object",
        "description": "Details of the deposit transaction",
        "properties": {
          "senderAccountIdentifier": {
            "type": "string",
            "description": "Sender\u0027s account identifier for the deposit",
            "example": "ACC123"
          },
          "senderName": {
            "type": "string",
            "description": "Name of the sender for the deposit",
            "example": "John Doe"
          },
          "senderReference": {
            "type": "string",
            "description": "Reference for the sender\u0027s deposit",
            "example": "REF123"
          }
        },
        "required": [
          "senderAccountIdentifier",
          "senderName",
          "senderReference"
        ]
      },
      "TransactionExchange": {
        "type": "object",
        "description": "Details of the exchange transaction",
        "properties": {
          "rate": {
            "$ref": "#/components/schemas/Rate",
            "description": "Rate of the exchange"
          },
          "from": {
            "$ref": "#/components/schemas/Money",
            "description": "Money from the exchange"
          },
          "to": {
            "$ref": "#/components/schemas/Money",
            "description": "Money to the exchange"
          }
        },
        "required": [
          "from",
          "rate",
          "to"
        ]
      },
      "TransactionPayment": {
        "type": "object",
        "description": "Details of the payment transaction",
        "properties": {
          "beneficiaryAccountIdentifier": {
            "type": "string",
            "description": "Beneficiary\u0027s account identifier for the payment",
            "example": "BEN123"
          },
          "beneficiaryName": {
            "type": "string",
            "description": "Name of the beneficiary for the payment",
            "example": "Jane Doe"
          },
          "paymentReference": {
            "type": "string",
            "description": "Reference for the payment",
            "example": "PAY123"
          }
        },
        "required": [
          "beneficiaryAccountIdentifier",
          "beneficiaryName",
          "paymentReference"
        ]
      },
      "TransactionStatus": {
        "type": "object",
        "description": "Status of the transaction",
        "properties": {
          "state": {
            "type": "string",
            "description": "State of the transaction",
            "enum": [
              "FUNDS_REQUIRED",
              "PENDING",
              "AWAITING_APPROVAL",
              "PROCESSING",
              "SUCCESS",
              "FAILED",
              "REVERSED"
            ],
            "example": "COMPLETED"
          },
          "reason": {
            "type": "string",
            "description": "Reason for the transaction state",
            "example": "LIMIT_REACHED"
          },
          "complete": {
            "type": "boolean",
            "description": "Completion status of the transaction",
            "example": true
          }
        },
        "required": [
          "state"
        ]
      },
      "FundingAccountDetails": {
        "type": "object",
        "description": "Details of a funding account",
        "properties": {
          "accountNumber": {
            "type": "string",
            "description": "The bank account number, either an iban or an account number"
          },
          "routingCode": {
            "type": "string",
            "description": "Routing code for the bank, usually bic code"
          },
          "accountName": {
            "type": "string",
            "description": "Name of the beneficiary associated with the account"
          },
          "bankName": {
            "type": "string",
            "description": "Name of the bank"
          },
          "bankAddress": {
            "type": "string",
            "description": "Address of the bank"
          },
          "currency": {
            "type": "string",
            "description": "The currency of the funding account"
          },
          "paymentMethod": {
            "type": "string",
            "description": "The payment method supported by this bank account",
            "enum": [
              "Local Payment",
              "SWIFT Payment",
              "ACH Payment",
              "UK Faster Payment",
              "Fedwire Payment",
              "EFT Payment",
              "SEPA Payment"
            ]
          }
        }
      },
      "CollectionRate": {
        "type": "object",
        "description": "Collection quote details",
        "properties": {
          "sourceType": {
            "type": "string",
            "description": "Source type",
            "enum": [
              "FIAT",
              "CRYPTO"
            ]
          },
          "sourceCurrency": {
            "type": "string",
            "description": "Currency the payer will send (fiat or crypto)",
            "example": "AED",
            "pattern": "[A-Z]{3,5}"
          },
          "sourceCountry": {
            "type": "string",
            "description": "Country of the payer",
            "example": "GB",
            "pattern": "[A-Z]{2}"
          },
          "destinationType": {
            "type": "string",
            "description": "Payment type: FIAT or CRYPTO",
            "enum": [
              "FIAT",
              "CRYPTO"
            ]
          },
          "destinationCurrency": {
            "type": "string",
            "description": "Currency of the collection. This is the amount credited to the destination account",
            "example": "AED",
            "pattern": "[A-Z]{3,5}"
          },
          "destinationAmount": {
            "type": "number",
            "description": "Collection amount to be received in the destination currency",
            "example": 1000.0,
            "minimum": 0.01
          },
          "sourceAmount": {
            "type": "number",
            "description": "Amount required to settle the payment in the source currency",
            "example": 1000.0,
            "minimum": 0.01
          },
          "exchangeRate": {
            "type": "number",
            "description": "Rate as multiplier from source to destination currency",
            "example": 1.59234
          }
        },
        "required": [
          "destinationAmount",
          "destinationCurrency",
          "destinationType",
          "sourceAmount",
          "sourceCountry",
          "sourceCurrency",
          "sourceType"
        ]
      },
      "PagedModelPaymentRequest": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentRequest"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageMetadata"
          }
        }
      },
      "PaymentReceipt": {
        "type": "object",
        "description": "Receipt file uploaded by a payer as proof of payment. Currently supports bank transfer receipts (e.g., screenshots, confirmations).",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the receipt",
            "example": "550e8400-e29b-41d4-a716-446655440001"
          },
          "fileName": {
            "type": "string",
            "description": "Original file name uploaded by the payer",
            "example": "bank-transfer-screenshot.pdf"
          },
          "contentType": {
            "type": "string",
            "description": "MIME content type",
            "example": "application/pdf"
          },
          "fileSize": {
            "type": "integer",
            "format": "int64",
            "description": "File size in bytes",
            "example": 245760
          },
          "uploadedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the payer uploaded the receipt",
            "example": "2025-11-06T10:30:00Z"
          },
          "downloadUrl": {
            "type": "string",
            "description": "Download URL for the receipt file",
            "example": "https://api.hubpay.io/v1/collections/payment-requests/payments/b0ae5614-2494-49fa-b075-8050b5eb84ba/receipts/550e8400-e29b-41d4-a716-446655440001/download"
          }
        }
      },
      "PaymentReceiptList": {
        "type": "object",
        "description": "List of receipts uploaded by payers for a specific payment. Currently supports bank transfer receipts (e.g., screenshots, confirmations).",
        "properties": {
          "paymentId": {
            "type": "string",
            "format": "uuid",
            "description": "Payment ID",
            "example": "b0ae5614-2494-49fa-b075-8050b5eb84ba"
          },
          "receipts": {
            "type": "array",
            "description": "List of receipt files uploaded by the payer",
            "items": {
              "$ref": "#/components/schemas/PaymentReceipt"
            }
          },
          "totalCount": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of receipts",
            "example": 2
          }
        }
      },
      "PagedModelPayer": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Payer"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageMetadata"
          }
        }
      },
      "PagedModelBeneficiary": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Beneficiary"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageMetadata"
          }
        }
      },
      "InviteResponse": {
        "type": "object",
        "description": "Invite details",
        "properties": {
          "inviteId": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier of the invite"
          },
          "maskedEmail": {
            "type": "string",
            "description": "Masked email address of the invited user"
          },
          "fullName": {
            "type": "string",
            "description": "Full name of the invited user"
          },
          "role": {
            "type": "string",
            "description": "Role assigned to the invited user",
            "enum": [
              "OWNER",
              "ADMIN",
              "EXECUTOR",
              "PREPARER",
              "VIEWER"
            ]
          },
          "inviteUrl": {
            "type": "string",
            "description": "URL the invited user should visit to accept the invite"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time",
            "description": "When the invite expires. Invite links expire 14 days after creation."
          },
          "status": {
            "type": "string",
            "description": "Current status of the invite.\n\n- **PENDING** — Invite has been created and is waiting for the user to accept.\n- **COMPLETED** — Invite has been accepted and the user has been linked to the account.\n- **REVOKED** — Invite was revoked because a new invite was issued via resend.\n- **EXPIRED** — Invite has passed its 14-day expiry window and can no longer be used.\n- **LOCKED** — Invite is locked due to too many failed email verification attempts.\n",
            "enum": [
              "PENDING",
              "COMPLETED",
              "REVOKED",
              "EXPIRED",
              "LOCKED"
            ]
          }
        }
      },
      "PagedModelRelatedPerson": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedPerson"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageMetadata"
          }
        }
      },
      "PagedModelRelatedCorporate": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RelatedCorporate"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageMetadata"
          }
        }
      },
      "PagedModelAccount": {
        "type": "object",
        "properties": {
          "content": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Account"
            }
          },
          "page": {
            "$ref": "#/components/schemas/PageMetadata"
          }
        }
      },
      "AccountDocumentsResponse": {
        "type": "object",
        "properties": {
          "accountDocuments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AccountDocument"
            }
          }
        },
        "required": [
          "accountDocuments"
        ]
      },
      "DocumentRequirement": {
        "type": "object",
        "properties": {
          "documentType": {
            "type": "string",
            "description": "Document type identifier for the document requirement.\n\nAllowed values:\n- **TRADE_LICENSE**: Valid Trade/Commercial license\n- **MEMORANDUM_OF_ASSOCIATION_OR_ARTICLES_OF_ASSOCIATION**: Memorandum of Association or Articles of Association\n- **BUSINESS_PROOF_OF_ADDRESS**: Valid proof of business address\n- **POWER_OF_ATTORNEY**: Power of attorney or Board resolution\n- **BANK_STATEMENT**: 3 months bank statement\n- **LATEST_AUDITED_FINANCIAL_STATEMENTS**: Latest Audited Financial Statements\n- **LETTER_OF_AUTHORISATION_WITH_TERMS_AND_CONDITIONS**: Letter of Authorisation (with Terms and Conditions)\n",
            "enum": [
              "TRADE_LICENSE",
              "MEMORANDUM_OF_ASSOCIATION_OR_ARTICLES_OF_ASSOCIATION",
              "BUSINESS_PROOF_OF_ADDRESS",
              "POWER_OF_ATTORNEY",
              "BANK_STATEMENT",
              "LATEST_AUDITED_FINANCIAL_STATEMENTS",
              "LETTER_OF_AUTHORISATION_WITH_TERMS_AND_CONDITIONS",
              "INVESTMENT_AGREEMENT"
            ]
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "required": {
            "type": "boolean"
          }
        },
        "required": [
          "description",
          "documentType",
          "required",
          "title"
        ]
      },
      "DocumentRequirementsResponse": {
        "type": "object",
        "properties": {
          "documentRequirements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentRequirement"
            }
          }
        },
        "required": [
          "documentRequirements"
        ]
      },
      "BusinessProfileResponse": {
        "type": "object",
        "properties": {
          "accountName": {
            "type": "string",
            "description": "Account name."
          },
          "countryOfRegistration": {
            "type": "string",
            "description": "Country of registration."
          },
          "industries": {
            "type": "array",
            "description": "Industry or industries in which the business operates.",
            "items": {
              "type": "string",
              "enum": [
                "GENERAL_TRADING",
                "MEDICAL_SUPPLIES",
                "AUTO_SPARE_PARTS",
                "RECRUITMENT",
                "TEXTILES",
                "MACHINERY_PARTS",
                "ADVISORY_FIRM",
                "CONSULTANCY",
                "HEALTHCARE_AND_DENTISTRY",
                "FOODSTUFF",
                "HOTEL_SUPPLIES",
                "SHIPPING_AND_TRANSPORT",
                "MEAT",
                "PERFUMES_TRADING",
                "WHOLESALERS",
                "PET_SUPPLIES_AND_FOODS",
                "AGRICULTURE_SUPPLIES",
                "FLOWER_SHOPS",
                "RAW_MATERIALS",
                "INFORMATION_TECHNOLOGY",
                "CHOCOLATE_AND_SWEETS",
                "MARINE_SUPPLIES",
                "EDUCATION",
                "ELECTRICAL_TRADING",
                "ACCOUNTING_TAXATION_PAYROLL_SERVICES",
                "ADULT_ENTERTAINMENT_AND_OR_PORNOGRAPHY",
                "ADVERTISING_MARKETING_AND_PR",
                "ADVOCACY_ORGANIZATIONS",
                "AEROSPACE_AND_DEFENSE",
                "AGRICULTURE",
                "AIRCRAFT_MANUFACTURER_AND_SPARE_PARTS",
                "AIRLINES",
                "AIR_CARGO",
                "AIRPORT_HARBOR_AND_TERMINAL_OPERATIONS",
                "ALCOHOLIC_BEVERAGES",
                "ALTERNATIVE_ENERGY_SOURCES",
                "AMUSEMENT_PARKS_AND_ATTRACTIONS",
                "ANIMAL_TRADING",
                "APPAREL_AND_ACCESSORIES_RETAILERS_AND_WHOLESALERS",
                "ARCHITECTURE_ENGINEERING_AND_DESIGN",
                "ARMS_MANUFACTURERS_AND_DEALERS",
                "AUCTION_SERVICES",
                "AUDIO_VIDEO_AND_PHOTOGRAPHY",
                "AUTOMOBILE_DEALERS_NEW_VEHICLES",
                "AUTOMOBILE_PARTS_WHOLESALERS",
                "AUTOMOTIVE_REPAIR_AND_MAINTENANCE",
                "BANKING_AND_FINANCIAL_SERVICES",
                "BEAUTY_SUPPLIES_AND_COSMETICS",
                "BIOTECHNOLOGY",
                "BLOOD_ORGANS_BODY_PARTS",
                "BOAT_AND_YACHT_DEALERS",
                "BUILDING_MATERIALS_CONCRETE_AND_GLASS",
                "CABLE_AND_TELEVISION_PROVIDERS",
                "CALL_CENTERS",
                "CAR_WASH_SERVICES",
                "CASINOS_GAMBLING_WAGERING_INSTITUTIONS_AND_ONLINE_GAMBLING",
                "CHEMICALS_PETROCHEMICALS_AND_PETROLEUM_PRODUCTS",
                "CLOTHING_AND_SHOE_STORES",
                "COLLEGES_AND_UNIVERSITIES",
                "COMPUTER_AND_ELECTRONICS",
                "COMMERCIAL_BROKERS",
                "COMPANY_SERVICE_PROVIDERS",
                "CONSTRUCTION_AND_REMODELING",
                "CONSTRUCTION_EQUIPMENT_AND_SUPPLIES",
                "CONSULTING_SERVICES",
                "COUNTERFEIT_PIRATED_GOODS",
                "CROWDFUNDING",
                "CRUISE_SHIP_OPERATIONS",
                "CRYPTO_CURRENCY_VIRTUAL_ASSETS_NFT",
                "CYBER_LOCKERS",
                "DATA_ANALYTICS_AND_MANAGEMENT",
                "DATA_AND_RECORDS_MANAGEMENT",
                "DATING_AGENCIES",
                "DEBT_COLLECTION_SERVICES",
                "DEPARTMENTAL_AND_GROCERY_STORES",
                "DIAGNOSTIC_LABORATORIES",
                "DIAMOND_GOLD_JEWELRY_PRECIOUS_METAL_AND_STONES_DEALERS",
                "DOCTORS_AND_HEALTH_CARE_PRACTITIONERS",
                "DRY_CLEANERS_AND_LAUNDRIES",
                "E_COMMERCE_AND_INTERNET_BUSINESS",
                "EDUCATION_SERVICES",
                "EMBASSIES_DIPLOMATIC_MISSIONS_AND_CONSULATE",
                "EXCHANGE_HOUSE",
                "FACILITIES_MANAGEMENT_AND_MAINTENANCE",
                "FISHING_HUNTING_AND_FORESTRY_AND_LOGGING",
                "FOLLOWER_AND_LIKE_FARMS",
                "FOOD_AND_BEVERAGE_SUPPLIERS",
                "FOOD_AND_DAIRY_PRODUCT_MANUFACTURING_AND_PACKAGING",
                "FLAVORS_AND_FRAGRANCES",
                "FREIGHT_HAULING_RAIL_AND_TRUCK",
                "FUNERAL_HOMES_AND_SERVICES",
                "FURNITURE_STORES_AND_MANUFACTURING",
                "GAMING",
                "GIFT_CARDS",
                "GENERAL_TRADING_OR_GOODS_WHOLESALERS",
                "GOVERNMENT_ORGANIZATIONS",
                "HACKING_MATERIALS",
                "HAIRDRESSERS_BARBER_SHOPS_AND_SALONS",
                "HARDWARE_AND_BUILDING_MATERIAL_DEALERS",
                "HEALTHCARE_AND_HOSPITALS",
                "HEAVY_EQUIPMENT_AND_MACHINERY_SPARE_PARTS_TRADING",
                "HOTELS",
                "HR_AND_RECRUITING_SERVICES",
                "INTERNATIONAL_BODIES_AND_ORGANIZATIONS",
                "INTERNET_PUBLISHING",
                "INVESTMENT",
                "IT_AND_NETWORK_SERVICES_AND_SUPPORT",
                "LAUNDRY_AND_DRY_CLEANING",
                "LAW_FIRMS_AND_LEGAL_SERVICES",
                "LENDING_AND_MORTGAGES",
                "LEASING_AIRCRAFTS",
                "LIBRARIES_ARCHIVES_AND_MUSEUMS",
                "LITIGATION_FINANCE_COMPANIES",
                "MACHINERY_AND_EQUIPMENT",
                "MARIJUANA_CANNABIS_INDUSTRY_AND_OTHER_RECREATIONAL_DRUG_INDUSTRIES",
                "MARINE_AND_INLAND_SHIPPING_AND_CARGO",
                "MARINE_EQUIPMENT_TRADING",
                "MASSAGE_PARLOURS",
                "MEAT_TRADERS",
                "MEDIA_AND_ENTERTAINMENT",
                "MEDICAL_DEVICES_AND_EQUIPMENT_MANUFACTURERS_AND_SUPPLIERS",
                "METAL_AND_MINERAL_WHOLESALERS",
                "MINING_AND_QUARRYING",
                "MONEY_BROKERS",
                "MONEY_SERVICES_BUSINESS_PAYMENT_SERVICES_PROVIDERS",
                "MOTION_PICTURE_AND_RECORDING_PRODUCERS",
                "MOVING_COMPANIES_AND_SERVICES",
                "MULTI_LEVEL_MARKETING_OR_PYRAMID_SCHEMES",
                "NAIL_SALONS",
                "NETWORK_EQUIPMENT_AND_SECURITY_PRODUCTS",
                "NEWSPAPER_BOOKS_AND_PERIODICALS_PUBLISHERS",
                "NIGHT_CLUBS",
                "NON_GOVERNMENT_ORGANIZATIONS_CHARITIES_OR_TRUSTS",
                "OFFICE_EQUIPMENT_AND_SUPPLIERS_AND_WHOLESALERS",
                "OIL_AND_GAS",
                "OIL_AND_GAS_MACHINERY_AND_EQUIPMENT",
                "PAPER_AND_PAPER_PRODUCTS",
                "PARKING_LOTS_AND_GARAGE_MANAGEMENT",
                "PAWN_BROKERS_AND_SHOPS",
                "PAYDAY_LOAN_COMPANIES",
                "PENSION_FUNDS",
                "PHARMACEUTICALS",
                "PLASTIC_WHOLESALER",
                "PLASTICS_AND_RUBBER_MANUFACTURING",
                "POSTAL_EXPRESS_DELIVERY_AND_COURIERS",
                "PRECISION_INSTRUMENTS_AND_CONTROLS",
                "PRIVATE_SECURITY_FIRMS_AND_PRIVATE_MILITARY_CONTRACTORS",
                "PROLIFERATION_OF_WEAPONS_OF_MASS_DESTRUCTION",
                "PROPERTY_LEASING_AND_MANAGEMENT",
                "PROSTITUTION_MODEL_AGENCIES_ESCORT",
                "PROVIDERS_OF_PRIVATE_ONLINE_LOTTERY_MAIL_ORDER_LOTTERIES_AND_SWEEPSTAKES",
                "RADIO_AND_TELEVISION_BROADCASTING",
                "REAL_ESTATE_AGENTS_AND_APPRAISERS",
                "REAL_ESTATE_CONSTRUCTION_AND_DEVELOPERS",
                "RELIGIOUS_ORGANIZATIONS_AND_PLACES_OF_WORSHIP",
                "RENTAL_CARS",
                "RESIDENTIAL_AND_LONG_TERM_CARE_FACILITIES",
                "RESTAURANTS_AND_BARS",
                "SAUNA_HAMMAM_OR_BATH_HOUSES",
                "SCRAP_METAL",
                "SCUBA_DIVING_EQUIPMENT",
                "SECURITIES_AND_COMMODITY_EXCHANGES",
                "SECURITIES_AGENTS_AND_BROKERS",
                "SEMICONDUCTOR_AND_MICROCHIP_MANUFACTURING",
                "SEWAGE_TREATMENT_FACILITIES",
                "SHELL_BANKS",
                "SMOKING_CLUBS",
                "SOCIAL_AND_MEMBERSHIP_ORGANIZATIONS",
                "SOCIAL_MEDIA",
                "SOFTWARE_SERVICES",
                "SPORTS_GAMBLING",
                "SPORTS_ARTS_AND_RECREATION",
                "TATTOO_SHOPS",
                "TAXI_BUSES_AND_TRANSIT_SYSTEMS",
                "TECHNICAL_AND_TRADE_SCHOOLS",
                "TELECOMMUNICATIONS_EQUIPMENT_AND_ACCESSORIES",
                "TELEPHONE_SERVICE_PROVIDERS_AND_CARRIERS",
                "TEXTILES_APPAREL_AND_ACCESSORIES",
                "TOBACCO_VAPE_E_CIGARETTES_CONTROLLED_PRODUCTS",
                "TOOLS_AND_HARDWARE",
                "TRADE_GROUPS_AND_LABOR_UNIONS",
                "TRADING_FOR_RETAIL_CUSTOMERS",
                "TRAVEL_AGENTS_AND_SERVICES",
                "TRAVEL_TOURISM_RECREATIONS_AND_LEISURE",
                "TRUST_FIDUCIARY_AND_CUSTODIAN_ACTIVITIES",
                "UNAUTHORISED_TICKET_SELLERS",
                "UNLAWFUL_INTERNET_GAMBLING",
                "USED_AUTOMOBILE_DEALERS_AND_SELLERS_OF_USED_CAR_PARTS",
                "VETERINARY_CLINICS_AND_SERVICES",
                "VIDEO_AND_LIVE_STREAMING",
                "VIDEO_AND_TELECONFERENCING",
                "WAREHOUSING_AND_STORAGE",
                "WASTE_MANAGEMENT_AND_RECYCLING",
                "WATER_TREATMENT_AND_UTILITIES",
                "OTHER"
              ]
            },
            "uniqueItems": true
          },
          "legalType": {
            "type": "string",
            "description": "Legal business type.",
            "enum": [
              "LIMITED_LIABILITY_COMPANY",
              "SOLE_PROPRIETORSHIP",
              "GENERAL_PARTNERSHIP_COMPANY"
            ]
          },
          "incorporatedInUae": {
            "type": "boolean",
            "description": "Indicates if the business is incorporate in the UAE."
          },
          "hasBankAccount": {
            "type": "boolean",
            "description": "Indicates if the business has a bank account."
          },
          "yearsOfBusinessRange": {
            "type": "string",
            "description": "The number of years the business has been in operation.",
            "enum": [
              "LESS_THAN_ONE",
              "ONE_TO_TWO",
              "TWO_TO_FIVE",
              "FIVE_PLUS"
            ]
          },
          "numberOfEmployeesRange": {
            "type": "string",
            "description": "The number of employees the business has.",
            "enum": [
              "ONE_TO_TEN",
              "TEN_TO_THIRTY",
              "THIRTY_PLUS"
            ]
          },
          "annualRevenue": {
            "type": "integer",
            "format": "int32",
            "description": "The annual revenue (in USD) of the business."
          },
          "website": {
            "type": "string",
            "description": "The full website URL of the business."
          },
          "productOrServiceSold": {
            "type": "string",
            "description": "Description of the product or service the business sells."
          },
          "intendedSalesChannel": {
            "type": "string",
            "description": "The intended sales channel for the business.",
            "enum": [
              "ONLINE",
              "IN_PERSON",
              "BOTH"
            ]
          },
          "salesDistributionChannels": {
            "type": "array",
            "description": "The primary sales and distribution channels used by the business.",
            "items": {
              "type": "string",
              "enum": [
                "SOCIAL_MEDIA",
                "REFERRALS",
                "TRADE_SHOWS",
                "DIGITAL_ADVERTISING",
                "IN_PERSON_SALES_TEAM",
                "OTHER"
              ]
            },
            "uniqueItems": true
          },
          "investmentSourceOfFunds": {
            "$ref": "#/components/schemas/InvestmentSourceOfFunds",
            "description": "Details of source of funds for the business."
          },
          "incomingPaymentCountries": {
            "type": "array",
            "description": "The countries from which payments will be made into your account.",
            "items": {
              "type": "string"
            }
          },
          "incomingPaymentsMonthlyVolume": {
            "type": "integer",
            "format": "int32",
            "description": "The estimated volume (in USD) of incoming payments per month."
          },
          "incomingPaymentsMonthlyCount": {
            "type": "integer",
            "format": "int32",
            "description": "The estimated number of incoming payments per month."
          },
          "outgoingPaymentCountries": {
            "type": "array",
            "description": "The countries to which payments will be made from your account.",
            "items": {
              "type": "string"
            }
          },
          "outgoingPaymentsMonthlyVolume": {
            "type": "integer",
            "format": "int32",
            "description": "The estimated volume (in USD) of outgoing payments per month."
          },
          "outgoingPaymentsMonthlyCount": {
            "type": "integer",
            "format": "int32",
            "description": "The estimated number of outgoing payments per month."
          },
          "accountOpeningPurposes": {
            "type": "array",
            "description": "The purpose(s) for opening the account.",
            "items": {
              "type": "string",
              "enum": [
                "RECEIVE_FUNDS",
                "SEND_FUNDS",
                "UAE_PAYMENTS",
                "PLATFORM_INTEGRATION",
                "BULK_PAYMENTS",
                "CRYPTOCURRENCY_PAYMENTS",
                "OTHER"
              ]
            },
            "uniqueItems": true
          },
          "addressLine1": {
            "type": "string",
            "description": "First line of address."
          },
          "addressLine2": {
            "type": "string",
            "description": "Second line of address."
          },
          "areaOrCity": {
            "type": "string",
            "description": "Address town or city."
          },
          "provinceState": {
            "type": "string",
            "description": "Address province or state."
          },
          "postalCode": {
            "type": "string",
            "description": "Address postal code."
          }
        }
      }
    },
    "securitySchemes": {
      "Authorization": {
        "type": "http",
        "description": "JWT Bearer token for authenticating API requests",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "x-tagGroups": [
    {
      "tags": [
        "Authentication"
      ],
      "name": "Authentication"
    },
    {
      "tags": [
        "Account",
        "Business Profile",
        "Branding",
        "Persons",
        "Corporates",
        "Documents",
        "Users"
      ],
      "name": "Onboarding"
    },
    {
      "tags": [
        "Payments"
      ],
      "name": "Payments"
    },
    {
      "tags": [
        "Payment Requests",
        "Payers",
        "Receipts",
        "Rates"
      ],
      "name": "Collections"
    },
    {
      "tags": [
        "Beneficiaries"
      ],
      "name": "Beneficiaries"
    },
    {
      "tags": [
        "Exchange"
      ],
      "name": "Exchange"
    },
    {
      "tags": [
        "Wallets"
      ],
      "name": "Wallets"
    },
    {
      "tags": [
        "Transactions"
      ],
      "name": "Transactions"
    },
    {
      "tags": [
        "Funding accounts"
      ],
      "name": "Funding accounts"
    },
    {
      "tags": [
        "Webhook management"
      ],
      "name": "Webhook management"
    }
  ]
}