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 teamCore Integration
Implement
POST /widget/session call with correct parametersEmbed Proof widget script (https://widget.proof.community/widget.2.0.js)
Call
proofWidget.run() with all session parametersHandle
onStatusChange callback in the widgetImplement transaction status polling or WebSocket subscription
Handle terminal statuses (
completed, failed, cancelled) and stop pollingError Handling
Handle
422 kyc_required — embed widget, it will handle KYC automaticallyHandle
409 session_already_used — always request a fresh session before opening widgetHandle
429 rate_limit_exceeded — implement exponential backoff in pollingKYC
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 messagingPayments
Test on-ramp (buy) flow end to end and confirm
completed statusTest failed payment scenario and confirm
failed status is receivedTest off-ramp (sell) flow if enabled
Mobile
Add
NSCameraUsageDescription to iOS Info.plistEnable
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