What you need
| Item | Where to get it |
|---|---|
| Persona sandbox account | app.withpersona.com |
| API key | Dashboard → API → API Keys (persona_sandbox_...) |
| KYC inquiry template | Dashboard → Inquiries → Templates (itmpl_...) |
| Environment ID | Dashboard → Environments (env_...) |
| Webhook secret | Dashboard → Webhooks |
Environment variables
Add toapps/web/.env.local:
npm run dev after updating env vars.
Webhook setup (local)
Persona sends webhooks when verification status changes. For local development, expose your app with a tunnel:inquiry.completed, inquiry.approved, inquiry.declined, inquiry.failed.
If webhooks cannot reach your machine, use Refresh status on the Production page. Payoes also syncs status when the Persona flow completes.
Test the flow
- Sign in to Payoes as organization owner
- Open Settings → Production
- Choose Personal or Business
- Fill name, country, and business description (if business)
- Click Verify identity with Persona
- Complete the Persona sandbox flow (use Persona test documents)
- After approval, configure a mainnet settlement wallet
- Click Switch to production
Sandbox test documents
Persona sandbox accepts test ID images documented in the Persona dashboard. Real documents are only required in production.Troubleshooting
Persona flow does not open
Persona flow does not open
- Confirm
NEXT_PUBLIC_PERSONA_ENVIRONMENT_IDis set - Confirm
PERSONA_API_KEYandPERSONA_INQUIRY_TEMPLATE_IDare set on the server - Restart the dev server
Status stays pending after completing Persona
Status stays pending after completing Persona
- Click Refresh status on the Production page
- Check webhook delivery in the Persona dashboard
- Ensure
PERSONA_WEBHOOK_SECRETmatches your webhook configuration
Switch to production is disabled
Switch to production is disabled
- Verification status must be
verified - Configure a production settlement wallet first