Skip to main content
Use this checklist to make sure your integration is complete and production-ready.

Onboarding

Contact Proof team and provide company name, domain / bundle ID, and email
Confirm whether off-ramp (sell) is required for your users
Receive partner_id, client_token, and API base URL from Proof team

Core Integration

Implement POST /widget/session call with correct parameters
Call proofWidget.run() with all session parameters
Handle onStatusChange callback in the widget
Implement transaction status polling or WebSocket subscription
Handle terminal statuses (completed, failed, cancelled) and stop polling

Error Handling

Handle 422 kyc_required — embed widget, it will handle KYC automatically
Handle 409 session_already_used — always request a fresh session before opening widget
Handle 429 rate_limit_exceeded — implement exponential backoff in polling

KYC

Test KYC flow with a first-time user (document upload + liveness check)
Test returning user — verify KYC is skipped and user goes directly to payment
Optionally: implement GET /widget/users/{id}/kyc-status for custom UI messaging

Payments

Test on-ramp (buy) flow end to end and confirm completed status
Test failed payment scenario and confirm failed status is received
Test off-ramp (sell) flow if enabled

Mobile

Add NSCameraUsageDescription to iOS Info.plist
Enable allowsInlineMediaPlayback in WKWebView config (iOS)
Test KYC camera on iOS
Test Apple Pay on iOS (Safari or WKWebView)
Use Chrome Custom Tabs on Android (required for Google Pay)
Test KYC camera on Android
Test Google Pay on Android (Chrome Custom Tabs)

Go Live

Confirm go-live readiness with Proof team
Complete first live transaction with Proof team support