Overview
Customers are the recipients of your Bitcoin rewards. They can be individuals or businesses. Each customer in the Grid system has:- System-generated ID: Unique identifier assigned by Grid (e.g.,
Customer:019542f5-b3e7-1d02-0000-000000000001
) - Customer Type: Either
INDIVIDUAL
orBUSINESS
- KYC Status: Indicates if the customer has been verified and approved.
- Internal Accounts: Automatically created for each supported currency upon customer creation
- Platform Customer ID: Optional field to link to your own user/customer ID
The
platformCustomerId
field is optional but recommended. Use your existing user IDs to maintain a simple mapping between your system and Grid.Customer Onboarding
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:bankAccountInfo
is always required:- Individual customer
- Business Customer
Unregulated Platforms
Unregulated Platforms
Unregulated platforms require full KYC/KYB verification of customers through hosted flows.
- 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.Generate KYC Link
Complete KYC Process
1
Generate KYC Link
Call the
/customers/kyc-link
endpoint with your redirectUri
parameter to generate a hosted KYC URL for your customer.The
redirectUri
parameter is embedded in the generated KYC URL and will be used to automatically redirect the customer back to your application after they complete verification.2
Redirect Customer
Redirect your customer to the returned
kycUrl
where they can complete their identity verification in the hosted interface.The KYC link is single-use and expires after a limited time period for security.
3
Customer Completes Verification
The customer completes the identity verification process in the hosted KYC interface, providing required documents and information.
The hosted interface handles document collection, verification checks, and compliance requirements automatically.
After verification processing, you’ll receive a KYC status webhook notification indicating the final verification result.
4
Automatic Redirect
Upon successful KYC completion, the customer is automatically redirected to your specified
redirectUri
URL.The customer account will be automatically created by the system upon successful KYC completion. You can identify the new customer using your
platformCustomerId
or other identifiers.5
Handle Completion
On your redirect page, handle the completed KYC flow and integrate the new customer into your application.
When a customer is created successfully, internal accounts are automatically created for each currency configured on your platform. These accounts can be used as sources or destinations for transfers.
Hanlding KYC/KYC Webhooks
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/json
X-Webhook-Signature: sha256=abc123...
System-generated unique identifier of the customer whose KYC status has changed.
Final KYC verification status. Webhooks are only sent for final states:
APPROVED
: Customer verification completed successfullyREJECTED
: Customer verification was rejectedEXPIRED
: KYC verification has expired and needs renewalCANCELED
: Verification process was canceledMANUALLY_APPROVED
: Customer was manually approved by platformMANUALLY_REJECTED
: Customer was manually rejected by platform
Intermediate states like
PENDING_REVIEW
do not trigger webhook notifications. Only final resolution states will send webhook notifications.Webhook Implementation Example
Webhook Implementation Example
Listing Customers
Retrieve a paginated list of customers with optional filtering:Query Parameters
Filter by your platform’s customer identifier
Filter by customer type (
INDIVIDUAL
or BUSINESS
)Filter customers created after this timestamp (ISO 8601)
Filter customers created before this timestamp (ISO 8601)
Filter customers updated after this timestamp (ISO 8601)
Filter customers updated before this timestamp (ISO 8601)
Whether to include deleted customers in results (default: false)
Maximum number of results per page (default: 20, max: 100)
Pagination cursor from previous response
Response
To find a specific customer by your platform ID, use:
GET /customers?platformCustomerId=user_12345
Retrieving a Single Customer
Get detailed information about a specific customer:Deleting Customers
Delete a customer by their system-generated ID:Deleting a customer is permanent and will prevent them from receiving future payments. Their transaction history will be preserved but the customer record will be marked as deleted.
Related Resources
- API Reference: Customers - Complete customer API documentation
- Quick Start Guide - End-to-end Bitcoin rewards walkthrough
- Handling Webhooks - Implement webhook handling for real-time notifications