For the complete documentation index, see llms.txt. This page is also available as Markdown.

Fiat Accounts

Accounts Unigox issues to your customers, in their own name, for them to be paid into.

A fiat account belongs to a customer you created with POST /api/v1/partner/users and put through KYC, and it is addressed by its own fiat_account_id. Open one, show the customer where to pay in, and read what lands on it. In v1 an account only receives: moving money off it is not on this API, and converting it is an order.

An optional product Unigox activates per partner. GET /api/v1/partner/fiat-accounts/config answers whether it is on for you, before any customer is in scope.

What fiat accounts you can offer

get
/api/v1/partner/fiat-accounts/config

Whether you may issue fiat accounts right now, which currencies an account may be denominated in, and which jurisdictions each currency can be issued from. The one fiat account route that names no customer.

Entitlement is never an error here: when the product is not active it answers 200 with enabled: false and a disabled_reason. issues_accounts: false with enabled: true means you may read accounts but not open them.

Authorizations
X-API-KeystringRequired

Partner API key for authentication. Required for all partner account endpoints.

Responses
200

Current configuration

application/json
successbooleanRequiredExample: true
get/api/v1/partner/fiat-accounts/config
GET /api/v1/partner/fiat-accounts/config HTTP/1.1
Host: api-staging.unigox.com
X-API-Key: YOUR_API_KEY
Accept: */*
{
  "success": true,
  "data": {
    "enabled": true,
    "issues_accounts": true,
    "disabled_reason": "PRODUCT_NOT_ACTIVATED",
    "currencies": [
      "EUR",
      "GBP"
    ],
    "issuers": {
      "EUR": [
        "NL",
        "MT"
      ],
      "GBP": [
        "GB"
      ]
    }
  }
}

List a customer's fiat accounts

get
/api/v1/partner/fiat-accounts

Every fiat account issued to one of your customers. A customer with none yet answers an empty list.

Only the last four digits of the identifier travel here. Read a single account for the pay-in details a customer needs.

Authorizations
X-API-KeystringRequired

Partner API key for authentication. Required for all partner account endpoints.

Query parameters
user_uuidstring · uuidRequired

The customer whose accounts to list.

Example: 550e8400-e29b-41d4-a716-446655440000
Responses
200

Accounts

application/json
successbooleanRequiredExample: true
get/api/v1/partner/fiat-accounts
GET /api/v1/partner/fiat-accounts?user_uuid=123e4567-e89b-12d3-a456-426614174000 HTTP/1.1
Host: api-staging.unigox.com
X-API-Key: YOUR_API_KEY
Accept: */*
{
  "success": true,
  "data": {
    "fiat_accounts": [
      {
        "fiat_account_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
        "user_uuid": "550e8400-e29b-41d4-a716-446655440000",
        "currency": "EUR",
        "issuer_country": "NL",
        "status": "active",
        "created": true,
        "iban": "NL91ABNA0417164300",
        "bic": "ABNANL2A",
        "account_number": "25976129",
        "sort_code": "23-08-01",
        "iban_last4": "8827",
        "account_number_last4": "4471",
        "bank_name": "ABN AMRO",
        "holder_name": "Maria ZALISHCHUK",
        "balances": [
          {
            "currency": "EUR",
            "available": "1250.00",
            "pending": "0.00",
            "total": "1250.00"
          }
        ],
        "balances_unavailable": false,
        "created_at": "2026-09-18T10:00:00Z"
      }
    ]
  }
}

Issue a fiat account

post
/api/v1/partner/fiat-accounts

Opens a fiat account for one of your customers. The customer must be KYC-verified by Unigox; everything the bank needs about them comes from that verification, so there is no identity to submit here.

The account is opened asynchronously. It answers 201 with status: "pending" and no pay-in details; watch for fiat_account.updated — or poll the account — until it reads active, and only then tell the customer where to transfer.

Idempotent per (user_uuid, currency, issuer_country). A repeat answers 201 with the same account and created: false.

When the bank needs a field the KYC record does not have, this answers 422 ISSUANCE_NOT_READY and names those fields in error.details.missing_fields. They are KYC field names: fill them with PATCH /api/v1/partner/users/{user_uuid}/kyc and post again.

Authorizations
X-API-KeystringRequired

Partner API key for authentication. Required for all partner account endpoints.

Body
user_uuidstring · uuidRequired

One of your customers, KYC-verified by Unigox.

Example: 550e8400-e29b-41d4-a716-446655440000
currencystringRequired

One of config.currencies.

Example: EUR
issuer_countrystringOptional

ISO 3166-1 alpha-2, one of config.issuers[currency]. Omitted, the currency's default jurisdiction is used.

