CPR.co
For Admins

Connecting Stripe for payments

Where to plug in your Stripe keys, how the connection status shows up, and how the webhook is configured.

CPR.co uses Stripe for all payment processing — cards, receipts, refunds, invoices, and B2B billing all run through Stripe. Each tenant plugs in its own Stripe account so money lands directly in your bank.

Where Stripe lives in settings

Go to Settings → Billing (or https://cpr.co/admin/settings/billing). The Stripe connection status shows at the top. "Connected" (green badge) means you are good to go.

What the page shows

Fields on the Billing page

  • Publishable key — masked as pk_test_…8yR8 (starts with pk_live_ in production)
  • Secret key — masked as sk_test_…gCcv (never fully displayed)
  • Webhook endpoint — the URL Stripe sends events to; each tenant has a copy button so you can paste it into your Stripe Dashboard
  • Disconnect Stripe — fully unlinks your Stripe account (you will have to reconnect before taking another payment)
  • Edit keys — opens a modal for rotating keys without disconnecting
⚠️
Important: Secrets are never stored in the browser or shown in full. If you need to view your Stripe secret key again, get it from your Stripe Dashboard, not from CPR.co.

Webhook signature secret

CPR.co verifies every webhook Stripe sends using a shared signing secret. That secret is configured at the platform level via the STRIPE_WEBHOOK_SECRET environment variable, not in the tenant UI. If you add a new webhook in Stripe, let support@cpr.co know so we can rotate the secret cleanly.

Test mode vs. live mode

Keys that start with pk_test_ / sk_test_ process Stripe test cards and never touch real money. Keys starting with pk_live_ / sk_live_ are production. Most new tenants start in test mode until Jeff flips them to live during onboarding.

💡
Tip: Stripe test card for testing: 4242 4242 4242 4242 with any future expiry, any CVC, any ZIP. Card 4000 0000 0000 0002 simulates a decline.
ℹ️
Note: Invoice numbering is auto-generated by the platform (format: INV-YYYY-NNNNN). There is no custom prefix field in the UI — invoice numbers are globally unique per tenant.

Was this article helpful?

Still need help?

We're here for you — call or email us any time during business hours.

Mon–Fri 8am–5pm Central Time

💬Chat with us