> ## Documentation Index
> Fetch the complete documentation index at: https://docs.skinloop.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Test to live checklist

> Move a verified integration from test to live safely.

<Steps>
  <Step title="Verify configuration">
    Copy the live API URL from the dashboard. Register every success and
    cancellation origin and confirm they use HTTPS where required by your setup.
  </Step>

  <Step title="Verify secrets">
    Keep test and live API keys separate. Store keys and the webhook signing secret
    server-side, restrict access, and remove test credentials from live services.
  </Step>

  <Step title="Exercise the full flow">
    Create a small test checkout, redirect a customer, process a duplicate create
    retry, observe a pending result, and confirm that only `completed` fulfills.
    For CS2, verify the eight-day reservation sequence: once hold begins, keep the
    merchant order reserved and finalize only on `payment.completed`, using the
    returned `holdUntil` rather than a local timer. For canceled, declined, failed,
    or reverted results, keep fulfillment disabled and release the reservation
    through your normal process.
  </Step>

  <Step title="Verify webhooks">
    Use a public HTTPS endpoint, verify exact raw bytes and timestamp freshness,
    return 2xx after durable storage, and test duplicate delivery safely.
  </Step>

  <Step title="Go live and monitor">
    Switch to the live key, preserve idempotency across network retries, monitor
    status and warnings, and retain checkout/event/request IDs for support.
  </Step>
</Steps>

<Warning>
  Never mark an order paid from a success redirect, a customer screenshot, or a
  pending/hold status. Stop on `reconciliation_required` and contact support.
</Warning>

**Next:** follow [Errors](/errors), [Rate limits](/rate-limits), and
[Payouts](/payouts) as operational references.
