# Schemas

Data models used by the Client Account API.

Product: Client Account API
API reference version: 0.3.0 (current)
OpenAPI contract: https://docs.sandbox.axiym.io/openapi/client-account-api/0.3.0.yaml
Canonical page: https://docs.sandbox.axiym.io/client-account-api/api-reference/0.3.0/schemas

[Compact reference](/client-account-api/api-reference/0.3.0/schemas.md)

## Schema 1: OnboardingRequest

```json
{
  "type": "object",
  "properties": {
    "legalEntityName": {
      "type": "string",
      "description": "Official name of the company.",
      "examples": [
        "Test Corp Ltd"
      ]
    },
    "incorporationDate": {
      "type": "string",
      "description": "Date the legal entity was established.",
      "format": "date",
      "examples": [
        "2020-01-15"
      ]
    },
    "registrationDate": {
      "type": "string",
      "description": "Date the company joined your network.",
      "format": "date",
      "examples": [
        "2020-02-01"
      ]
    },
    "legalAddress": {
      "$ref": "#/components/schemas/Address",
      "description": "Legal address."
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "examples": [
        "USD"
      ]
    },
    "partnerClientId": {
      "type": "string",
      "description": "Your unique reference for the client within your partnership.",
      "examples": [
        "my-internal-ref-001"
      ]
    },
    "disbursementAccount": {
      "description": "Payment Network bank account that receives funding disbursements for this client (the funding destination).",
      "$ref": "#/components/schemas/DisbursementAccount"
    },
    "paymentRails": {
      "type": "string",
      "description": "Payment rail code.",
      "examples": [
        "ZENUS_BANK"
      ]
    }
  },
  "required": [
    "legalEntityName",
    "legalAddress",
    "registrationDate",
    "incorporationDate",
    "currency"
  ],
  "description": "Client onboarding request."
}
```

## Schema 2: OnboardingCase

```json
{
  "type": "object",
  "properties": {
    "clientId": {
      "type": "string",
      "format": "uuid",
      "description": "Client identifier (UUID).",
      "examples": [
        "b7e8c1a2-9f43-4d2e-8a6b-1c2d3e4f5a6b"
      ]
    },
    "code": {
      "type": "string",
      "description": "Human-readable client code.",
      "examples": [
        "AXI000221"
      ]
    },
    "legalEntityName": {
      "type": "string",
      "description": "Official name of the company.",
      "examples": [
        "Acme Corporation"
      ]
    },
    "legalAddress": {
      "description": "Legal address.",
      "$ref": "#/components/schemas/Address"
    },
    "incorporationDate": {
      "type": "string",
      "description": "Date the legal entity was established.",
      "format": "date",
      "examples": [
        "2020-01-15"
      ]
    },
    "registrationDate": {
      "type": "string",
      "description": "Date the company joined your network.",
      "format": "date",
      "examples": [
        "2020-02-01"
      ]
    },
    "status": {
      "type": "string",
      "description": "Onboarding application status.",
      "enum": [
        "ONBOARDING",
        "APPROVED",
        "REJECTED"
      ],
      "examples": [
        "ONBOARDING"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency code (ISO 4217 fiat or supported stablecoin).",
      "examples": [
        "USD"
      ]
    },
    "disbursementAccount": {
      "$ref": "#/components/schemas/DisbursementAccount",
      "description": "Payment Network bank account that receives funding disbursements for this client (the funding destination)."
    },
    "partnerClientId": {
      "type": "string",
      "description": "Your reference for this client.",
      "examples": [
        "my-internal-ref-001"
      ]
    },
    "paymentRails": {
      "type": "string",
      "description": "Payment rail — a configured settlement channel Axiym uses to hold and move funds: a banking partner for fiat (e.g. `ZENUS_BANK`, `FREEMARKET`) or a blockchain network for crypto (e.g. `TRON`, `AVALANCHE`). Codes are returned by `GET /settings/payment-rails`.",
      "examples": [
        "ZENUS_BANK"
      ]
    }
  },
  "required": [
    "clientId",
    "code",
    "legalEntityName",
    "status"
  ],
  "description": "Snapshot of a client onboarding application. Created in the submitted state and reviewed by Axiym compliance; while the review is in progress the status stays ONBOARDING. An approved application ends in APPROVED; a rejected application ends in REJECTED."
}
```

## Schema 3: Client

```json
{
  "type": "object",
  "properties": {
    "clientId": {
      "type": "string",
      "format": "uuid",
      "description": "Client identifier (UUID).",
      "examples": [
        "b7e8c1a2-9f43-4d2e-8a6b-1c2d3e4f5a6b"
      ]
    },
    "code": {
      "type": "string",
      "description": "Human-readable client code.",
      "examples": [
        "AXI000221"
      ]
    },
    "legalEntityName": {
      "type": "string",
      "description": "Official name of the company.",
      "examples": [
        "Acme Corporation"
      ]
    },
    "legalAddress": {
      "description": "Legal address.",
      "$ref": "#/components/schemas/Address"
    },
    "incorporationDate": {
      "type": "string",
      "description": "Date the legal entity was established.",
      "format": "date",
      "examples": [
        "2020-01-15"
      ]
    },
    "registrationDate": {
      "type": "string",
      "description": "Date the company joined your network.",
      "format": "date",
      "examples": [
        "2020-02-01"
      ]
    },
    "status": {
      "type": "string",
      "description": "Client status.",
      "enum": [
        "ONBOARDING",
        "ACTIVE",
        "DISABLED"
      ],
      "examples": [
        "ONBOARDING"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency code (ISO 4217 fiat or supported stablecoin).",
      "examples": [
        "USD"
      ]
    },
    "disbursementAccount": {
      "$ref": "#/components/schemas/DisbursementAccount",
      "description": "Payment Network bank account that receives funding disbursements for this client (the funding destination)."
    },
    "partnerClientId": {
      "type": "string",
      "description": "Your reference for this client.",
      "examples": [
        "my-internal-ref-001"
      ]
    },
    "paymentRails": {
      "type": "string",
      "description": "Payment rail — a configured settlement channel Axiym uses to hold and move funds: a banking partner for fiat (e.g. `ZENUS_BANK`, `FREEMARKET`) or a blockchain network for crypto (e.g. `TRON`, `AVALANCHE`). Codes are returned by `GET /settings/payment-rails`.",
      "examples": [
        "ZENUS_BANK"
      ]
    }
  },
  "required": [
    "clientId",
    "legalEntityName",
    "legalAddress",
    "status",
    "incorporationDate",
    "registrationDate",
    "paymentRails",
    "currency",
    "code"
  ]
}
```

## Schema 4: Address

```json
{
  "description": "Registered legal address of a business.",
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "description": "City or locality.",
      "examples": [
        "New York"
      ]
    },
    "country": {
      "type": "string",
      "pattern": "^[A-Z]{2}$",
      "description": "ISO 3166-1 alpha-2 country code.",
      "examples": [
        "US"
      ]
    },
    "address": {
      "type": "string",
      "description": "First address line.",
      "examples": [
        "350 Fifth Avenue"
      ]
    },
    "addressExtended": {
      "type": "string",
      "description": "Second address line, where applicable.",
      "examples": [
        "Suite 1200"
      ]
    },
    "district": {
      "type": "string",
      "description": "State / County / Province / Region portion of the address. If the country is US or Canada, then district is required and should use the two-letter code for the subdivision.",
      "examples": [
        "NY"
      ]
    },
    "postalCode": {
      "type": "string",
      "description": "Postal or ZIP code.",
      "examples": [
        "10115"
      ]
    }
  },
  "required": [
    "postalCode",
    "country",
    "address"
  ]
}
```

## Schema 5: DisbursementAccount

```json
{
  "type": "object",
  "properties": {
    "accountNumber": {
      "type": "string",
      "description": "Bank account number.",
      "examples": [
        "0123456789"
      ]
    }
  },
  "description": "Bank account at the Payment Network that receives funding disbursements."
}
```

## Schema 6: Currency

```json
{
  "type": "string",
  "description": "Currency code — ISO 4217 (e.g. USD, EUR) or a supported digital currency (USDT, USDC).",
  "examples": [
    "USD"
  ]
}
```

## Schema 7: AccountStatus

```json
{
  "description": "`ACTIVE` is available for supported operations. `SUSPENDED` is temporarily unavailable for supported operations. `CLOSED` is permanently closed.",
  "type": "string",
  "enum": [
    "ACTIVE",
    "SUSPENDED",
    "CLOSED"
  ],
  "examples": [
    "ACTIVE"
  ]
}
```

## Schema 8: Account

```json
{
  "type": "object",
  "description": "An account holding a currency balance. Receiving details for funding it are served by the deposit instructions.",
  "required": [
    "accountId",
    "currency",
    "paymentRails",
    "balance",
    "status"
  ],
  "properties": {
    "accountId": {
      "type": "string",
      "format": "uuid",
      "description": "Account identifier (UUID).",
      "examples": [
        "5c0a9d3e-1f2b-4a6c-8e7d-9b3f5a1c2d4e"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Account currency.",
      "examples": [
        "USD"
      ]
    },
    "paymentRails": {
      "$ref": "#/components/schemas/PaymentRailsCode",
      "description": "Rail the account settles on.",
      "examples": [
        "ZENUS_BANK"
      ]
    },
    "balance": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Decimal"
        }
      ],
      "description": "Current balance.",
      "examples": [
        "48250.00"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/AccountStatus",
      "description": "Account status.",
      "examples": [
        "ACTIVE"
      ]
    }
  }
}
```

## Schema 9: AccountRef

```json
{
  "type": "object",
  "description": "Compact account reference. Fetch the account via `GET /clients/{clientId}/accounts/{accountId}` for the current balance and status; deposit instructions serve its payment details.",
  "required": [
    "accountId",
    "currency",
    "paymentRails"
  ],
  "properties": {
    "accountId": {
      "type": "string",
      "format": "uuid",
      "description": "Account identifier (UUID).",
      "examples": [
        "5c0a9d3e-1f2b-4a6c-8e7d-9b3f5a1c2d4e"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Account currency.",
      "examples": [
        "USD"
      ]
    },
    "paymentRails": {
      "$ref": "#/components/schemas/PaymentRailsCode",
      "description": "Rail the account settles on.",
      "examples": [
        "ZENUS_BANK"
      ]
    }
  }
}
```

## Schema 10: PaymentRailsCode

```json
{
  "type": "string",
  "description": "Payment rail code the account settles on (e.g. `ZENUS_BANK`, `TRON`).",
  "examples": [
    "ZENUS_BANK"
  ]
}
```

## Schema 11: StatementEntryType

```json
{
  "type": "string",
  "description": "Direction of movement on the account.",
  "enum": [
    "CREDIT",
    "DEBIT"
  ],
  "examples": [
    "DEBIT"
  ]
}
```

## Schema 12: StatementEntry

