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.
| Status | Description |
|---|---|
CREATED | The 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. |
ACTIVE | The account is active, fully provisioned with bank details, and ready to send and receive payments. |
BLOCKED | The 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. |
CLOSED | The account is permanently closed and cannot be reused. This is a terminal state. |
ACTIVATION_FAILED | Bank 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:
- Mutual Exclusivity: An account cannot hold both
CORPORATEandCLIENT_MONEYtags simultaneously. Any API call resulting in both tags will be rejected. - Account Creation (
POST /fiat-accounts): You can specify eitherCORPORATEorCLIENT_MONEYin thetagsarray when creating a new account. - Post-Creation Upgrades (
PATCH /fiat-accounts/{id}): You can update an account toCLIENT_MONEYat any time post-creation. ApplyingCLIENT_MONEYautomatically removes theCORPORATEtag (and vice versa). - Switching Back Restriction: Upgrading from
CORPORATEtoCLIENT_MONEYviaPATCHis self-service. However, if you attempt to switch an account back fromCLIENT_MONEYtoCORPORATEvia the Public API, the request will be rejected with an error instructing you to contact Fiat Republic Support.
| Current Tag State | Target Tag State | Allowed via Public API? |
|---|---|---|
| Untagged / None | CLIENT_MONEY or CORPORATE | Yes (via POST or PATCH) |
CORPORATE | CLIENT_MONEY | Yes (via PATCH — automatically replaces CORPORATE) |
CLIENT_MONEY | CORPORATE | No — Returns an API error. Contact Fiat Republic Support to request this change. |
| Any State | CORPORATE + CLIENT_MONEY | No — Rejected. Coexistence of both tags on a single account is forbidden. |
❗ Important Note on Reverting
CLIENT_MONEYTags:
If you attempt to update an account tagged asCLIENT_MONEYback toCORPORATEviaPATCH /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 Field | Description |
|---|---|
balance.actual | The total settled balance taking into account all posted transactions. |
balance.reserved | The sum of all initiated payouts from the account that are currently in progress but not yet settled. |
balance.available | The 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
}Updated 8 days ago
