Goal
Onboard a business customer to Bastion so they can hold digital assets and use conversions and transfers.Key entities
Flow overview
Follow these steps to onboard a business customer and have them transact:- Create identity
- Submit KYB
- Track status
- Create account
- Start transacting
Simulation for sandbox testing
Refer to sandbox testing and simulations for a guide on how to use simulation labels to simulate the onboarding checks to facilitate testing.Prerequisites
- You have access to your dashboard
- You’ve created an API key
- You’ve registered a webhook
Step 1 – create a business identity
Create a business identity in Bastion when your customer’s business signs up or is approved in your own system. RequestStore the returned
identity_id alongside your internal business customer ID for all future calls.
Tip: Use label for a stable, non-PII identifier (e.g., your internal business ID). Do not include names, emails, or phone numbers.
Step 2 – submit KYB data
Submit KYB information for the business identity. Your platform collects this data in your own UI and sends it to Bastion. RequestStep 3 – track KYB status
Track KYB status viaidentity_status_updatewebhooks (recommended) or- polling via
GET /v2/identities/{identity_id}
Option A: webhooks
Configure a webhook endpoint in the Bastion dashboard to react to KYB status changes in real time. Example event- Mark the business as approved or failed in your system
- Enable or block access to financial features
Option B: polling
Poll the identity endpoint as a fallback.Only proceed to account creation after KYB passes.
Step 4 – create an account
Once KYB is approved, create an account linked to the business identity. Use a uniquerequest_id (UUID) as an idempotency key. Reuse the same request_id on retries to avoid duplicate accounts.
Request
account_id. This account is used for:
- Checking balances
- On-ramp and off-ramp conversions
- Crypto transfers
Step 5 – verify setup
Confirm the business is fully ready:- Check identity status —
GET /v2/identities/{identity_id} - Check account — Verify
account_idsincludes the new account andaccount_status= ACTIVE - Check balances (optional) —
GET /v2/accounts/{account_id}/balances
- Top up via on-ramp (wire → stablecoin)
- Send crypto via
/v2/crypto/transfers - Withdraw via off-ramp (stablecoin → USD)