Example: NL
postal_codestringOptional

Only needed when the chosen jurisdiction requires one and the customer's KYC record has none. Sent here, it is written onto that KYC record.

Example: 1011 AB
Responses
400

UNSUPPORTED_CURRENCY, UNSUPPORTED_ISSUER_COUNTRY or POSTAL_CODE_REQUIRED.

application/json
successbooleanRequiredExample: false
post/api/v1/partner/fiat-accounts
POST /api/v1/partner/fiat-accounts HTTP/1.1
Host: api-staging.unigox.com
X-API-Key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 115

{
  "user_uuid": "550e8400-e29b-41d4-a716-446655440000",
  "currency": "EUR",
  "issuer_country": "NL",
  "postal_code": "1011 AB"
}
{
  "success": false,
  "error": {
    "code": "QUOTE_EXPIRED",
    "message": "Quote has expired, please request a new quote",
    "details": {
      "quoted_rate": 1530.12,
      "current_rate": 1545
    }
  }
}

One fiat account

get
/api/v1/partner/fiat-accounts/{fiat_account_id}

One account: its status, its live balances, and — once it is active — the pay-in details to show the customer.

Those details are shaped by the rail the account is on: iban and bic for a euro (SEPA) account, account_number and sort_code for a sterling (Faster Payments) one. Keys that do not apply are absent rather than empty.

balances_unavailable: true means the balance read failed. Balances are reported as unavailable rather than as zero: a zero you act on is worse than a gap.

Authorizations
X-API-KeystringRequired

Partner API key for authentication. Required for all partner account endpoints.

Path parameters
fiat_account_idstring · uuidRequired

The account's id, as returned in fiat_account_id. An id that names no account and one that is not yours both answer 404; they are indistinguishable on purpose.

Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
Responses
200

Account

application/json
successbooleanRequiredExample: true
get/api/v1/partner/fiat-accounts/{fiat_account_id}
GET /api/v1/partner/fiat-accounts/{fiat_account_id} HTTP/1.1
Host: api-staging.unigox.com
X-API-Key: YOUR_API_KEY
Accept: */*
{
  "success": true,
  "data": {
    "fiat_account_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "user_uuid": "550e8400-e29b-41d4-a716-446655440000",
    "currency": "EUR",
    "issuer_country": "NL",
    "status": "active",
    "created": true,
    "iban": "NL91ABNA0417164300",
    "bic": "ABNANL2A",
    "account_number": "25976129",
    "sort_code": "23-08-01",
    "iban_last4": "8827",
    "account_number_last4": "4471",
    "bank_name": "ABN AMRO",
    "holder_name": "Maria ZALISHCHUK",
    "balances": [
      {
        "currency": "EUR",
        "available": "1250.00",
        "pending": "0.00",
        "total": "1250.00"
      }
    ],
    "balances_unavailable": false,
    "created_at": "2026-09-18T10:00:00Z"
  }
}

Money that moved on a fiat account

get
/api/v1/partner/fiat-accounts/{fiat_account_id}/transactions

One page of the money that moved on the account, newest first. v1 is receive-only, so every row is a credit: a transfer the customer's payer sent to the account.

A credit that funded an on-ramp carries that order in order_id; one that matched no order carries null and simply sits on the account.

Paging is page. has_more says whether another page exists.

Authorizations
X-API-KeystringRequired

Partner API key for authentication. Required for all partner account endpoints.

Path parameters
fiat_account_idstring · uuidRequired

The account's id, as returned in fiat_account_id. An id that names no account and one that is not yours both answer 404; they are indistinguishable on purpose.

Example: 7c9e6679-7425-40de-944b-e07fc1f90ae7
Query parameters
pageinteger · min: 1Optional

1-based page number. Omitted or unparseable means the first page.

Example: 1
Responses
200

Transactions page

application/json
successbooleanRequiredExample: true
get/api/v1/partner/fiat-accounts/{fiat_account_id}/transactions
GET /api/v1/partner/fiat-accounts/{fiat_account_id}/transactions HTTP/1.1
Host: api-staging.unigox.com
X-API-Key: YOUR_API_KEY
Accept: */*
{
  "success": true,
  "data": {
    "transactions": [
      {
        "transaction_id": "5f1b2c9a-1d44-4f0e-9c1a-2b5f0d7e9a31",
        "type": "credit",
        "amount": "500.00",
        "currency": "EUR",
        "order_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
        "description": "Invoice 2026-114",
        "created_at": "2026-09-18T10:04:22Z"
      }
    ],
    "has_more": false
  }
}

Last updated