Skip to main content

Go live

Goal​

Move a working sandbox integration to production without discovering a gap in front of a real payer.

Prerequisites​

  • A sandbox integration that has taken both a success and a decline (the quickstart covers both on purpose).
  • Live keys issued: sk_live_... and pk_live_.... The environment is carried by the key prefix, not the host, so going live is a key swap, not a URL change.

Steps​

  1. Swap the keys. Replace sk_test_/pk_test_ with sk_live_/pk_live_. The base URL does not change.
  2. Confirm your webhook endpoint is verifying signatures against the raw body, ignoring unknown schemes, and returning 2xx only after durably storing the event (payment.succeeded). A handler that parses before verifying, or that does slow work before acknowledging, passes in sandbox and fails under production volume.
  3. Confirm you handle declines as HTTP 200. A live decline is a business outcome, not an exception; if your code treats a 200 declined as success, you will fulfil an order nobody paid for (Declines).
  4. Pin your API version (Blackjack-Version) so a later additive change cannot shift behaviour under you, and read the versioning policy before you rely on a field.
  5. Rotate the webhook secret at least once in sandbox so you have exercised the dual-accept window before you need it in production.

Verify it worked​

Take one real, low-value production payment and one deliberate decline, and confirm both the API response and the webhook match what you saw in sandbox. If the decline path behaves differently in production than in sandbox, stop and fix it before opening the funnel.