Skip to main content

User Onboarding

Before a customer can trade or move money, they need an enterprise, a verified identity, and a Go Account.


Step 1 — Create Enterprise

Register the enterprise for your customer. Each customer gets their own enterprise.

Keep both IDs from enterprise creation

The enterpriseId identifies the customer record, while the returned userId is the access user attached to that enterprise. You will typically use enterpriseId as the main reference, but you should keep both because later identity requests also use the enterprise userId.

See Core Concepts for more on what an enterprise represents.


Step 2 — Submit Identity (KYC)

Submit the customer's personal information for identity verification.

  • POST /api/evs/v1/identity
  • Requires the enterpriseId from Step 1
  • Always use transactionType: "institutionalIndividual" for standard onboarding
  • For corporations, additional KYB documents may be required

Example identity payload (individual):

{
"nameFirst": "Jane",
"nameLast": "Doe",
"phoneNumber": "+15555551234",
"birthdate": "1990-01-15",
"occupation": "Agriculture",
"countryOfCitizenship": "US",
"countryOfResidence": "US",
"govIdCountryOfIssuance": "US",
"politicallyExposedPerson": false,
"addressStreet1": "123 Main St",
"addressCity": "San Francisco",
"addressSubdivision": "CA",
"addressPostalCode": "94102",
"country": "US",
"identificationNumber": "123-45-6789",
"transactionType": "institutionalIndividual",
"enterpriseId": "<enterpriseId>",
"userId": "<userId>"
}
caution

Avoid using paygo, unverified user, or starterSignup transaction types. Always use institutionalIndividual.


Step 3 — Upload Documents (if required)

Only needed for non-US citizens or when there's a data mismatch during verification.

Only upload documents when the identity requests them

This step is conditional. If you upload documents before the identity reaches awaiting document upload, you may be sending files for a customer who does not need them.

Verification usually takes seconds, but can take up to 24 hours if manual review is needed.


Step 4 — Sign Terms

The enterprise must sign the legal agreements before an account can be opened.

Sandbox contract version

The current sandbox contract version is 3.2.26. Make sure to use this value for contractVersion when testing in sandbox.

Example signatures payload:

[
{
"contractSignerNameFull": "Jane Doe",
"contractSignedDate": "2025-01-15T00:00:00.000Z",
"contractSignedIPAddress": "127.0.0.1",
"contractType": "csa",
"contractVersion": "3.2.26",
"userAgreesToTerms": true
}
]

Step 5 — Poll Identity Status

Wait for the identity to be approved before creating the Go Account.

Signature submitted does not mean onboarding is complete

After Step 4, the identity can still remain in review. Treat approved as the only status that unlocks Go Account creation.


Step 6 — Create Go Account

Once KYC is approved, create the Go Account wallet. This is the multi-asset wallet that handles both fiat and crypto.

A trading Go Account already provisions the needed asset wallets

For the standard flow, you do not need to create separate BTC and USD wallets after approval. Creating the Go Account with type: "trading" handles that for you.

Example payload:

{
"type": "trading",
"enterprise": "<enterpriseId>",
"label": "Customer Go Account",
"passphrase": "<passphrase>",
"passcodeEncryptionCode": "<passcodeEncryptionCode>"
}

Putting It Together


Next Steps

  • Funding — Link a bank account, deposit USD or receive Bitcoin
  • Conversions — Buy or sell Bitcoin