```json
{
  "type": "object",
  "description": "A posted ledger movement on an account. Entries are returned in posting order and carry the running balance, so consecutive entries reconcile against each other.",
  "required": [
    "entryId",
    "accountId",
    "type",
    "amount",
    "currency",
    "balanceAfter",
    "occurredAt"
  ],
  "properties": {
    "entryId": {
      "type": "string",
      "format": "uuid",
      "description": "Ledger entry identifier (UUID).",
      "examples": [
        "7f9a2d1c-8b31-4f59-9e2f-1d63c4a27b12"
      ]
    },
    "accountId": {
      "type": "string",
      "format": "uuid",
      "description": "Account identifier (UUID).",
      "examples": [
        "8f1d4a2c-3b5e-4c7a-9d1f-2a6b8c0e4d3a"
      ]
    },
    "type": {
      "$ref": "#/components/schemas/StatementEntryType",
      "description": "Credit or debit direction.",
      "examples": [
        "DEBIT"
      ]
    },
    "amount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Decimal"
        }
      ],
      "description": "Positive movement amount in the account currency; direction is in `type`.",
      "examples": [
        "500.00"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Account currency.",
      "examples": [
        "USDT"
      ]
    },
    "balanceBefore": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Decimal"
        }
      ],
      "description": "Running balance before this movement.",
      "examples": [
        "12500.00"
      ]
    },
    "balanceAfter": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Decimal"
        }
      ],
      "description": "Running balance after this movement.",
      "examples": [
        "12000.00"
      ]
    },
    "relatedResourceType": {
      "type": "string",
      "description": "Type of the linked money movement; absent for ledger adjustments with no linked resource.",
      "enum": [
        "DEPOSIT",
        "WITHDRAWAL",
        "CONVERSION",
        "PAYOUT",
        "TRANSFER"
      ],
      "examples": [
        "WITHDRAWAL"
      ]
    },
    "relatedResourceId": {
      "type": "string",
      "format": "uuid",
      "description": "Identifier of the linked resource, where present.",
      "examples": [
        "9b4e2a1c-6d3f-4a8e-bc7d-1f2a3b4c5d6e"
      ]
    },
    "occurredAt": {
      "type": "string",
      "format": "date-time",
      "description": "When the movement occurred. Formatted in ISO 8601.",
      "examples": [
        "2026-07-14T20:07:31Z"
      ]
    }
  }
}
```

## Schema 13: ConversionStatus

```json
{
  "type": "string",
  "description": "`PENDING` awaits confirmation and appears only in the create response. `ACTIVE` is executing. `COMPLETED` means the funds were exchanged. `CANCELED` means the conversion stopped; see `reasonCode`.\n",
  "enum": [
    "PENDING",
    "ACTIVE",
    "COMPLETED",
    "CANCELED"
  ],
  "examples": [
    "PENDING"
  ]
}
```

## Schema 14: ConversionPair

```json
{
  "type": "object",
  "description": "An allowed exchange direction. You sell the `sell` side and buy the `buy` side. Use its stable `pairId` to create a conversion; Axiym selects the corresponding accounts.",
  "required": [
    "pairId",
    "pair",
    "sell",
    "buy",
    "minAmount"
  ],
  "properties": {
    "pairId": {
      "type": "string",
      "format": "uuid",
      "description": "Conversion pair identifier (UUID), stable for the pair and direction.",
      "examples": [
        "7c9e1a3b-5d2f-4e8a-9b0c-6d4f2a8e1c3b"
      ]
    },
    "pair": {
      "type": "string",
      "description": "Pair symbol, `<sellCurrency>-<buyCurrency>`.",
      "examples": [
        "USD-USDT"
      ]
    },
    "sell": {
      "allOf": [
        {
          "$ref": "#/components/schemas/ConversionPairSide"
        }
      ],
      "description": "The side you sell."
    },
    "buy": {
      "allOf": [
        {
          "$ref": "#/components/schemas/ConversionPairSide"
        }
      ],
      "description": "The side you buy."
    },
    "minAmount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Decimal"
        }
      ],
      "description": "Minimum sell amount, in the sell currency."
    }
  }
}
```

## Schema 15: ConversionPairSide

```json
{
  "type": "object",
  "description": "One side of a conversion pair.",
  "required": [
    "currency",
    "paymentRails"
  ],
  "properties": {
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Side currency.",
      "examples": [
        "USD"
      ]
    },
    "paymentRails": {
      "$ref": "#/components/schemas/PaymentRailsCode",
      "description": "Rail the side settles on.",
      "examples": [
        "ZENUS_BANK"
      ]
    }
  }
}
```

## Schema 16: ConversionRequest

```json
{
  "type": "object",
  "description": "A conversion along one of your conversion pairs. `pairId` selects the accounts on both sides; `sellAmount` is in the pair's sell currency.\n",
  "required": [
    "pairId",
    "sellAmount"
  ],
  "properties": {
    "pairId": {
      "type": "string",
      "format": "uuid",
      "description": "Conversion pair identifier from `GET /clients/{clientId}/conversion-pairs`.",
      "examples": [
        "7c9e1a3b-5d2f-4e8a-9b0c-6d4f2a8e1c3b"
      ]
    },
    "sellAmount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Decimal"
        }
      ],
      "description": "Amount to sell, in the pair's sell currency.",
      "examples": [
        "10000.00"
      ]
    },
    "externalReference": {
      "$ref": "#/components/schemas/ExternalReference",
      "description": "Your reference for correlation, echoed back on related objects.",
      "examples": [
        "conv-2026-0714-01"
      ]
    }
  }
}
```

## Schema 17: Conversion

```json
{
  "type": "object",
  "required": [
    "conversionId",
    "pairId",
    "status",
    "sellAccount",
    "sellAmount",
    "buyAccount",
    "buyAmount",
    "rate",
    "fee",
    "createdAt"
  ],
  "properties": {
    "conversionId": {
      "type": "string",
      "format": "uuid",
      "description": "Conversion identifier (UUID).",
      "examples": [
        "a3f5d7c9-1e2b-4c6a-8d9f-0b1a2c3d4e5f"
      ]
    },
    "pairId": {
      "type": "string",
      "format": "uuid",
      "description": "The conversion pair this conversion runs along.",
      "examples": [
        "7c9e1a3b-5d2f-4e8a-9b0c-6d4f2a8e1c3b"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/ConversionStatus",
      "description": "Conversion status.",
      "examples": [
        "COMPLETED"
      ]
    },
    "reasonCode": {
      "type": "string",
      "description": "Present when `status` is `CANCELED` — the reason as reported by operations or the liquidity venue. Example: `RATE_EXPIRED`."
    },
    "sellAccount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/AccountRef"
        }
      ],
      "description": "The sell-side account, embedded as a compact reference."
    },
    "sellAmount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Money"
        }
      ],
      "description": "Amount to sell, in the sell currency. It represents the quoted amount before execution and the amount sold once `COMPLETED`."
    },
    "buyAccount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/AccountRef"
        }
      ],
      "description": "The buy-side account, embedded as a compact reference."
    },
    "buyAmount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Money"
        }
      ],
      "description": "Expected amount to credit to the buy-side account. It represents the amount credited once the conversion is `COMPLETED`."
    },
    "rate": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Decimal"
        }
      ],
      "description": "Units of buy currency received for one unit of sell currency.",
      "examples": [
        "1.00"
      ]
    },
    "fee": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Money"
        }
      ],
      "description": "Conversion fee, in the ISO 4217 currency of the pair. The quote includes this fee before execution. It is deducted from the sell amount when buying digital currency and from the buy proceeds when selling it."
    },
    "externalReference": {
      "$ref": "#/components/schemas/ExternalReference",
      "description": "Your reference for correlation, echoed back on related objects.",
      "examples": [
        "conv-2026-0714-01"
      ]
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Creation timestamp. Formatted in ISO 8601.",
      "examples": [
        "2026-07-14T14:00:11Z"
      ]
    },
    "completedAt": {
      "type": "string",
      "format": "date-time",
      "description": "Completion timestamp. Formatted in ISO 8601.",
      "examples": [
        "2026-07-14T14:05:39Z"
      ]
    }
  }
}
```

## Schema 18: ConversionEventData

```json
{
  "type": "object",
  "description": "A compact notification for routing and correlation. Retrieve the conversion from `GET /clients/{clientId}/conversions/{conversionId}` when you need its amounts, rate, or current state.",
  "required": [
    "conversionId",
    "status",
    "clientId"
  ],
  "properties": {
    "conversionId": {
      "type": "string",
      "format": "uuid",
      "description": "Conversion identifier (UUID).",
      "examples": [
        "a3f5d7c9-1e2b-4c6a-8d9f-0b1a2c3d4e5f"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/ConversionStatus",
      "description": "Conversion status at the time the event was emitted.",
      "examples": [
        "COMPLETED"
      ]
    },
    "externalReference": {
      "$ref": "#/components/schemas/ExternalReference",
      "description": "Your reference submitted on creation, where present.",
      "examples": [
        "conv-2026-0714-01"
      ]
    },
    "reasonCode": {
      "type": "string",
      "description": "Present on `conversion.canceled` — the reason as reported by operations or the liquidity venue. Example: `RATE_EXPIRED`."
    },
    "clientId": {
      "type": "string",
      "format": "uuid",
      "description": "Axiym identifier of the client that owns the resource.",
      "examples": [
        "1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f"
      ]
    }
  }
}
```

## Schema 19: DepositStatus

```json
{
  "type": "string",
  "description": "`PENDING` awaits crediting. `HELD` is temporarily on hold. `COMPLETED` was credited to the account. `CANCELED` or `REJECTED` was not completed; see `reasonCode`.\n",
  "enum": [
    "PENDING",
    "HELD",
    "COMPLETED",
    "CANCELED",
    "REJECTED"
  ],
  "examples": [
    "COMPLETED"
  ]
}
```

## Schema 20: Deposit

```json
{
  "type": "object",
  "required": [
    "depositId",
    "account",
    "amount",
    "status",
    "createdAt"
  ],
  "properties": {
    "depositId": {
      "type": "string",
      "format": "uuid",
      "description": "Deposit identifier (UUID).",
      "examples": [
        "4c8e2b6a-1d9f-4e3b-a7c5-2f0a8d6b4e1c"
      ]
    },
    "account": {
      "allOf": [
        {
          "$ref": "#/components/schemas/AccountRef"
        }
      ],
      "description": "The account the deposit credits, embedded as a compact reference."
    },
    "amount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Money"
        }
      ],
      "description": "Deposit amount in the receiving account currency. The amount is credited when the deposit is `COMPLETED`."
    },
    "fee": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Money"
        }
      ],
      "description": "Deposit fee, where applicable. Its presence does not mean the deposit has been credited; check `status`."
    },
    "status": {
      "$ref": "#/components/schemas/DepositStatus",
      "description": "Deposit status.",
      "examples": [
        "COMPLETED"
      ]
    },
    "remitterName": {
      "type": "string",
      "description": "Name of the sender, as reported by the sending bank or network.",
      "examples": [
        "Globex Corporation"
      ]
    },
    "code": {
      "type": "string",
      "description": "System-assigned payment code, shown on the payment.",
      "examples": [
        "AXI00000417"
      ]
    },
    "transactionHash": {
      "type": "string",
      "description": "The transaction hash on the network. Present for wallet deposits.",
      "examples": [
        "1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e7f809"
      ]
    },
    "reasonCode": {
      "type": "string",
      "description": "Present when `status` is `CANCELED` or `REJECTED` — the reason as reported by the bank, the network, or Axiym operations. Example: `SENDER_SCREENING_FAILED`."
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Creation timestamp. Formatted in ISO 8601.",
      "examples": [
        "2026-06-14T18:02:11Z"
      ]
    }
  }
}
```

