Onboarding Your Users
Sign-up Flows
Before an end-user can trade through your platform, they need a Coinify trader account. As a partner, you create this account on their behalf via the sign-up API endpoint.
There are two sign-up flows to choose from, differing in how email verification is handled.
Frictionless Sign-up
The frictionless flow is recommended for partners who already have an established user base and want a seamless, invisible onboarding experience. Rather than asking the end-user to verify their email with Coinify, you cryptographically sign a token confirming you have already validated the email on your side. Coinify trusts this signature and creates the account immediately — no password, no verification code, no friction for the user.
Important:You must ensure that the address
country(andstatewhere applicable) are provided from the end-user's direct input, in case you are not already collecting this data point from the user on your end.
Choose this when:
- Your users already have verified accounts on your platform
- You want the smoothest possible UX with no interruption to the trading flow
- You are set up as a trusted Coinify partner (required for this flow)
For the full step-by-step setup, see Frictionless Sign-up Flow →.
Manual Sign-up
In the manual flow, the end-user provides their email and creates a password. After the sign-up request is made, Coinify sends a 6-digit verification code to the user's email address, which they must then submit via the Verify Email → endpoint to activate their account.
Choose this when:
- You are in early integration stages and not yet set up for the frictionless flow
- Your use case requires end-users to have their own Coinify credentials (e.g. for direct access to the Trade Widget login)
For the endpoint spec, see Manual Email Verification →.
What both flows have in common
Regardless of which flow you use, every sign-up request to POST /signup/trader requires:
email— from direct user inputpartnerId— your Coinify Partner IDaccountType—individual(default) orcorporateprofile.address.country— ISO 3166-1 alpha-2 country code, from direct user inputprofile.address.state— required if country isUS, ISO 3166-2 format
Country and state must always come from the end-user's own input — never pre-filled or inferred on their behalf.
A successful sign-up returns a trader object containing the new account's id and email. If generateOfflineToken: true is included in the request, an offlineToken is also returned — this is key to the Frictionless Sign-in → flow and should be stored securely on your side.
Next steps
- Frictionless Sign-up Flow → — step-by-step implementation of the recommended sign-up path
- Frictionless Sign-in → — how to authenticate users silently after sign-up
- Mandatory User Information → — what end-users must provide before they can trade
