Accounts

Create a virtual fiat account

Ask Seismic to provision a virtual bank account for the customer. Shape and rails are inferred from currency (USD → ACH + wire, EUR → SEPA + SWIFT, …). Pass liquidation to auto-convert incoming fiat to a crypto account.

An approved customer is not automatically cleared for every currency: virtual-account access is granted per currency, and GET /v0/customers/{id}/virtual-account-approvals reports where each one stands. Requesting a currency the customer is not cleared for returns 409 VirtualAccountNotApproved — retrying will not change the answer until that clearance is granted.

Pass bank to say where the account is held, using a value from GET /v0/customers/{id}/virtual-account-banks?currency={currency}. Omit it and a bank is chosen for you. A bank the customer cannot be issued an account at returns 409 VirtualAccountBankNotAvailable and creates nothing. Where the account has its own review, a bank that review has not cleared returns 409 VirtualAccountNotApproved with the review's status instead, unless the request restores an account the customer deleted at that bank.

A customer may hold one virtual bank account per bank in a currency, so a bank they hold no account at is not a duplicate of the account they already have. Omitting bank asks for an account in the currency rather than one at a particular bank, and is answered by whichever account they already hold.

post/v0/customers/{id}/accounts/fiat/virtual

Request

  • Base URL
    https://orchestration.seismic.systems/api
  • Auth
    API key in header Api-Key

Path parameters

idstring uuid required

Customer id.

Headers

Idempotency-Keystring nullable

Any unique string up to 256 characters. Replays with the same key return the original request's outcome instead of creating a duplicate.

Request body

bankstring nullable

Bank to open the account at, as GET /v0/customers/{id}/virtual-account-banks spells it. Omit it and a bank is chosen for you, which is what every account opened before this field existed does.

Also what decides whether this create duplicates an account the customer already holds: one account per bank per currency, so a bank they hold none at is a new account. Omitting it asks for an account in the currency, which the one they hold answers.

Example request

{
  "bank": "PORTAGE_BANK"
}

Response

Creation request; account is null until provisioning completes.

Changes

No recorded changes to this operation across all 1 revision of this API.