## Schema 21: DepositInstruction

```json
{
  "description": "Axiym's receiving details for one transfer scheme; the shape matches the scheme.",
  "oneOf": [
    {
      "$ref": "#/components/schemas/BankDepositInstruction"
    },
    {
      "$ref": "#/components/schemas/WalletDepositInstruction"
    }
  ]
}
```

## Schema 22: BankDepositInstruction

```json
{
  "type": "object",
  "title": "Bank transfer",
  "description": "Axiym's receiving bank details for one transfer scheme. Exactly one of `iban` and `accountNumber` is present. Bank fields are present when the scheme uses them.",
  "required": [
    "scheme",
    "beneficiaryName"
  ],
  "properties": {
    "scheme": {
      "$ref": "#/components/schemas/TransferScheme"
    },
    "beneficiaryName": {
      "type": "string",
      "description": "Name of the receiving party to put on the transfer.",
      "examples": [
        "Axi Labs AG"
      ]
    },
    "beneficiaryAddress": {
      "allOf": [
        {
          "$ref": "#/components/schemas/BankAddress"
        }
      ],
      "description": "Postal address of the receiving party. `country` is always present."
    },
    "iban": {
      "$ref": "#/components/schemas/Iban",
      "description": "IBAN to send to. Present instead of `accountNumber` when the account is identified by an IBAN."
    },
    "accountNumber": {
      "type": "string",
      "description": "Account number to send to. Present instead of `iban` when the account has no IBAN.",
      "examples": [
        "600000000"
      ]
    },
    "swiftBic": {
      "type": "string",
      "description": "SWIFT/BIC code of the receiving bank.",
      "examples": [
        "ZEITPRSJXXX"
      ]
    },
    "clearingCode": {
      "type": "string",
      "description": "Local clearing or routing code of the receiving bank (for example the ABA routing number for Fedwire and ACH).",
      "examples": [
        "021000021"
      ]
    },
    "clearingSystemCode": {
      "type": "string",
      "description": "Clearing system `clearingCode` belongs to. Present together with `clearingCode`.",
      "examples": [
        "USABA"
      ]
    },
    "bankName": {
      "type": "string",
      "description": "Receiving bank name.",
      "examples": [
        "Zenus Bank International Inc"
      ]
    },
    "bankAddress": {
      "allOf": [
        {
          "$ref": "#/components/schemas/BankAddress"
        }
      ],
      "description": "Postal address of the receiving bank. `country` is always present."
    },
    "intermediaryBank": {
      "$ref": "#/components/schemas/DepositIntermediaryBank"
    },
    "reference": {
      "type": "string",
      "description": "ISO 11649 creditor reference (`RF` + check digits) assigned by Axiym, formatted in groups of four. Present when the account is funded through a shared receiving account; include it on the transfer so the deposit is matched automatically (matching ignores the spaces). Absent when the receiving account number alone identifies the Axiym account.",
      "examples": [
        "RF11 0004 4901 01"
      ]
    }
  }
}
```

## Schema 23: DepositIntermediaryBank

```json
{
  "type": "object",
  "description": "Bank the transfer passes through before the receiving bank. Present when the scheme uses one; put it on the transfer as the intermediary bank.",
  "properties": {
    "swiftBic": {
      "type": "string",
      "description": "SWIFT/BIC code of the intermediary bank.",
      "examples": [
        "CHASUS33XXX"
      ]
    },
    "clearingCode": {
      "type": "string",
      "description": "Local clearing or routing code of the intermediary bank.",
      "examples": [
        "021000021"
      ]
    },
    "clearingSystemCode": {
      "type": "string",
      "description": "Clearing system `clearingCode` belongs to. Present together with `clearingCode`.",
      "examples": [
        "USABA"
      ]
    },
    "bankName": {
      "type": "string",
      "description": "Intermediary bank name.",
      "examples": [
        "JP Morgan Chase NA"
      ]
    },
    "bankAddress": {
      "allOf": [
        {
          "$ref": "#/components/schemas/BankAddress"
        }
      ],
      "description": "Postal address of the intermediary bank. `country` is always present."
    }
  }
}
```

## Schema 24: TransferScheme

```json
{
  "type": "string",
  "description": "Transfer scheme the instruction applies to. `BOOK` is a transfer between accounts held at the same provider; `BLOCKCHAIN` is a wallet transfer.",
  "enum": [
    "SWIFT",
    "FEDWIRE",
    "ACH",
    "SEPA",
    "FPS",
    "BOOK",
    "BLOCKCHAIN"
  ]
}
```

## Schema 25: WalletDepositInstruction

```json
{
  "type": "object",
  "title": "Wallet transfer",
  "required": [
    "scheme",
    "beneficiaryName",
    "walletAddress",
    "network"
  ],
  "properties": {
    "scheme": {
      "type": "string",
      "enum": [
        "BLOCKCHAIN"
      ],
      "description": "Always `BLOCKCHAIN` for a wallet instruction."
    },
    "beneficiaryName": {
      "type": "string",
      "description": "Name of the receiving party the address belongs to. The transfer itself carries no name; use it in your own records.",
      "examples": [
        "Axi Labs AG"
      ]
    },
    "walletAddress": {
      "type": "string",
      "description": "Deposit address of the account; deposits are matched by the address itself.",
      "examples": [
        "TWd2yzw5yFc5W8Tq6CuNZcVJgfmLnBcT4Q"
      ]
    },
    "network": {
      "$ref": "#/components/schemas/Network",
      "description": "Network of the wallet address.",
      "examples": [
        "TRON"
      ]
    }
  }
}
```

## Schema 26: DepositEventData

```json
{
  "type": "object",
  "description": "A compact notification for routing and correlation. Retrieve the deposit from `GET /clients/{clientId}/deposits/{depositId}` when you need its amount, transaction hash, or current state.",
  "required": [
    "depositId",
    "status",
    "clientId"
  ],
  "properties": {
    "depositId": {
      "type": "string",
      "format": "uuid",
      "description": "Deposit identifier (UUID).",
      "examples": [
        "4c8e2b6a-1d9f-4e3b-a7c5-2f0a8d6b4e1c"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/DepositStatus",
      "description": "Deposit status at the time the event was emitted.",
      "examples": [
        "COMPLETED"
      ]
    },
    "reasonCode": {
      "type": "string",
      "description": "Present on `deposit.canceled` / `deposit.rejected` — the reason as reported by the bank, the network, or Axiym operations. Example: `SENDER_SCREENING_FAILED`."
    },
    "clientId": {
      "type": "string",
      "format": "uuid",
      "description": "Axiym identifier of the client that owns the resource.",
      "examples": [
        "1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f"
      ]
    }
  }
}
```

## Schema 27: Bank

```json
{
  "type": "object",
  "description": "Destination bank details. Present on bank destinations only. The address country selects the applicable corridor rules.",
  "additionalProperties": false,
  "required": [
    "bankName",
    "address"
  ],
  "properties": {
    "bankName": {
      "type": "string",
      "minLength": 1,
      "description": "Bank name.",
      "examples": [
        "Bank of America"
      ]
    },
    "address": {
      "$ref": "#/components/schemas/BankAddress"
    },
    "swiftBic": {
      "type": "string",
      "pattern": "^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$",
      "description": "ISO 9362 SWIFT/BIC, when required for the corridor.",
      "examples": [
        "BOFAUS3NXXX"
      ]
    },
    "clearingCode": {
      "type": "string",
      "description": "Local clearing or routing code, when required for the corridor.",
      "examples": [
        "026009593"
      ]
    },
    "clearingSystemCode": {
      "type": "string",
      "description": "Clearing system the code belongs to. Axiym derives it from the bank country; supply it where a country has more than one system.",
      "examples": [
        "USABA"
      ]
    }
  }
}
```

## Schema 28: Iban

```json
{
  "type": "string",
  "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]{10,30}$",
  "description": "International Bank Account Number in electronic format — no spaces, upper case. Its check digits are verified; country-specific lengths are left to the receiving bank.",
  "examples": [
    "LU364080000000711363"
  ]
}
```

## Schema 29: BankAddress

```json
{
  "type": "object",
  "description": "Postal address of the bank. Only the country is required — it selects the corridor rules. Supply the rest when the corridor or a correspondent asks for it.",
  "additionalProperties": false,
  "required": [
    "country"
  ],
  "properties": {
    "streetName": {
      "type": "string"
    },
    "buildingNumber": {
      "type": "string"
    },
    "city": {
      "type": "string",
      "examples": [
        "New York"
      ]
    },
    "region": {
      "type": "string"
    },
    "postalCode": {
      "type": "string"
    },
    "country": {
      "$ref": "#/components/schemas/CountryCode"
    }
  }
}
```

## Schema 30: CountryCode

```json
{
  "type": "string",
  "pattern": "^[A-Z]{2}$",
  "description": "ISO 3166-1 alpha-2 country code.",
  "examples": [
    "US"
  ]
}
```

## Schema 31: DestinationStatus

```json
{
  "type": "string",
  "description": "`PENDING_REVIEW` awaits due diligence and compliance checks. `ACTIVE` is whitelisted for deposits and withdrawals. `SUSPENDED` is temporarily unavailable. `CLOSED` is permanently retired.",
  "enum": [
    "PENDING_REVIEW",
    "ACTIVE",
    "SUSPENDED",
    "CLOSED"
  ],
  "examples": [
    "ACTIVE"
  ]
}
```

## Schema 32: AddressBookEntry

```json
{
  "description": "A registered external bank account or wallet in the selected client's address book. Its status indicates whether it is whitelisted for deposits and withdrawals.\n\nA bank account contains either `iban` or `accountNumber`, together with `bank`. A wallet contains `walletAddress` and `network`. The two field sets never appear together.",
  "oneOf": [
    {
      "$ref": "#/components/schemas/BankAddressBookEntry"
    },
    {
      "$ref": "#/components/schemas/WalletAddressBookEntry"
    }
  ]
}
```

## Schema 33: BankAddressBookEntry

