rk_test_ key operates on isolated
test data — you can build and exercise the full integration without touching a
real subscriber, moving real money, or sending a real email.
How it works
- Same base URL, same endpoints. You don’t change hostnames — you change the
key.
rk_test_…→ test environment;rk_live_…→ live. - Isolated data. Test subscribers, subscriptions, charges, and events live in
a separate
livemode = falsespace. Test objects are never returned to live calls and vice-versa. - No real side effects. Test-mode charges use Stripe test cards (e.g.
4242 4242 4242 4242); no money moves. Test-mode emails are not delivered to real inboxes. - Real webhooks, flagged. Test actions emit the same webhook events to your
test endpoints, with
livemode: falseon the envelope, so you can verify your receiver end-to-end.
Everything in test mode is clearly marked TEST in the dashboard, and every
object carries a
livemode flag. If you’re unsure which environment you’re in,
check the key prefix and the livemode field.A typical test loop
- Create a
rk_test_key (Settings → API keys). - Point your dev/staging config at it (
RECURR_API_KEY=rk_test_…). - Create a test subscriber + subscription via the API.
- Trigger a charge with a Stripe test card; confirm the
payment.succeededwebhook arrives at your test endpoint withlivemode: false. - Exercise pause / resume / cancel / refund and confirm the resulting events.
Going live
When your integration is verified in test, swap the key for ark_live_ one in
your production config. No code changes — the only difference is the key.
Re-run your smoke checks against live with a small, controlled cohort first.
