Skip to main content
You’ve built and tested against staging - this is what to verify before, during, and after the switch to production.

Switch environments

  • Swap the base URL to https://api.letsway.com - ideally via configuration, not code.
  • Swap credentials. Production has its own API keys - staging keys (way_sk_test_...) return 401 in production. Create a production key (way_sk_live_...) in the production dashboard (Settings → Developers → API Keys) and store it as a secret, never in client-side code or the repository. (Still on Way-Brand-Id/Way-Secret-Key headers? See Legacy authentication.)
  • Swap the Stripe publishable key to the production key for your brand’s paymentPlatform (confirm with your Way representative).
  • Confirm API access is enabled on the production brand/organization - a 403 with valid credentials means it isn’t. See Environments.

Payments

  • Test cards don’t work in production. Run one real card checkout end to end (book something refundable, then cancel and refund it).
  • Verify your 3D Secure handling with redirect: "if_required" and a real return_url - EU brands (stripe-eu) hit SCA challenges routinely.
  • Confirm your failure path in production conditions: on payment failure you discard the cart and retry with a fresh cart ID. Abandoned processing bookings hold real inventory.

Error handling and limits

  • Handle 429 with exponential backoff - rate-limited endpoints allow 400 requests per 60 seconds. Batch and cache where you can (listings and availability data cache well).
  • Handle 422 with the common-errors matrix: used cart, resourceQuantity mismatch, sold-out session, missing custom-question answers.
  • Log request/response pairs (redacting the Authorization header) so support conversations have evidence.

Webhooks

  • Register your production endpoint in the production dashboard - webhook configuration does not carry over from staging.
  • Set a secret and verify signatures over the raw body.
  • Return 2xx within 10 seconds; process asynchronously; dedupe on business keys (delivery semantics).
  • Have a reconciliation job ready: Get bookings with updatedFrom covers gaps after downtime.

Final smoke test

  • GET /v1/brands/{brandId}/settings returns your production brand with the expected currency and paymentMethods.
  • GET /v3/listings returns the real published listings.
  • One real booking → confirmation email received → visible in dashboard → booking.completed webhook delivered → cancelled and refunded cleanly.