```json
{
  "type": "object",
  "title": "Bank account",
  "description": "A registered external bank account. Exactly one of `iban` and `accountNumber` is present.",
  "required": [
    "destinationId",
    "status",
    "currency",
    "bank"
  ],
  "oneOf": [
    {
      "title": "IBAN",
      "required": [
        "iban"
      ]
    },
    {
      "title": "Account number",
      "required": [
        "accountNumber"
      ]
    }
  ],
  "properties": {
    "destinationId": {
      "type": "string",
      "format": "uuid",
      "description": "Identifier of the external account in the selected client's address book (UUID).",
      "examples": [
        "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/DestinationStatus",
      "description": "Review and availability status of the registered external account.",
      "examples": [
        "ACTIVE"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency associated with the registered external account.",
      "examples": [
        "USD"
      ]
    },
    "iban": {
      "$ref": "#/components/schemas/Iban",
      "description": "IBAN of the account. Present instead of `accountNumber` when the account is identified by an IBAN."
    },
    "accountNumber": {
      "type": "string",
      "description": "Domestic bank account number. Present instead of `iban` when the account has no IBAN.",
      "examples": [
        "0123456789"
      ]
    },
    "bank": {
      "$ref": "#/components/schemas/Bank",
      "description": "Destination bank details."
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Creation timestamp. Formatted in ISO 8601.",
      "examples": [
        "2026-06-12T14:05:00Z"
      ]
    }
  }
}
```

## Schema 34: WalletAddressBookEntry

```json
{
  "type": "object",
  "title": "Wallet address",
  "required": [
    "destinationId",
    "status",
    "currency",
    "walletAddress",
    "network"
  ],
  "properties": {
    "destinationId": {
      "type": "string",
      "format": "uuid",
      "description": "Identifier of the external account in the selected client's address book (UUID).",
      "examples": [
        "e2c8a4f6-7b1d-4e3a-9c5f-8a0b2d4e6f1c"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/DestinationStatus",
      "description": "Review and availability status of the registered external account.",
      "examples": [
        "ACTIVE"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency associated with the registered external account.",
      "examples": [
        "USDT"
      ]
    },
    "walletAddress": {
      "type": "string",
      "description": "Wallet address of the entry; static and reusable.",
      "examples": [
        "TNPeeaaFB7K9cmo4uQpcU32zGK8G1NYqeL"
      ]
    },
    "network": {
      "$ref": "#/components/schemas/Network",
      "description": "Network of the wallet address.",
      "examples": [
        "TRON"
      ]
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Creation timestamp. Formatted in ISO 8601.",
      "examples": [
        "2026-06-12T14:05:00Z"
      ]
    }
  }
}
```

## Schema 35: Destination

```json
{
  "description": "Where the funds are delivered, as recorded on the operation at creation time. This is a snapshot: it carries the account or wallet details and, when the destination was taken from the address book, its `destinationId`. It does not carry the address book entry's status or creation date; read the address book entry for its current state.\n\n- A bank destination contains `iban` or `accountNumber`, and `bank`.\n- A wallet destination contains `walletAddress` and `network`.\n\nThe two field sets never appear together.",
  "oneOf": [
    {
      "$ref": "#/components/schemas/BankDestination"
    },
    {
      "$ref": "#/components/schemas/WalletDestination"
    }
  ]
}
```

## Schema 36: BankDestination

```json
{
  "type": "object",
  "title": "Bank account",
  "description": "The bank account the funds are delivered to. Exactly one of `iban` and `accountNumber` is present.",
  "required": [
    "currency",
    "bank"
  ],
  "oneOf": [
    {
      "title": "IBAN",
      "required": [
        "iban"
      ]
    },
    {
      "title": "Account number",
      "required": [
        "accountNumber"
      ]
    }
  ],
  "properties": {
    "destinationId": {
      "type": "string",
      "format": "uuid",
      "description": "Address book entry the destination was taken from, when applicable.",
      "examples": [
        "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency delivered to the destination.",
      "examples": [
        "USD"
      ]
    },
    "iban": {
      "$ref": "#/components/schemas/Iban",
      "description": "IBAN of the account. Present instead of `accountNumber` when the account is identified by an IBAN."
    },
    "accountNumber": {
      "type": "string",
      "description": "Domestic bank account number. Present instead of `iban` when the account has no IBAN.",
      "examples": [
        "0123456789"
      ]
    },
    "bank": {
      "$ref": "#/components/schemas/Bank",
      "description": "Destination bank details."
    }
  }
}
```

## Schema 37: WalletDestination

```json
{
  "type": "object",
  "title": "Wallet address",
  "required": [
    "currency",
    "walletAddress",
    "network"
  ],
  "properties": {
    "destinationId": {
      "type": "string",
      "format": "uuid",
      "description": "Address book entry the destination was taken from, when applicable.",
      "examples": [
        "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency delivered to the destination.",
      "examples": [
        "USDT"
      ]
    },
    "walletAddress": {
      "type": "string",
      "description": "Wallet address on the given network.",
      "examples": [
        "TNPeeaaFB7K9cmo4uQpcU32zGK8G1NYqeL"
      ]
    },
    "network": {
      "$ref": "#/components/schemas/Network",
      "description": "Network of the wallet address.",
      "examples": [
        "TRON"
      ]
    }
  }
}
```

## Schema 38: BankDestinationRequest

```json
{
  "type": "object",
  "description": "Registers an external bank account for whitelisting in the selected client's address book. The entry starts in `PENDING_REVIEW` while Axiym performs due diligence and compliance checks. It can fund deposits and receive withdrawals once `ACTIVE`. Supply exactly one of `iban` and `accountNumber`.",
  "required": [
    "currency",
    "bank"
  ],
  "oneOf": [
    {
      "title": "IBAN",
      "required": [
        "iban"
      ]
    },
    {
      "title": "Account number",
      "required": [
        "accountNumber"
      ]
    }
  ],
  "properties": {
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency associated with the external bank account.",
      "examples": [
        "USD"
      ]
    },
    "iban": {
      "$ref": "#/components/schemas/Iban",
      "description": "IBAN of the account. Supply it instead of `accountNumber` when the account has an IBAN; the check digits are verified."
    },
    "accountNumber": {
      "type": "string",
      "description": "Domestic bank account number. Supply it instead of `iban` when the account has no IBAN.",
      "examples": [
        "0123456789"
      ]
    },
    "bank": {
      "$ref": "#/components/schemas/Bank",
      "description": "Destination bank details."
    }
  }
}
```

## Schema 39: WalletDestinationRequest

```json
{
  "type": "object",
  "description": "Registers an external wallet for whitelisting in the selected client's address book. The entry starts in `PENDING_REVIEW` while Axiym performs due diligence and compliance checks. It can fund deposits and receive withdrawals once `ACTIVE`.",
  "required": [
    "currency",
    "walletAddress",
    "network"
  ],
  "properties": {
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency associated with the external wallet.",
      "examples": [
        "USDT"
      ]
    },
    "walletAddress": {
      "type": "string",
      "description": "Wallet address to register as an external account.",
      "examples": [
        "TNPeeaaFB7K9cmo4uQpcU32zGK8G1NYqeL"
      ]
    },
    "network": {
      "$ref": "#/components/schemas/Network",
      "description": "Network of the wallet address.",
      "examples": [
        "TRON"
      ]
    }
  }
}
```

## Schema 40: PageInfo

```json
{
  "type": "object",
  "properties": {
    "hasNextPage": {
      "type": "boolean",
      "description": "When paginating forwards, are there more items?",
      "examples": [
        true
      ]
    },
    "endCursor": {
      "type": "string",
      "description": "When paginating forwards, the cursor to continue.",
      "examples": [
        "eyJvZmZzZXQiOjI1fQ=="
      ]
    }
  },
  "required": [
    "hasNextPage"
  ]
}
```

## Schema 41: WithdrawalStatus

```json
{
  "type": "string",
  "description": "`PENDING_CONFIRMATION` is awaiting explicit confirmation and has not started execution. `PENDING` is queued for execution. `HELD` is temporarily on hold. `COMPLETED` means the withdrawal finished successfully. `CANCELED` and `REJECTED` did not complete (see `reasonCode`).",
  "enum": [
    "PENDING_CONFIRMATION",
    "PENDING",
    "HELD",
    "COMPLETED",
    "CANCELED",
    "REJECTED"
  ],
  "examples": [
    "PENDING"
  ]
}
```

## Schema 42: Withdrawal

```json
{
  "type": "object",
  "required": [
    "withdrawalId",
    "sourceAccount",
    "sourceAmount",
    "destinationAmount",
    "fee",
    "destination",
    "status",
    "createdAt"
  ],
  "properties": {
    "withdrawalId": {
      "type": "string",
      "format": "uuid",
      "description": "Withdrawal identifier (UUID).",
      "examples": [
        "9b4e2a1c-6d3f-4a8e-bc7d-1f2a3b4c5d6e"
      ]
    },
    "sourceAccount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/AccountRef"
        }
      ],
      "description": "The source account, embedded as a compact reference."
    },
    "sourceAmount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Money"
        }
      ],
      "description": "Amount to debit from the source Axiym account, in its currency. This amount is included before execution; check `status` for withdrawal progress."
    },
    "destinationAmount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Money"
        }
      ],
      "description": "Amount to deliver to the external account, in its currency. Equals `sourceAmount` less `fee`. This amount is included before execution; check `status` for withdrawal progress."
    },
    "fee": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Money"
        }
      ],
      "description": "Fee to deduct from `sourceAmount` before delivery, in the source account currency. Zero when no fee applies. This amount is included before execution."
    },
    "destination": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Destination"
        }
      ],
      "description": "Snapshot of the destination selected by `destinationId` at creation time."
    },
    "status": {
      "$ref": "#/components/schemas/WithdrawalStatus",
      "description": "Withdrawal status.",
      "examples": [
        "COMPLETED"
      ]
    },
    "code": {
      "type": "string",
      "description": "System-assigned payment code, shown on the payment.",
      "examples": [
        "AXI00000418"
      ]
    },
    "reference": {
      "type": "string",
      "description": "Text shown to the recipient, as submitted.",
      "examples": [
        "Treasury sweep"
      ]
    },
    "supportingDocuments": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/SupportingDocument"
      },
      "description": "Documents accepted with the payment. File content is not returned."
    },
    "externalReference": {
      "$ref": "#/components/schemas/ExternalReference",
      "description": "Your reference for correlation, echoed back on related objects.",
      "examples": [
        "wd-2026-0714-01"
      ]
    },
    "transactionHash": {
      "type": "string",
      "description": "The transaction hash on the network. Present for wallet withdrawals once the withdrawal is `COMPLETED`.",
      "examples": [
        "9f8e7d6c5b4a39281706f5e4d3c2b1a0998877665544332211ffeeddccbbaa00"
      ]
    },
    "reasonCode": {
      "type": "string",
      "description": "Present when `status` is `CANCELED` or `REJECTED` — the cancellation/rejection reason as reported by the bank, the network, or Axiym operations. Example: `INSUFFICIENT_BENEFICIARY_DETAILS`."
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Creation timestamp. Formatted in ISO 8601.",
      "examples": [
        "2026-07-14T20:06:50Z"
      ]
    }
  }
}
```

## Schema 43: WithdrawalRequest

