Skip to main content

Test Your Setup


After you complete the setup in Get Started, test your integration thoroughly before you process production transactions.

Confirm You Are in a Test Environment

Log in to the with your test credentials, and confirm that your integration points at the test Sessions API endpoint () and the test SDK asset URL, not the production versions.

Test with Test Card Numbers

Use test card numbers to simulate different payment scenarios, including successful transactions, declined transactions, and different card brands. See Test Cards for the full list of test card numbers and their expected results.

Run through these scenarios at minimum:

  • A successful authorization or sale
  • A declined transaction
  • 3-D Secure step-up authentication, if your session enables Payer Authentication
  • Each card brand and digital wallet you configured in the

Verify the Capture Context Response

Confirm that the response from the Sessions API contains the fields your integration depends on:

  • targetOrigins matches the origin that hosts the SDK.
  • The order amount and currency in data.orderInformation.amountDetails match what you sent in the request.
  • The response resolves successfully in VAS.UnifiedCheckout(sessionJWT) without throwing a UnifiedCheckoutError.

Test Error Handling

Simulate error scenarios and confirm your integration handles each one gracefully:

  • Expired session: wait past the session expiration, or reuse an old capture context, and confirm that VAS.UnifiedCheckout() rejects with a CAPTURE_CONTEXT_EXPIRED error.
  • Invalid session: pass a malformed or tampered JWT and confirm that initialization rejects with CAPTURE_CONTEXT_INVALID.
  • Declined payment: use a test card that returns a decline, and confirm that your checkout.on('error') or client.on('error') handler receives the event and that your UI communicates the decline to the customer.

See Error Handling for the full list of client-side error codes.

Test Webhook Notifications

If you configured webhook notifications for Unified Checkout transaction events, confirm that your system receives and processes them correctly for each event type you subscribed to. See Webhooks for the event payload reference and subscription setup.

Confirm Cleanup

Confirm that your integration calls checkout.destroy() and client.destroy() after the payment flow completes, including on error paths and when the customer navigates away without completing the payment. If your integration does not call destroy(), the SDK iframes remain in the page.

try {  const result = await checkout.mount('#payment-buttons');  sendToServer(result);} catch (error) {  handleError(error.reason, error.message);} finally {  checkout.destroy();  client.destroy();}

After you complete these tests, retest in the production environment with a small transaction before you move fully to production.

Next Steps

Last published: September 29, 2026