Accounts

Create Bank Account

Opens an additional bank account under the given product. You must already have an open account of that product, and your business must have completed verification and accepted its required agreements. See consent on the entity's onboarding status. The account may open immediately (status created, with account_id) or in the background (status processing); when processing, poll GET /accounts until the account appears. Not available to an API key restricted to one account.

post/accounts

Request

Headers

Idempotency-Keystring required

A unique key you generate (1-50 printable ASCII characters, no spaces) so retrying this request never creates a duplicate. Reusing a key is rejected.

x-entity-idstring uuid

Optional entity_id to scope requests to a specific entity.

Request body

product'grasshopper' | 'crb' required
reference_idstring nullable

Your own identifier for this account. It is echoed back on the account read endpoints and in account.created / account.updated webhooks, so you can match the account to the request that opened it. This matters most for products that open in the background, where the response carries no account_id. It is a label, not an idempotency key, so reuse it freely. Use the Idempotency-Key header to make a retry safe.

Example request

{
  "reference_id": "catnip-payroll-2026"
}

Response

Successful Response

status'processing' | 'created' required
account_idstring nullable

The new account_id, returned only when status is created. Null when status is processing; fetch it from GET /accounts once the account appears.

reference_idstring nullable

Echoes the reference_id from your request, confirming it was stored. The same value arrives on the account.created webhook, which is how you match that event back to this call.

Example response

{
  "account_id": "cash_account_3f9c1b2e-7a4d-4e88-9c21-0b6f5d8e1a2c",
  "reference_id": "catnip-payroll-2026"
}

Changes

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