Customers must complete identity verification before processing conversions. The required information varies based on your platform’s regulatory status.Documentation Index
Fetch the complete documentation index at: https://ramps-docs-sync-20260512.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Regulated Platforms
Regulated Platforms
Regulated platforms have lighter KYC requirements since they handle compliance verification internally.
- Direct API Onboarding: Create customers directly via API calls with minimal verification
- Internal KYC/KYB: Handle identity verification through your own compliance systems
- Reduced Documentation: Only provide essential customer information required by your payment counterparty or service provider.
- Faster Onboarding: Streamlined process for known, verified customers
Creating Customers via Direct API
For regulated platforms, you can create customers directly through the API without requiring external KYC verification:To register a new customer in the system, use thePOST /customers endpoint:- Individual customer
- Business Customer
Unregulated Platforms
Unregulated Platforms
Unregulated platforms must:Persist the returned Response:
- Hosted KYC Flow: Use the hosted KYC link for complete identity verification
- Extended Review: Customers may require manual review and approval in some cases
Hosted KYC Link Flow
The hosted KYC flow provides a secure, hosted interface where customers can complete their identity verification and onboarding process.The flow is two steps: create the customer with the information you have, then generate a hosted KYC link for that customer. The customer’skycStatus stays PENDING until they complete the hosted flow.1. Create the customer
Create the customer withPOST /customers, supplying at least customerType and any fields you already have. See Configuring Customers for the full list of optional pre-fill fields.id (the Grid customer ID) — you’ll need it for the next step.2. Generate a KYC link
Complete KYC Process
Create the customer
Call
POST /customers with customerType and any pre-fill fields you have. The returned id is the customer’s Grid ID; their kycStatus is PENDING until verification completes.Generate the KYC link
Call
POST /customers/{customerId}/kyc-link. Each call returns a fresh single-use kycUrl and expiresAt; previously-issued links remain single-use but aren’t invalidated.The
redirectUri you pass is embedded in the generated kycUrl and is used to automatically return the customer to your application after they complete verification.Send the customer through verification
Redirect the customer to
kycUrl, or — if you want to embed the flow directly — initialize the provider’s SDK with the returned token.Track the decision
Reaching your
redirectUri only means the customer finished the hosted flow — not that they were approved. Wait for the final decision in one of two ways:- Webhook (recommended): Subscribe to
KYC_STATUSto be notified when the customer reaches a terminal status (APPROVED,REJECTED,EXPIRED, orCANCELED). - Polling: Call
GET /customers/{customerId}and inspectkycStatus.
Monitor verification status
After a customer completes the KYC/KYB verification process, you’ll receive webhook notifications about their KYC status. These notifications are sent to your configured webhook endpoint.For regulated platforms, customers are created with
APPROVED KYC status by default.Content-Type: application/jsonX-Grid-Signature: {"v": "1", "s": "base64_signature..."}
Unique identifier for this webhook delivery. Use this for idempotency to prevent processing duplicate webhooks.
Status-specific event type. KYC webhooks use
CUSTOMER.* types:CUSTOMER.KYC_APPROVED: Customer verification completed successfullyCUSTOMER.KYC_REJECTED: Customer verification was rejectedCUSTOMER.KYC_SUBMITTED: KYC verification was initially submittedCUSTOMER.KYC_MANUALLY_APPROVED: Customer was manually approved by platformCUSTOMER.KYC_MANUALLY_REJECTED: Customer was manually rejected by platform
The full customer resource object, same as the corresponding
GET /customers/{id} endpoint would return. Includes all customer fields such as id, kycStatus, fullName, birthDate, nationality, address, etc.Intermediate states like
PENDING_REVIEW do not trigger webhook notifications. Only final resolution states will send webhook notifications.Webhook Implementation Example
Webhook Implementation Example
Customer types
Individual customers
Individual customers
For personal conversions and consumer wallets.Required fields:
fullName, email, birthDate, addressBusiness customers
Business customers
For corporate conversions and business accounts.Required fields:
businessName, email, taxId, address