1. Create an intent
cURL
autoExecute(boolean, defaultfalse) — whentrue, automatically executes the transaction after compliance completes.redirectUrl— URL to redirect users after completing the onboarding flow.providerId— preferred provider ID for this intent. Must be a valid candidate for the payment path. UseGET /providersandGET /currencies/supportedto discover available provider IDs.
Filter eligible providers
GnosisRamp evaluates your external accounts against each active provider’s capabilities. The metadata from your external accounts — currency, account type, rail, and country — must match the provider’s manifest. Only providers that pass all checks become eligible candidates.
Select the provider
If you specified a
providerId, GnosisRamp looks for it among the eligible candidates (returning 400 if it’s not in the list). Otherwise, the first eligible provider is selected. The providerId matches on the Provider.id — the same IDs returned by GET /currencies/supported and GET /providers.Create compliance plan
The selected provider determines which compliance edges apply, and therefore which KYC/onboarding requirements the user must complete. Different providers may have different compliance flows — for example, one provider might use Sumsub KYC while another has its own onboarding. The response includes a
frontendUrl where you can direct users to complete any required onboarding.Execute compliance workflow
GnosisRamp checks if all compliance requirements are already fulfilled (e.g., returning users who completed KYC previously). If so, the transaction can execute immediately. Otherwise, a workflow starts from the first unfulfilled requirement. Once the plan reaches
COMPLETED status, you can proceed with the transaction.How external accounts affect provider routing
The external accounts you created in the previous step carry the data that drives provider selection:providerId is an additional filter on top of capability matching — it says “of all providers that can handle my accounts, use this specific one.” If omitted, GnosisRamp auto-selects.
Why provider choice affects compliance requirements
Different providers have different compliance configurations. For example:| Provider | Compliance Flow | User Experience |
|---|---|---|
| Provider A (with Sumsub integration) | Sumsub token share → onboarding | User completes Sumsub KYC widget |
| Provider B (own KYC) | Provider-native KYC → onboarding | User completes provider’s own KYC flow |
providerId matters beyond just routing — it determines the compliance steps your users will see.
Iframe onboarding
For new customers who need to complete compliance steps, the response includes afrontendUrl. You can embed this URL in an iframe to keep users within your application. See the Iframe Integration guide for details on handling postMessage events.
2. Poll or retrieve the intent
UseGET /intent/{id} to check which compliance requirements remain, monitor intent status, or confirm that auto-complete succeeded.
intent.status– Current status:PENDING,PROCESSING,COMPLETED, etc.compliancePlan.steps– Ordered list of compliance requirements with their current status.transaction– Transaction details when available (auto-complete or after calling the transaction endpoint).
3. Error signals
| Scenario | Behaviour |
|---|---|
| No providers can handle the route | POST /intent returns 400 with "No provider can handle the requested external accounts". You may need to enable additional providers for your project. |
| Invalid preferred provider | POST /intent returns 400 with "Preferred provider '{id}' is not a valid candidate for this payment path". The specified providerId cannot handle the requested currency route. |
| Amount precision mismatch | AmountValidationError with details about allowed decimals (fiat, stablecoin, native tokens, BTC). Adjust the decimal string before retrying. |
| Requirements failure | The intent is marked as FAILED and the failure reason is available in compliancePlan.steps[].metadata. |