The full sequence
The verification steps (step 2, expanded)
What the cardholder sees between “enter card” and “credential issued” depends on whether this browser/device has been used with this card before. A passkey (WebAuthn / FIDO — Touch ID, Face ID) is always the final gate; the one-time OTP only appears the first time.Passkey registration and verification happen on Card Network’s own hosted page. The cardholder authenticates with Card Network directly;
neither you nor Prava render that page. Expect the hand-off — seeing Card Network’s domain is what makes
the approval verifiable rather than claimed.
1
1. Issuer OTP (first)
The card issuer sends a one-time code — the same 3-D Secure style step-up your bank does when it
texts you a code. The cardholder enters it before anything else.
In sandbox, enter the test code
456789 with any test card.
Real codes only exist in production.2
2. Passkey registration (only after the OTP validates)
Once the OTP checks out, Prava registers a new passkey (biometric — Touch ID / Face ID), bound
to this browser/device. The signed passkey is what proves the cardholder approved this transaction.
What you see from your side
You never call anything during verification — you just poll Get Payment Result. The transaction status walks:
If
payment-result sits at pending forever, the cardholder simply hasn’t finished this sequence —
see the Developer FAQ.
Next
Payments concept
Mandates, tokens, and the money-side machinery in full.
Test cards & test OTP
The card numbers and the
456789 OTP to run the whole thing in sandbox.