```json
{
  "type": "object",
  "description": "A withdrawal from the selected client's Axiym account to a whitelisted external account identified by `destinationId` in that client's address book. Both accounts must be `ACTIVE` and use the same currency. Creating the withdrawal returns `PENDING_CONFIRMATION`; call `POST /clients/{clientId}/withdrawals/{withdrawalId}/confirm` to begin execution.",
  "additionalProperties": false,
  "required": [
    "sourceAccountId",
    "sourceAmount",
    "destinationId"
  ],
  "properties": {
    "sourceAccountId": {
      "type": "string",
      "format": "uuid",
      "description": "Source account identifier (UUID).",
      "examples": [
        "8f1d4a2c-3b5e-4c7a-9d1f-2a6b8c0e4d3a"
      ]
    },
    "sourceAmount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Money"
        }
      ],
      "description": "Amount to debit from the source account. Its currency must be the source account currency."
    },
    "destinationId": {
      "type": "string",
      "format": "uuid",
      "description": "Identifier of the whitelisted external account in the selected client's address book. It must be `ACTIVE` and use the source Axiym account's currency.",
      "examples": [
        "e2c8a4f6-7b1d-4e3a-9c5f-8a0b2d4e6f1c"
      ]
    },
    "reference": {
      "type": "string",
      "maxLength": 140,
      "description": "Text shown to the recipient, typically the invoice number.",
      "examples": [
        "Invoice INV-20416"
      ]
    },
    "supportingDocuments": {
      "type": "array",
      "maxItems": 10,
      "items": {
        "$ref": "#/components/schemas/SupportingDocumentInput"
      },
      "description": "Documents supporting the payment, such as an invoice. Required where the destination corridor requires evidence."
    },
    "externalReference": {
      "$ref": "#/components/schemas/ExternalReference",
      "description": "Your reference for correlation, echoed back on related objects.",
      "examples": [
        "wd-2026-0714-01"
      ]
    }
  }
}
```

## Schema 44: SupportingDocumentType

```json
{
  "type": "string",
  "description": "Axiym classification of evidence supplied with a withdrawal.",
  "enum": [
    "PASSPORT",
    "NATIONAL_ID",
    "DRIVER_LICENSE",
    "RESIDENCE_PERMIT",
    "PROOF_OF_ADDRESS",
    "UTILITY_BILL",
    "BANK_STATEMENT",
    "TAX_CERTIFICATE",
    "CERTIFICATE_OF_INCORPORATION",
    "REGISTRY_EXTRACT",
    "ARTICLES_OF_ASSOCIATION",
    "SHAREHOLDER_REGISTER",
    "DIRECTOR_REGISTER",
    "UBO_DECLARATION",
    "POWER_OF_ATTORNEY",
    "BOARD_RESOLUTION",
    "REGULATORY_LICENSE",
    "BUSINESS_LICENSE",
    "FINANCIAL_STATEMENT",
    "AUDIT_REPORT",
    "SOURCE_OF_FUNDS",
    "INVOICE",
    "CONTRACT",
    "PURCHASE_ORDER",
    "PAYROLL_FILE",
    "LOAN_AGREEMENT",
    "SHIPPING_DOCUMENT",
    "CUSTOMS_DECLARATION",
    "OTHER"
  ],
  "examples": [
    "INVOICE"
  ]
}
```

## Schema 45: SupportingDocumentInput

```json
{
  "type": "object",
  "description": "A document supporting the payment, such as an invoice or contract. One item is one file of up to 10 MB in PDF, JPEG or PNG format; supply the file content as base64.",
  "additionalProperties": false,
  "required": [
    "documentType",
    "data",
    "name"
  ],
  "properties": {
    "documentType": {
      "$ref": "#/components/schemas/SupportingDocumentType"
    },
    "data": {
      "type": "string",
      "contentEncoding": "base64",
      "description": "Complete file encoded as base64 from its raw bytes. Do not include a data-URL prefix."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "File name, including the extension.",
      "examples": [
        "INV-20416.pdf"
      ]
    }
  }
}
```

## Schema 46: SupportingDocument

```json
{
  "type": "object",
  "description": "Metadata of a document accepted with the payment. File content is not returned.",
  "additionalProperties": false,
  "required": [
    "documentType",
    "fileId",
    "name",
    "contentType",
    "size"
  ],
  "properties": {
    "documentType": {
      "$ref": "#/components/schemas/SupportingDocumentType"
    },
    "fileId": {
      "type": "string",
      "format": "uuid",
      "description": "Identifier of the stored file."
    },
    "name": {
      "type": "string",
      "description": "File name supplied with the document."
    },
    "contentType": {
      "type": "string",
      "description": "MIME type detected from the file content.",
      "examples": [
        "application/pdf"
      ]
    },
    "size": {
      "type": "integer",
      "description": "File size in bytes."
    }
  }
}
```

## Schema 47: ClientEventData

```json
{
  "type": "object",
  "description": "Client record snapshot at the time of the event. Fetch `GET /clients/{clientId}` when current profile details are required.",
  "required": [
    "clientId",
    "legalEntityName",
    "paymentRails",
    "currency",
    "status"
  ],
  "properties": {
    "clientId": {
      "type": "string",
      "format": "uuid"
    },
    "code": {
      "type": "string",
      "description": "Human-readable Axiym client code, where available."
    },
    "legalEntityName": {
      "type": "string"
    },
    "paymentRails": {
      "type": "string"
    },
    "currency": {
      "type": "string"
    },
    "status": {
      "type": "string"
    }
  }
}
```

## Schema 48: ClientStatusEventData

```json
{
  "type": "object",
  "description": "Compact client availability change. Fetch `GET /clients/{clientId}` when current profile details are required.",
  "required": [
    "clientId",
    "status"
  ],
  "properties": {
    "clientId": {
      "type": "string",
      "format": "uuid",
      "description": "Axiym identifier of the represented client.",
      "examples": [
        "1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f"
      ]
    },
    "status": {
      "type": "string",
      "description": "Client availability at the time the event was emitted.",
      "enum": [
        "ACTIVE",
        "DISABLED"
      ],
      "examples": [
        "ACTIVE"
      ]
    }
  }
}
```

## Schema 49: ClientOnboardingEventData

```json
{
  "type": "object",
  "description": "Compact outcome of a client onboarding review. Fetch `GET /onboardings/{clientId}` for the authoritative case, including any available rejection reason.",
  "required": [
    "clientId",
    "partnerClientId",
    "status"
  ],
  "properties": {
    "clientId": {
      "type": "string",
      "format": "uuid",
      "description": "Axiym identifier assigned to the represented client.",
      "examples": [
        "1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f"
      ]
    },
    "partnerClientId": {
      "type": "string",
      "description": "Your stable identifier for the client.",
      "examples": [
        "acme-sg-001"
      ]
    },
    "status": {
      "type": "string",
      "description": "Terminal onboarding decision.",
      "enum": [
        "ACTIVE",
        "REJECTED"
      ],
      "examples": [
        "ACTIVE"
      ]
    }
  }
}
```

## Schema 50: WithdrawalEventStatus

```json
{
  "type": "string",
  "description": "Statuses that appear in withdrawal events. `PENDING_CONFIRMATION` never does: events start with `withdrawal.created` once the withdrawal is confirmed.",
  "enum": [
    "PENDING",
    "HELD",
    "COMPLETED",
    "CANCELED",
    "REJECTED"
  ]
}
```

## Schema 51: WithdrawalEventData

```json
{
  "type": "object",
  "description": "A compact notification for routing and correlation. Retrieve the withdrawal from `GET /clients/{clientId}/withdrawals/{withdrawalId}` when you need its amount, fees, transaction hash, or current state.",
  "required": [
    "withdrawalId",
    "status",
    "clientId"
  ],
  "properties": {
    "withdrawalId": {
      "type": "string",
      "format": "uuid",
      "description": "Withdrawal identifier (UUID).",
      "examples": [
        "9b4e2a1c-6d3f-4a8e-bc7d-1f2a3b4c5d6e"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/WithdrawalEventStatus",
      "description": "Withdrawal status at the time the event was emitted.",
      "examples": [
        "COMPLETED"
      ]
    },
    "externalReference": {
      "$ref": "#/components/schemas/ExternalReference",
      "description": "Your reference submitted on creation, where present.",
      "examples": [
        "wd-2026-0714-01"
      ]
    },
    "reasonCode": {
      "type": "string",
      "description": "Present on `withdrawal.canceled` / `withdrawal.rejected` — the reason as reported by the bank, the network, or Axiym operations. Example: `INSUFFICIENT_BENEFICIARY_DETAILS`."
    },
    "clientId": {
      "type": "string",
      "format": "uuid",
      "description": "Axiym identifier of the client that owns the resource.",
      "examples": [
        "1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f"
      ]
    }
  }
}
```

## Schema 52: AccountMovementEventData

```json
{
  "type": "object",
  "description": "A posted account movement. The event includes the movement amount but not the current balance. Retrieve the account when you need its latest balance.",
  "required": [
    "accountId",
    "amount",
    "currency",
    "occurredAt",
    "clientId"
  ],
  "properties": {
    "accountId": {
      "type": "string",
      "format": "uuid",
      "description": "Account identifier (UUID).",
      "examples": [
        "8f1d4a2c-3b5e-4c7a-9d1f-2a6b8c0e4d3a"
      ]
    },
    "amount": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Decimal"
        }
      ],
      "description": "Positive movement amount in the account currency; direction is in the event type.",
      "examples": [
        "500.00"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Account currency.",
      "examples": [
        "USDT"
      ]
    },
    "relatedResourceType": {
      "type": "string",
      "description": "Type of the linked money movement; absent for movements with no linked API resource.",
      "enum": [
        "DEPOSIT",
        "WITHDRAWAL",
        "CONVERSION",
        "PAYOUT",
        "TRANSFER"
      ],
      "examples": [
        "WITHDRAWAL"
      ]
    },
    "relatedResourceId": {
      "type": "string",
      "format": "uuid",
      "description": "Identifier of the linked resource, where present.",
      "examples": [
        "9b4e2a1c-6d3f-4a8e-bc7d-1f2a3b4c5d6e"
      ]
    },
    "occurredAt": {
      "type": "string",
      "format": "date-time",
      "description": "When the movement occurred. Formatted in ISO 8601.",
      "examples": [
        "2026-07-14T20:07:31Z"
      ]
    },
    "clientId": {
      "type": "string",
      "format": "uuid",
      "description": "Axiym identifier of the client that owns the resource.",
      "examples": [
        "1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f"
      ]
    }
  }
}
```

## Schema 53: AccountStatusEventData

```json
{
  "type": "object",
  "description": "Account lifecycle notification.",
  "required": [
    "accountId",
    "status",
    "clientId"
  ],
  "properties": {
    "accountId": {
      "type": "string",
      "format": "uuid",
      "description": "Account identifier (UUID).",
      "examples": [
        "8f1d4a2c-3b5e-4c7a-9d1f-2a6b8c0e4d3a"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/AccountStatus",
      "description": "Account status at the time the event was emitted.",
      "examples": [
        "SUSPENDED"
      ]
    },
    "clientId": {
      "type": "string",
      "format": "uuid",
      "description": "Axiym identifier of the client that owns the resource.",
      "examples": [
        "1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f"
      ]
    }
  }
}
```

## Schema 54: DestinationEventData

