Update an integration that uses the deprecated Fiat Deposit Accounts endpoint.
GET /v1/customers/{customer_id}/fiat_deposit_accounts is deprecated. Use GET /v1/accounts/{account_id}/virtual-accounts to retrieve a customer's receiving accounts and bank details.
The old endpoint remains available for existing integrations while you migrate. Switching APIs does not require you to create another account: start by listing the virtual accounts your customer already has.
What you can do with Virtual Accounts
List Fiat Deposit Accounts lets you read the bank details already available to a customer. The Virtual Accounts API also lets you create and manage additional receiving accounts, for example to give subscriptions and wholesale orders separate bank details.
| Capability | List Fiat Deposit Accounts | Virtual Accounts |
|---|---|---|
| Create another receiving account | Lists existing accounts only. | Create additional USD accounts for eligible customers. |
| Name accounts for their purpose | Returns a display name that you cannot change through this endpoint. | Set and update the nickname of an additional account. |
| Track a creation request | Does not accept a creation reference. | Supply an external_id and use it to find the account or retry the request. |
| Retrieve one account | Returns accounts grouped by asset. | Retrieve an account directly by virtual_account_id. |
| Find the accounts you need | No filters or pagination. | Filter by asset, status, is_default, or external_id, and page through the results. |
| Pause or retire an account | No account-management operations. | Deactivate, reactivate, or permanently delete an additional account. |
| Follow account changes | No VA lifecycle notifications. | Receive webhooks when an additional account becomes active, fails, is deactivated, or is deleted. |
Default accounts remain managed by 1Money. Creation and management operations apply to additional accounts, which have a monthly fee.
Virtual Accounts also supports matching deposits to a receiving account through the transaction's receiving_virtual_account field. This is available only when the receiving account can be identified; otherwise, the field is null. Migrating does not guarantee that every deposit will have a VA association.
Update your integration
- List the customer's virtual accounts. Use their public account ID (
BZ-...orIN-...) in the new route. The route also accepts the legacy customer UUID. Setis_default=trueif you only need the default accounts provided by 1Money. - Read the paginated response. Accounts are in
list, withtotal,page, andsizefor pagination. Each account contains its ownasset. - Save the new account IDs. Use
virtual_account_idfor future VA requests. The oldfiat_deposit_account_ididentifies a different resource and cannot be used in its place. - Read bank details from
networks. When the account isACTIVE, choose the payer's network and use that entry's bank, beneficiary, account identifier, institution identifier, and memo. - Keep following deposit webhooks. Use the event's
transaction_idto retrieve the transaction. When the receiving virtual account can be identified,receiving_virtual_accountcontains its details; otherwise, the field isnull.
To match a newly listed account to one you already use, compare the currency, network, account identifier, institution identifier, and memo. If the match is unclear, contact 1Money before replacing any saved bank details.
Field mapping
| Fiat Deposit Accounts | Virtual Accounts |
|---|---|
Array grouped by asset | Paginated object with list, total, page, and size. |
deposit_accounts[] | list[]; each account includes its own asset. |
fiat_deposit_account_id | virtual_account_id. Store the new ID. |
payment_methods[].type | networks[].network. |
payment_methods[].account_number | networks[].account_identifier. Keep it as a string. |
routing_number / swift_bic | networks[].institution_identifier, omitted when not applicable. |
| Account-level bank and recipient details | networks[].bank and networks[].account_holder. |
payment_methods[].memo | networks[].memo, omitted when unset. |
Three-letter bank_country | Two-letter bank.country and account_holder.country, or null when unknown. |
| Recipient address string | account_holder.address object, including full_address. |
| Legacy account status | PENDING, ACTIVE, DEACTIVE, or FAILED. Only active accounts return networks. |
A virtual account can have several instructions for the same network. Keep each distinct instruction rather than assuming the network name is unique.
Add more receiving accounts when needed
Once your integration reads virtual accounts, you can create additional USD accounts for customers who need to separate payments by purpose. Subscribe to Virtual Account Webhooks to track their creation and later status changes.
The separate deposit_instructions API is not deprecated. It continues to provide both fiat and crypto deposit instructions.
