Fiat Account

Fiat Accounts are bank-detail-enabled payment accounts used to receive fiat deposits and execute payouts across external payment rails (e.g., UK Faster Payments, SEPA, ACH, FedWire, SIC, DKK, SEK). Fiat Accounts can be created in multiple currencies and serve as the core balance layer for your operations.

You can also link multiple Virtual Accounts to a Fiat Account to provide dedicated vIBANs for your end users.


Account Statuses

The creation of a Fiat Account is asynchronous as bank details are provisioned with underlying banking partners. Upon creation, accounts are initialized in the CREATED status and automatically transition to ACTIVE once bank details are assigned (typically within seconds).

We strongly recommend configuring webhooks to listen for the FIAT_ACCOUNT.STATUS_UPDATED event to trigger downstream workflows automatically.

StatusDescription
CREATEDThe account has been created on Fiat Republic and is awaiting allocation of bank details from the banking provider. The account cannot process payments at this stage.
ACTIVEThe account is active, fully provisioned with bank details, and ready to send and receive payments.
BLOCKEDThe account is temporarily frozen. No incoming or outgoing payments can be processed. Accounts may be blocked by Fiat Republic for compliance checks or by members via the API for internal risk management.
Monitor this status via webhooks to update end users promptly.
CLOSEDThe account is permanently closed and cannot be reused. This is a terminal state.
ACTIVATION_FAILEDBank details could not be provisioned by the underlying banking partner. Account initialization failed.

Fiat Account Tags

Tags classify the operational nature of a Fiat Account and assist with regulatory compliance, fund safeguarding, and automated reconciliation.

Available Tags

  • CORPORATE: Designates accounts holding operational funds belonging directly to your business.
  • CLIENT_MONEY: Designates segregated accounts holding end-user/customer funds in accordance with regulatory safeguarding requirements.
  • MASTER: A system-managed tag automatically applied to any Fiat Account that has one or more Virtual Accounts attached to it.

Tag Rules & Mutual Exclusivity

To ensure strict compliance and regulatory auditability, the following validation rules apply:

  1. Mutual Exclusivity: An account cannot hold both CORPORATE and CLIENT_MONEY tags simultaneously. Any API call resulting in both tags will be rejected.
  2. Account Creation (POST /fiat-accounts): You can specify either CORPORATE or CLIENT_MONEY in the tags array when creating a new account.
  3. Post-Creation Upgrades (PATCH /fiat-accounts/{id}): You can update an account to CLIENT_MONEY at any time post-creation. Applying CLIENT_MONEY automatically removes the CORPORATE tag (and vice versa).
  4. Switching Back Restriction: Upgrading from CORPORATE to CLIENT_MONEY via PATCH is self-service. However, if you attempt to switch an account back from CLIENT_MONEY to CORPORATE via the Public API, the request will be rejected with an error instructing you to contact Fiat Republic Support.
Current Tag StateTarget Tag StateAllowed via Public API?
Untagged / NoneCLIENT_MONEY or CORPORATEYes (via POST or PATCH)
CORPORATECLIENT_MONEYYes (via PATCH — automatically replaces CORPORATE)
CLIENT_MONEYCORPORATENo — Returns an API error. Contact Fiat Republic Support to request this change.
Any StateCORPORATE + CLIENT_MONEYNo — Rejected. Coexistence of both tags on a single account is forbidden.

Important Note on Reverting CLIENT_MONEY Tags:
If you attempt to update an account tagged as CLIENT_MONEY back to CORPORATE via PATCH /fiat-accounts/{id}, the API will reject the request with an error message. Please reach out to Fiat Republic Support or your Account Manager to request manual review for tag downgrades.


Account Balances

Each Fiat Account tracks balance across three fields to provide real-time liquidity visibility:

Balance FieldDescription
balance.actualThe total settled balance taking into account all posted transactions.
balance.reservedThe sum of all initiated payouts from the account that are currently in progress but not yet settled.
balance.availableThe net balance available for new payouts or transfers:
Available Balance = Actual Balance - Reserved Balance
"balance": {
    "actual": "1000.00",
    "available": "800.00",
    "reserved": "200.00"
}

The Fiat Account Object

When creating, fetching, or receiving webhook events for a Fiat Account, the API returns the full Fiat Account payload structured as follows:

{
    "id": "fac_p9mnzv0p8jgn1ya85o",
    "businessId": "biz_grbvdy1vz3z7z54n6m",
    "owner": {
        "type": "MEMBER",
        "id": "mbr_5opkx8g1jdm1lz4m3e"
    },
    "balance": {
        "actual": "1000.00",
        "available": "800.00",
        "reserved": "200.00"
    },
    "currency": "EUR",
    "bankDetails": {
        "bankAddress": {
            "line1": "123 Financial Avenue",
            "line2": null,
            "city": "Luxembourg",
            "state": null,
            "postalCode": "L-1000",
            "country": "LU"
        },
        "bankName": "Partner Bank S.A.",
        "accountHolderName": "Your Company Name Ltd",
        "country": "LU",
        "iban": "LU123456789012345678",
        "bic": "PARTLULLXXX"
    },
    "label": "Master Fiat Account - EUR Client Funds",
    "status": "ACTIVE",
    "tags": [
        "CLIENT_MONEY",
        "MASTER"
    ],
    "createdAt": 1785489061340,
    "updatedAt": 1785489100070,
    "metadata": null
}


Did this page help you?