```json
{
  "type": "object",
  "description": "Notification about the review or availability of an external account registered in the selected client's address book. `destinationId` identifies its address book entry.",
  "required": [
    "destinationId",
    "status",
    "clientId"
  ],
  "properties": {
    "destinationId": {
      "type": "string",
      "format": "uuid",
      "description": "Identifier of the external account in the selected client's address book (UUID).",
      "examples": [
        "e2c8a4f6-7b1d-4e3a-9c5f-8a0b2d4e6f1c"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/DestinationStatus",
      "description": "External account status at the time the event was emitted.",
      "examples": [
        "ACTIVE"
      ]
    },
    "clientId": {
      "type": "string",
      "format": "uuid",
      "description": "Axiym identifier of the client whose address book contains the external account.",
      "examples": [
        "1d2f7f5e-8a3b-4c6d-9e0f-2a4b6c8d0e2f"
      ]
    }
  }
}
```

## Schema 55: Event

```json
{
  "type": "object",
  "description": "Webhook event envelope delivered to your registered endpoint.",
  "required": [
    "id",
    "timestamp",
    "type",
    "data"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Unique event identifier. Repeated deliveries of the same event carry the same `id`; use it to avoid processing the event more than once.",
      "examples": [
        "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      ]
    },
    "timestamp": {
      "type": "string",
      "format": "date-time",
      "description": "Event timestamp. Formatted in ISO 8601.",
      "examples": [
        "2026-07-14T20:08:00Z"
      ]
    },
    "type": {
      "type": "string",
      "description": "Event type.",
      "examples": [
        "withdrawal.completed"
      ]
    },
    "data": {
      "type": "object",
      "properties": {},
      "description": "Event data."
    }
  }
}
```

## Schema 56: Subscription

```json
{
  "type": "object",
  "properties": {
    "subscriptionId": {
      "type": "string",
      "description": "Subscription identifier (UUID).",
      "format": "uuid",
      "examples": [
        "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      ]
    },
    "endpoint": {
      "type": "string",
      "description": "URL of the endpoint to subscribe to notifications. Must be publicly accessible, use HTTPS, and respond with a 2XX status to a POST request.",
      "title": "",
      "format": "uri",
      "examples": [
        "https://api.acme.example/webhooks"
      ]
    }
  },
  "required": [
    "subscriptionId",
    "endpoint"
  ]
}
```

## Schema 57: RequestStatus

```json
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "`OK` means the test delivery request was accepted. It does not confirm successful delivery or processing by your endpoint.",
      "examples": [
        "OK"
      ],
      "default": "OK",
      "enum": [
        "OK"
      ]
    }
  },
  "required": [
    "status"
  ]
}
```

## Schema 58: PublicKey

```json
{
  "type": "object",
  "properties": {
    "publicKeyId": {
      "type": "string",
      "description": "Public key identifier (UUID).",
      "format": "uuid",
      "examples": [
        "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      ]
    },
    "active": {
      "type": "boolean",
      "description": "Indicates whether the key is active.",
      "examples": [
        true
      ]
    },
    "algorithm": {
      "type": "string",
      "description": "Signature algorithm associated with the public key.",
      "examples": [
        "ED25519"
      ]
    },
    "publicKey": {
      "type": "string",
      "description": "Base64-encoded DER SubjectPublicKeyInfo (SPKI) public key used to verify webhook signatures.",
      "examples": [
        "string"
      ]
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Creation timestamp. Formatted in ISO 8601.",
      "examples": [
        "2026-07-14T20:08:00Z"
      ]
    }
  },
  "required": [
    "publicKeyId",
    "algorithm",
    "publicKey",
    "createdAt",
    "active"
  ]
}
```

## Schema 59: Money

```json
{
  "type": "object",
  "description": "Monetary amount and its currency.",
  "additionalProperties": false,
  "required": [
    "amount",
    "currency"
  ],
  "properties": {
    "amount": {
      "$ref": "#/components/schemas/Decimal"
    },
    "currency": {
      "$ref": "#/components/schemas/Currency"
    }
  }
}
```

## Schema 60: Decimal

```json
{
  "type": "string",
  "description": "Decimal number serialized as a string to preserve precision. Amounts sent to Axiym are positive and carry at most 8 decimal places.",
  "examples": [
    "1000.00"
  ]
}
```

## Schema 61: ExternalReference

```json
{
  "type": "string",
  "maxLength": 255,
  "description": "Your optional identifier for correlating the resource with your system. Axiym returns it on reads. It does not make retries safe; use `Idempotency-Key` for that.\n",
  "examples": [
    "wd-2026-0714-01"
  ]
}
```

## Schema 62: ValidationFieldErrors

```json
{
  "description": "Nested validation errors keyed by field name or array index. Leaf values are arrays of `ValidationError` objects.",
  "oneOf": [
    {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ValidationError"
      }
    },
    {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/components/schemas/ValidationFieldErrors"
      },
      "properties": {}
    }
  ]
}
```

## Schema 63: Network

```json
{
  "type": "string",
  "description": "Wallet network.",
  "enum": [
    "TRON",
    "AVALANCHE"
  ],
  "examples": [
    "TRON"
  ]
}
```

## Schema 64: ValidationError

```json
{
  "type": "object",
  "description": "One field-level validation error.",
  "properties": {
    "code": {
      "type": "string",
      "description": "Identifier of the validation rule that failed, such as `length` or `invalid_currency`.",
      "examples": [
        "length"
      ]
    },
    "message": {
      "type": [
        "string",
        "null"
      ],
      "description": "Human-readable message.",
      "examples": [
        "string"
      ]
    },
    "params": {
      "type": "object",
      "description": "Rule-specific parameters. Always includes `value` (the offending input). Additional keys depend on the rule (e.g. `min`, `max` for length).",
      "properties": {
        "value": {
          "description": "The submitted value that failed validation.",
          "examples": [
            "string"
          ]
        }
      }
    }
  },
  "required": [
    "code",
    "params"
  ]
}
```

## Referenced definitions

- [`#/components/schemas/Address`](#definition-1)
- [`#/components/schemas/Currency`](#definition-2)
- [`#/components/schemas/DisbursementAccount`](#definition-3)
- [`#/components/schemas/PaymentRailsCode`](#definition-4)
- [`#/components/schemas/Decimal`](#definition-5)
- [`#/components/schemas/AccountStatus`](#definition-6)
- [`#/components/schemas/StatementEntryType`](#definition-7)
- [`#/components/schemas/ConversionPairSide`](#definition-8)
- [`#/components/schemas/ExternalReference`](#definition-9)
- [`#/components/schemas/ConversionStatus`](#definition-10)
- [`#/components/schemas/AccountRef`](#definition-11)
- [`#/components/schemas/Money`](#definition-12)
- [`#/components/schemas/DepositStatus`](#definition-13)
- [`#/components/schemas/BankDepositInstruction`](#definition-14)
- [`#/components/schemas/TransferScheme`](#definition-15)
- [`#/components/schemas/BankAddress`](#definition-16)
- [`#/components/schemas/CountryCode`](#definition-17)
- [`#/components/schemas/Iban`](#definition-18)
- [`#/components/schemas/DepositIntermediaryBank`](#definition-19)
- [`#/components/schemas/WalletDepositInstruction`](#definition-20)
- [`#/components/schemas/Network`](#definition-21)
- [`#/components/schemas/BankAddressBookEntry`](#definition-22)
- [`#/components/schemas/DestinationStatus`](#definition-23)
- [`#/components/schemas/Bank`](#definition-24)
- [`#/components/schemas/WalletAddressBookEntry`](#definition-25)
- [`#/components/schemas/BankDestination`](#definition-26)
- [`#/components/schemas/WalletDestination`](#definition-27)
- [`#/components/schemas/Destination`](#definition-28)
- [`#/components/schemas/WithdrawalStatus`](#definition-29)
- [`#/components/schemas/SupportingDocument`](#definition-30)
- [`#/components/schemas/SupportingDocumentType`](#definition-31)
- [`#/components/schemas/SupportingDocumentInput`](#definition-32)
- [`#/components/schemas/WithdrawalEventStatus`](#definition-33)
- [`#/components/schemas/ValidationError`](#definition-34)
- [`#/components/schemas/ValidationFieldErrors`](#definition-35)

### definition-1

`#/components/schemas/Address`

```json
{
  "description": "Registered legal address of a business.",
  "type": "object",
  "properties": {
    "city": {
      "type": "string",
      "description": "City or locality.",
      "examples": [
        "New York"
      ]
    },
    "country": {
      "type": "string",
      "pattern": "^[A-Z]{2}$",
      "description": "ISO 3166-1 alpha-2 country code.",
      "examples": [
        "US"
      ]
    },
    "address": {
      "type": "string",
      "description": "First address line.",
      "examples": [
        "350 Fifth Avenue"
      ]
    },
    "addressExtended": {
      "type": "string",
      "description": "Second address line, where applicable.",
      "examples": [
        "Suite 1200"
      ]
    },
    "district": {
      "type": "string",
      "description": "State / County / Province / Region portion of the address. If the country is US or Canada, then district is required and should use the two-letter code for the subdivision.",
      "examples": [
        "NY"
      ]
    },
    "postalCode": {
      "type": "string",
      "description": "Postal or ZIP code.",
      "examples": [
        "10115"
      ]
    }
  },
  "required": [
    "postalCode",
    "country",
    "address"
  ]
}
```

### definition-2

`#/components/schemas/Currency`

```json
{
  "type": "string",
  "description": "Currency code — ISO 4217 (e.g. USD, EUR) or a supported digital currency (USDT, USDC).",
  "examples": [
    "USD"
  ]
}
```

### definition-3

`#/components/schemas/DisbursementAccount`

```json
{
  "type": "object",
  "properties": {
    "accountNumber": {
      "type": "string",
      "description": "Bank account number.",
      "examples": [
        "0123456789"
      ]
    }
  },
  "description": "Bank account at the Payment Network that receives funding disbursements."
}
```

### definition-4

`#/components/schemas/PaymentRailsCode`

```json
{
  "type": "string",
  "description": "Payment rail code the account settles on (e.g. `ZENUS_BANK`, `TRON`).",
  "examples": [
    "ZENUS_BANK"
  ]
}
```

### definition-5

`#/components/schemas/Decimal`

```json
{
  "type": "string",
  "description": "Decimal number serialized as a string to preserve precision. Amounts sent to Axiym are positive and carry at most 8 decimal places.",
  "examples": [
    "1000.00"
  ]
}
```

### definition-6

`#/components/schemas/AccountStatus`

```json
{
  "description": "`ACTIVE` is available for supported operations. `SUSPENDED` is temporarily unavailable for supported operations. `CLOSED` is permanently closed.",
  "type": "string",
  "enum": [
    "ACTIVE",
    "SUSPENDED",
    "CLOSED"
  ],
  "examples": [
    "ACTIVE"
  ]
}
```

### definition-7

`#/components/schemas/StatementEntryType`

```json
{
  "type": "string",
  "description": "Direction of movement on the account.",
  "enum": [
    "CREDIT",
    "DEBIT"
  ],
  "examples": [
    "DEBIT"
  ]
}
```

### definition-8

`#/components/schemas/ConversionPairSide`

```json
{
  "type": "object",
  "description": "One side of a conversion pair.",
  "required": [
    "currency",
    "paymentRails"
  ],
  "properties": {
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Side currency.",
      "examples": [
        "USD"
      ]
    },
    "paymentRails": {
      "$ref": "#/components/schemas/PaymentRailsCode",
      "description": "Rail the side settles on.",
      "examples": [
        "ZENUS_BANK"
      ]
    }
  }
}
```

### definition-9

`#/components/schemas/ExternalReference`

```json
{
  "type": "string",
  "maxLength": 255,
  "description": "Your optional identifier for correlating the resource with your system. Axiym returns it on reads. It does not make retries safe; use `Idempotency-Key` for that.\n",
  "examples": [
    "wd-2026-0714-01"
  ]
}
```

### definition-10

`#/components/schemas/ConversionStatus`

```json
{
  "type": "string",
  "description": "`PENDING` awaits confirmation and appears only in the create response. `ACTIVE` is executing. `COMPLETED` means the funds were exchanged. `CANCELED` means the conversion stopped; see `reasonCode`.\n",
  "enum": [
    "PENDING",
    "ACTIVE",
    "COMPLETED",
    "CANCELED"
  ],
  "examples": [
    "PENDING"
  ]
}
```

### definition-11

`#/components/schemas/AccountRef`

```json
{
  "type": "object",
  "description": "Compact account reference. Fetch the account via `GET /clients/{clientId}/accounts/{accountId}` for the current balance and status; deposit instructions serve its payment details.",
  "required": [
    "accountId",
    "currency",
    "paymentRails"
  ],
  "properties": {
    "accountId": {
      "type": "string",
      "format": "uuid",
      "description": "Account identifier (UUID).",
      "examples": [
        "5c0a9d3e-1f2b-4a6c-8e7d-9b3f5a1c2d4e"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Account currency.",
      "examples": [
        "USD"
      ]
    },
    "paymentRails": {
      "$ref": "#/components/schemas/PaymentRailsCode",
      "description": "Rail the account settles on.",
      "examples": [
        "ZENUS_BANK"
      ]
    }
  }
}
```

### definition-12

`#/components/schemas/Money`

```json
{
  "type": "object",
  "description": "Monetary amount and its currency.",
  "additionalProperties": false,
  "required": [
    "amount",
    "currency"
  ],
  "properties": {
    "amount": {
      "$ref": "#/components/schemas/Decimal"
    },
    "currency": {
      "$ref": "#/components/schemas/Currency"
    }
  }
}
```

### definition-13

`#/components/schemas/DepositStatus`

```json
{
  "type": "string",
  "description": "`PENDING` awaits crediting. `HELD` is temporarily on hold. `COMPLETED` was credited to the account. `CANCELED` or `REJECTED` was not completed; see `reasonCode`.\n",
  "enum": [
    "PENDING",
    "HELD",
    "COMPLETED",
    "CANCELED",
    "REJECTED"
  ],
  "examples": [
    "COMPLETED"
  ]
}
```

### definition-14

`#/components/schemas/BankDepositInstruction`

```json
{
  "type": "object",
  "title": "Bank transfer",
  "description": "Axiym's receiving bank details for one transfer scheme. Exactly one of `iban` and `accountNumber` is present. Bank fields are present when the scheme uses them.",
  "required": [
    "scheme",
    "beneficiaryName"
  ],
  "properties": {
    "scheme": {
      "$ref": "#/components/schemas/TransferScheme"
    },
    "beneficiaryName": {
      "type": "string",
      "description": "Name of the receiving party to put on the transfer.",
      "examples": [
        "Axi Labs AG"
      ]
    },
    "beneficiaryAddress": {
      "allOf": [
        {
          "$ref": "#/components/schemas/BankAddress"
        }
      ],
      "description": "Postal address of the receiving party. `country` is always present."
    },
    "iban": {
      "$ref": "#/components/schemas/Iban",
      "description": "IBAN to send to. Present instead of `accountNumber` when the account is identified by an IBAN."
    },
    "accountNumber": {
      "type": "string",
      "description": "Account number to send to. Present instead of `iban` when the account has no IBAN.",
      "examples": [
        "600000000"
      ]
    },
    "swiftBic": {
      "type": "string",
      "description": "SWIFT/BIC code of the receiving bank.",
      "examples": [
        "ZEITPRSJXXX"
      ]
    },
    "clearingCode": {
      "type": "string",
      "description": "Local clearing or routing code of the receiving bank (for example the ABA routing number for Fedwire and ACH).",
      "examples": [
        "021000021"
      ]
    },
    "clearingSystemCode": {
      "type": "string",
      "description": "Clearing system `clearingCode` belongs to. Present together with `clearingCode`.",
      "examples": [
        "USABA"
      ]
    },
    "bankName": {
      "type": "string",
      "description": "Receiving bank name.",
      "examples": [
        "Zenus Bank International Inc"
      ]
    },
    "bankAddress": {
      "allOf": [
        {
          "$ref": "#/components/schemas/BankAddress"
        }
      ],
      "description": "Postal address of the receiving bank. `country` is always present."
    },
    "intermediaryBank": {
      "$ref": "#/components/schemas/DepositIntermediaryBank"
    },
    "reference": {
      "type": "string",
      "description": "ISO 11649 creditor reference (`RF` + check digits) assigned by Axiym, formatted in groups of four. Present when the account is funded through a shared receiving account; include it on the transfer so the deposit is matched automatically (matching ignores the spaces). Absent when the receiving account number alone identifies the Axiym account.",
      "examples": [
        "RF11 0004 4901 01"
      ]
    }
  }
}
```

### definition-15

`#/components/schemas/TransferScheme`

```json
{
  "type": "string",
  "description": "Transfer scheme the instruction applies to. `BOOK` is a transfer between accounts held at the same provider; `BLOCKCHAIN` is a wallet transfer.",
  "enum": [
    "SWIFT",
    "FEDWIRE",
    "ACH",
    "SEPA",
    "FPS",
    "BOOK",
    "BLOCKCHAIN"
  ]
}
```

### definition-16

`#/components/schemas/BankAddress`

```json
{
  "type": "object",
  "description": "Postal address of the bank. Only the country is required — it selects the corridor rules. Supply the rest when the corridor or a correspondent asks for it.",
  "additionalProperties": false,
  "required": [
    "country"
  ],
  "properties": {
    "streetName": {
      "type": "string"
    },
    "buildingNumber": {
      "type": "string"
    },
    "city": {
      "type": "string",
      "examples": [
        "New York"
      ]
    },
    "region": {
      "type": "string"
    },
    "postalCode": {
      "type": "string"
    },
    "country": {
      "$ref": "#/components/schemas/CountryCode"
    }
  }
}
```

### definition-17

`#/components/schemas/CountryCode`

```json
{
  "type": "string",
  "pattern": "^[A-Z]{2}$",
  "description": "ISO 3166-1 alpha-2 country code.",
  "examples": [
    "US"
  ]
}
```

### definition-18

`#/components/schemas/Iban`

```json
{
  "type": "string",
  "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]{10,30}$",
  "description": "International Bank Account Number in electronic format — no spaces, upper case. Its check digits are verified; country-specific lengths are left to the receiving bank.",
  "examples": [
    "LU364080000000711363"
  ]
}
```

### definition-19

`#/components/schemas/DepositIntermediaryBank`

```json
{
  "type": "object",
  "description": "Bank the transfer passes through before the receiving bank. Present when the scheme uses one; put it on the transfer as the intermediary bank.",
  "properties": {
    "swiftBic": {
      "type": "string",
      "description": "SWIFT/BIC code of the intermediary bank.",
      "examples": [
        "CHASUS33XXX"
      ]
    },
    "clearingCode": {
      "type": "string",
      "description": "Local clearing or routing code of the intermediary bank.",
      "examples": [
        "021000021"
      ]
    },
    "clearingSystemCode": {
      "type": "string",
      "description": "Clearing system `clearingCode` belongs to. Present together with `clearingCode`.",
      "examples": [
        "USABA"
      ]
    },
    "bankName": {
      "type": "string",
      "description": "Intermediary bank name.",
      "examples": [
        "JP Morgan Chase NA"
      ]
    },
    "bankAddress": {
      "allOf": [
        {
          "$ref": "#/components/schemas/BankAddress"
        }
      ],
      "description": "Postal address of the intermediary bank. `country` is always present."
    }
  }
}
```

### definition-20

`#/components/schemas/WalletDepositInstruction`

```json
{
  "type": "object",
  "title": "Wallet transfer",
  "required": [
    "scheme",
    "beneficiaryName",
    "walletAddress",
    "network"
  ],
  "properties": {
    "scheme": {
      "type": "string",
      "enum": [
        "BLOCKCHAIN"
      ],
      "description": "Always `BLOCKCHAIN` for a wallet instruction."
    },
    "beneficiaryName": {
      "type": "string",
      "description": "Name of the receiving party the address belongs to. The transfer itself carries no name; use it in your own records.",
      "examples": [
        "Axi Labs AG"
      ]
    },
    "walletAddress": {
      "type": "string",
      "description": "Deposit address of the account; deposits are matched by the address itself.",
      "examples": [
        "TWd2yzw5yFc5W8Tq6CuNZcVJgfmLnBcT4Q"
      ]
    },
    "network": {
      "$ref": "#/components/schemas/Network",
      "description": "Network of the wallet address.",
      "examples": [
        "TRON"
      ]
    }
  }
}
```

### definition-21

`#/components/schemas/Network`

```json
{
  "type": "string",
  "description": "Wallet network.",
  "enum": [
    "TRON",
    "AVALANCHE"
  ],
  "examples": [
    "TRON"
  ]
}
```

### definition-22

`#/components/schemas/BankAddressBookEntry`

```json
{
  "type": "object",
  "title": "Bank account",
  "description": "A registered external bank account. Exactly one of `iban` and `accountNumber` is present.",
  "required": [
    "destinationId",
    "status",
    "currency",
    "bank"
  ],
  "oneOf": [
    {
      "title": "IBAN",
      "required": [
        "iban"
      ]
    },
    {
      "title": "Account number",
      "required": [
        "accountNumber"
      ]
    }
  ],
  "properties": {
    "destinationId": {
      "type": "string",
      "format": "uuid",
      "description": "Identifier of the external account in the selected client's address book (UUID).",
      "examples": [
        "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/DestinationStatus",
      "description": "Review and availability status of the registered external account.",
      "examples": [
        "ACTIVE"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency associated with the registered external account.",
      "examples": [
        "USD"
      ]
    },
    "iban": {
      "$ref": "#/components/schemas/Iban",
      "description": "IBAN of the account. Present instead of `accountNumber` when the account is identified by an IBAN."
    },
    "accountNumber": {
      "type": "string",
      "description": "Domestic bank account number. Present instead of `iban` when the account has no IBAN.",
      "examples": [
        "0123456789"
      ]
    },
    "bank": {
      "$ref": "#/components/schemas/Bank",
      "description": "Destination bank details."
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Creation timestamp. Formatted in ISO 8601.",
      "examples": [
        "2026-06-12T14:05:00Z"
      ]
    }
  }
}
```

### definition-23

`#/components/schemas/DestinationStatus`

```json
{
  "type": "string",
  "description": "`PENDING_REVIEW` awaits due diligence and compliance checks. `ACTIVE` is whitelisted for deposits and withdrawals. `SUSPENDED` is temporarily unavailable. `CLOSED` is permanently retired.",
  "enum": [
    "PENDING_REVIEW",
    "ACTIVE",
    "SUSPENDED",
    "CLOSED"
  ],
  "examples": [
    "ACTIVE"
  ]
}
```

### definition-24

`#/components/schemas/Bank`

```json
{
  "type": "object",
  "description": "Destination bank details. Present on bank destinations only. The address country selects the applicable corridor rules.",
  "additionalProperties": false,
  "required": [
    "bankName",
    "address"
  ],
  "properties": {
    "bankName": {
      "type": "string",
      "minLength": 1,
      "description": "Bank name.",
      "examples": [
        "Bank of America"
      ]
    },
    "address": {
      "$ref": "#/components/schemas/BankAddress"
    },
    "swiftBic": {
      "type": "string",
      "pattern": "^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$",
      "description": "ISO 9362 SWIFT/BIC, when required for the corridor.",
      "examples": [
        "BOFAUS3NXXX"
      ]
    },
    "clearingCode": {
      "type": "string",
      "description": "Local clearing or routing code, when required for the corridor.",
      "examples": [
        "026009593"
      ]
    },
    "clearingSystemCode": {
      "type": "string",
      "description": "Clearing system the code belongs to. Axiym derives it from the bank country; supply it where a country has more than one system.",
      "examples": [
        "USABA"
      ]
    }
  }
}
```

### definition-25

`#/components/schemas/WalletAddressBookEntry`

```json
{
  "type": "object",
  "title": "Wallet address",
  "required": [
    "destinationId",
    "status",
    "currency",
    "walletAddress",
    "network"
  ],
  "properties": {
    "destinationId": {
      "type": "string",
      "format": "uuid",
      "description": "Identifier of the external account in the selected client's address book (UUID).",
      "examples": [
        "e2c8a4f6-7b1d-4e3a-9c5f-8a0b2d4e6f1c"
      ]
    },
    "status": {
      "$ref": "#/components/schemas/DestinationStatus",
      "description": "Review and availability status of the registered external account.",
      "examples": [
        "ACTIVE"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency associated with the registered external account.",
      "examples": [
        "USDT"
      ]
    },
    "walletAddress": {
      "type": "string",
      "description": "Wallet address of the entry; static and reusable.",
      "examples": [
        "TNPeeaaFB7K9cmo4uQpcU32zGK8G1NYqeL"
      ]
    },
    "network": {
      "$ref": "#/components/schemas/Network",
      "description": "Network of the wallet address.",
      "examples": [
        "TRON"
      ]
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "Creation timestamp. Formatted in ISO 8601.",
      "examples": [
        "2026-06-12T14:05:00Z"
      ]
    }
  }
}
```

### definition-26

`#/components/schemas/BankDestination`

```json
{
  "type": "object",
  "title": "Bank account",
  "description": "The bank account the funds are delivered to. Exactly one of `iban` and `accountNumber` is present.",
  "required": [
    "currency",
    "bank"
  ],
  "oneOf": [
    {
      "title": "IBAN",
      "required": [
        "iban"
      ]
    },
    {
      "title": "Account number",
      "required": [
        "accountNumber"
      ]
    }
  ],
  "properties": {
    "destinationId": {
      "type": "string",
      "format": "uuid",
      "description": "Address book entry the destination was taken from, when applicable.",
      "examples": [
        "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency delivered to the destination.",
      "examples": [
        "USD"
      ]
    },
    "iban": {
      "$ref": "#/components/schemas/Iban",
      "description": "IBAN of the account. Present instead of `accountNumber` when the account is identified by an IBAN."
    },
    "accountNumber": {
      "type": "string",
      "description": "Domestic bank account number. Present instead of `iban` when the account has no IBAN.",
      "examples": [
        "0123456789"
      ]
    },
    "bank": {
      "$ref": "#/components/schemas/Bank",
      "description": "Destination bank details."
    }
  }
}
```

### definition-27

`#/components/schemas/WalletDestination`

```json
{
  "type": "object",
  "title": "Wallet address",
  "required": [
    "currency",
    "walletAddress",
    "network"
  ],
  "properties": {
    "destinationId": {
      "type": "string",
      "format": "uuid",
      "description": "Address book entry the destination was taken from, when applicable.",
      "examples": [
        "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      ]
    },
    "currency": {
      "$ref": "#/components/schemas/Currency",
      "description": "Currency delivered to the destination.",
      "examples": [
        "USDT"
      ]
    },
    "walletAddress": {
      "type": "string",
      "description": "Wallet address on the given network.",
      "examples": [
        "TNPeeaaFB7K9cmo4uQpcU32zGK8G1NYqeL"
      ]
    },
    "network": {
      "$ref": "#/components/schemas/Network",
      "description": "Network of the wallet address.",
      "examples": [
        "TRON"
      ]
    }
  }
}
```

### definition-28

`#/components/schemas/Destination`

```json
{
  "description": "Where the funds are delivered, as recorded on the operation at creation time. This is a snapshot: it carries the account or wallet details and, when the destination was taken from the address book, its `destinationId`. It does not carry the address book entry's status or creation date; read the address book entry for its current state.\n\n- A bank destination contains `iban` or `accountNumber`, and `bank`.\n- A wallet destination contains `walletAddress` and `network`.\n\nThe two field sets never appear together.",
  "oneOf": [
    {
      "$ref": "#/components/schemas/BankDestination"
    },
    {
      "$ref": "#/components/schemas/WalletDestination"
    }
  ]
}
```

### definition-29

`#/components/schemas/WithdrawalStatus`

```json
{
  "type": "string",
  "description": "`PENDING_CONFIRMATION` is awaiting explicit confirmation and has not started execution. `PENDING` is queued for execution. `HELD` is temporarily on hold. `COMPLETED` means the withdrawal finished successfully. `CANCELED` and `REJECTED` did not complete (see `reasonCode`).",
  "enum": [
    "PENDING_CONFIRMATION",
    "PENDING",
    "HELD",
    "COMPLETED",
    "CANCELED",
    "REJECTED"
  ],
  "examples": [
    "PENDING"
  ]
}
```

### definition-30

`#/components/schemas/SupportingDocument`

```json
{
  "type": "object",
  "description": "Metadata of a document accepted with the payment. File content is not returned.",
  "additionalProperties": false,
  "required": [
    "documentType",
    "fileId",
    "name",
    "contentType",
    "size"
  ],
  "properties": {
    "documentType": {
      "$ref": "#/components/schemas/SupportingDocumentType"
    },
    "fileId": {
      "type": "string",
      "format": "uuid",
      "description": "Identifier of the stored file."
    },
    "name": {
      "type": "string",
      "description": "File name supplied with the document."
    },
    "contentType": {
      "type": "string",
      "description": "MIME type detected from the file content.",
      "examples": [
        "application/pdf"
      ]
    },
    "size": {
      "type": "integer",
      "description": "File size in bytes."
    }
  }
}
```

### definition-31

`#/components/schemas/SupportingDocumentType`

```json
{
  "type": "string",
  "description": "Axiym classification of evidence supplied with a withdrawal.",
  "enum": [
    "PASSPORT",
    "NATIONAL_ID",
    "DRIVER_LICENSE",
    "RESIDENCE_PERMIT",
    "PROOF_OF_ADDRESS",
    "UTILITY_BILL",
    "BANK_STATEMENT",
    "TAX_CERTIFICATE",
    "CERTIFICATE_OF_INCORPORATION",
    "REGISTRY_EXTRACT",
    "ARTICLES_OF_ASSOCIATION",
    "SHAREHOLDER_REGISTER",
    "DIRECTOR_REGISTER",
    "UBO_DECLARATION",
    "POWER_OF_ATTORNEY",
    "BOARD_RESOLUTION",
    "REGULATORY_LICENSE",
    "BUSINESS_LICENSE",
    "FINANCIAL_STATEMENT",
    "AUDIT_REPORT",
    "SOURCE_OF_FUNDS",
    "INVOICE",
    "CONTRACT",
    "PURCHASE_ORDER",
    "PAYROLL_FILE",
    "LOAN_AGREEMENT",
    "SHIPPING_DOCUMENT",
    "CUSTOMS_DECLARATION",
    "OTHER"
  ],
  "examples": [
    "INVOICE"
  ]
}
```

### definition-32

`#/components/schemas/SupportingDocumentInput`

```json
{
  "type": "object",
  "description": "A document supporting the payment, such as an invoice or contract. One item is one file of up to 10 MB in PDF, JPEG or PNG format; supply the file content as base64.",
  "additionalProperties": false,
  "required": [
    "documentType",
    "data",
    "name"
  ],
  "properties": {
    "documentType": {
      "$ref": "#/components/schemas/SupportingDocumentType"
    },
    "data": {
      "type": "string",
      "contentEncoding": "base64",
      "description": "Complete file encoded as base64 from its raw bytes. Do not include a data-URL prefix."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "File name, including the extension.",
      "examples": [
        "INV-20416.pdf"
      ]
    }
  }
}
```

### definition-33

`#/components/schemas/WithdrawalEventStatus`

```json
{
  "type": "string",
  "description": "Statuses that appear in withdrawal events. `PENDING_CONFIRMATION` never does: events start with `withdrawal.created` once the withdrawal is confirmed.",
  "enum": [
    "PENDING",
    "HELD",
    "COMPLETED",
    "CANCELED",
    "REJECTED"
  ]
}
```

### definition-34

`#/components/schemas/ValidationError`

```json
{
  "type": "object",
  "description": "One field-level validation error.",
  "properties": {
    "code": {
      "type": "string",
      "description": "Identifier of the validation rule that failed, such as `length` or `invalid_currency`.",
      "examples": [
        "length"
      ]
    },
    "message": {
      "type": [
        "string",
        "null"
      ],
      "description": "Human-readable message.",
      "examples": [
        "string"
      ]
    },
    "params": {
      "type": "object",
      "description": "Rule-specific parameters. Always includes `value` (the offending input). Additional keys depend on the rule (e.g. `min`, `max` for length).",
      "properties": {
        "value": {
          "description": "The submitted value that failed validation.",
          "examples": [
            "string"
          ]
        }
      }
    }
  },
  "required": [
    "code",
    "params"
  ]
}
```

### definition-35

`#/components/schemas/ValidationFieldErrors`

```json
{
  "description": "Nested validation errors keyed by field name or array index. Leaf values are arrays of `ValidationError` objects.",
  "oneOf": [
    {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ValidationError"
      }
    },
    {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/components/schemas/ValidationFieldErrors"
      },
      "properties": {}
    }
  ]
}
```
