WNYpress

Set up Stripe payments for MBOS

Chapter 1.1 Verified · Sandbox workflow verified · Live cutover pending Connect a Stripe account to the Jetpack CRM Invoicing Pro payment flow used by MBOS, verify it safely in a Stripe sandbox, and prepare the production cutover. Navigate: Stripe Dashboard → Sandbox → Workbench → Webhooks; WordPress → Jetpack CRM → CRM Settings →…

Chapter 1.1

Verified · Sandbox workflow verified · Live cutover pending

Connect a Stripe account to the Jetpack CRM Invoicing Pro payment flow used by MBOS, verify it safely in a Stripe sandbox, and prepare the production cutover.

Navigate: Stripe Dashboard → Sandbox → Workbench → Webhooks; WordPress → Jetpack CRM → CRM Settings → Payments

Payment ownership: Stripe processes the card payment. Jetpack CRM Invoicing Pro creates the Stripe Checkout session and records the resulting invoice/transaction state. MBOS presents and orchestrates the customer workflow; it does not need a separate Stripe key for this documented payment path.

What do I need before I start?

  • A Stripe account owned by the business.
  • A WordPress site running Jetpack CRM with Invoicing Pro available.
  • HTTPS/SSL working on the customer-facing invoice site.
  • Access to Stripe Sandbox/Test mode and the WordPress administrator dashboard.

Do not enable both Stripe Connect and the Invoicing Pro Stripe API integration. Jetpack CRM documents these as separate Stripe workflows that can conflict if used at the same time.

1. Complete Stripe account activation

  1. After creating the Stripe account, sign in to the Stripe Dashboard.
  2. Complete Stripe’s required business, identity, representative, and payout information.
  3. Add the business bank account Stripe will use for payouts when prompted.
  4. If Stripe displays a review-in-progress notice, allow the review to complete before treating the account as ready for live payments. You can continue the sandbox configuration while the review is pending.

2. Switch to a Stripe sandbox

  1. Open the Stripe account/workspace menu.
  2. Choose Switch to sandbox and open the business test sandbox/Test mode.
  3. Confirm Stripe displays the sandbox banner stating that no real transactions will be processed.

Keep sandbox and live credentials separate. Sandbox keys start with pk_test_ and sk_test_. Live keys start with pk_live_ and sk_live_. A webhook signing secret starts with whsec_ and is separate from the API keys.

3. Find the Jetpack CRM Stripe settings and webhook URL

  1. In WordPress, open Jetpack CRM → CRM Settings → Payments.
  2. Choose Stripe under Accept Payment via.
  3. If needed, click Save Settings once so the Stripe fields appear.
  4. Locate the URL endpoint shown by Jetpack CRM. It normally follows this pattern: https://your-business-domain.com/?jetpackcrm-listener=stripe.
  5. Copy the URL generated by the customer’s own site. Do not copy the WNYPress demonstration URL from the screenshot into a customer installation.
Jetpack CRM Invoicing Pro Payments settings showing Stripe key fields and webhook endpoint
Figure 1.1A · Jetpack CRM Invoicing Pro Payments. The WNYPress verification environment is shown only as an example; use the endpoint displayed by the deployed business site.

4. Create the Stripe sandbox webhook

  1. In the Stripe sandbox, open Workbench → Webhooks and choose Add destination. Older Stripe interfaces may label this action Add endpoint.
  2. For the event destination scope, choose Your account.
  3. Leave the API version on the Stripe account’s current/default value unless the installed integration explicitly requires another version.
  4. Search for and select only checkout.session.completed.
  5. Continue and choose Webhook endpoint as the destination type.
  6. Paste the URL endpoint copied from Jetpack CRM.
  7. Add a helpful description, such as Jetpack CRM Invoicing Pro – Sandbox, then create the destination.
Stripe event destination with Your account selected and checkout.session.completed chosen
Figure 1.1B · Select Your account and checkout.session.completed for the Jetpack CRM payment callback.
Stripe webhook destination configuration form with Jetpack CRM endpoint URL
Figure 1.1C · Paste the endpoint supplied by Jetpack CRM and give the destination a clear sandbox description.
Active Stripe webhook endpoint with signing secret masked
Figure 1.1D · The destination should report Active. The signing secret remains private and is intentionally masked.

5. Save the Stripe sandbox credentials in Jetpack CRM

  1. In Stripe Sandbox, open Developers → API keys.
  2. Copy the sandbox Secret key beginning with sk_test_.
  3. Copy the sandbox Publishable key beginning with pk_test_.
  4. Open the newly created Stripe webhook destination and reveal/copy its signing secret beginning with whsec_.
  5. Return to Jetpack CRM → CRM Settings → Payments.
  6. Paste the values into Stripe Secret Key, Stripe Public Key, and Stripe Webhook Secret.
  7. Click Save Settings.

Credential safety: Never place an sk_ or whsec_ value in screenshots, email, chat, documentation, source control, or public code. If a secret is exposed, rotate it before continuing. Stripe generally recommends restricted keys when an integration supports them, but this verified Invoicing Pro workflow follows Jetpack CRM’s documented Secret Key/Public Key/Webhook Secret fields. Do not invent a restricted-key permission set without proving compatibility with the installed Invoicing Pro version.

6. Test the payment flow with a sandbox invoice

  1. Go to Jetpack CRM → Invoices → Add New Invoice.
  2. Assign the invoice to a test contact you control.
  3. Add a clearly labeled test line item, such as Stripe Sandbox Test, for a small amount such as $1.00.
  4. Set the invoice to Unpaid, choose Online payment, and save/update the invoice.
  5. Open the customer-facing invoice and click Pay Now. Stripe Checkout should open with a visible Sandbox indicator.
  6. Use Stripe’s successful test card 4242 4242 4242 4242, any future expiration date, any three-digit CVC, and a valid test postal code.
  7. Submit the payment.
Jetpack CRM unpaid one-dollar Stripe sandbox invoice
Figure 1.1E · A deliberately small unpaid invoice is sufficient for the sandbox verification. Personal information has been obscured.
Stripe Sandbox Checkout using the 4242 test card
Figure 1.1F · Stripe-hosted Sandbox Checkout. The test card is intentionally visible; personal contact information has been obscured.

7. Verify the successful transaction and webhook

  • Confirm the customer is returned from Stripe after payment.
  • Confirm the payment appears in the customer transaction history with status Succeeded.
  • Confirm Jetpack CRM applies the transaction to the test invoice and the invoice reaches Paid status.
  • In Stripe Sandbox → Workbench → Webhooks → the Jetpack CRM destination, review Event deliveries and confirm the checkout.session.completed delivery succeeds.
WNYPress transaction history showing a succeeded one-dollar sandbox payment
Figure 1.1G · The verified sandbox transaction reached the WNYPress/Jetpack CRM transaction view with status Succeeded. The transaction identifier is obscured.

Verified result: The documented WNYPress test completed the path Jetpack CRM invoice → Pay Now → Stripe Sandbox Checkout → successful payment → Jetpack CRM transaction record.

8. Switch the payment gateway to live mode

Complete this phase only after the Stripe account is approved for the required live payment capabilities and the business has authorized production payments.

  1. Switch from the Stripe sandbox to Live mode.
  2. Copy the live publishable key (pk_live_…) and live secret key (sk_live_…) and store them securely.
  3. Create or confirm the live-mode webhook endpoint using the business site’s Jetpack CRM endpoint URL and the checkout.session.completed event.
  4. Copy the live webhook signing secret. Do not reuse the sandbox signing secret.
  5. Replace the three sandbox values in Jetpack CRM → CRM Settings → Payments with their live counterparts and save.
  6. Perform a controlled live-payment verification only after launch approval.

Live cutover status: The sandbox workflow above was verified end to end. The production/live credential cutover should be re-verified on the deployed customer installation before accepting customer payments.

Why is this useful?

This configuration lets a customer pay an MBOS/Jetpack CRM invoice through Stripe Checkout while keeping Stripe as the payment processor and Jetpack CRM as the invoice and transaction system of record.

How do I verify the complete setup?

  • Stripe sandbox payment succeeds.
  • checkout.session.completed reaches the Jetpack CRM webhook.
  • Jetpack CRM records the transaction and applies it to the correct invoice.
  • No sandbox credential remains in Jetpack CRM after live cutover.
  • No secret key or webhook signing secret appears in documentation, screenshots, logs, or source control.
  • Stripe Connect is not enabled alongside the Invoicing Pro Stripe API integration.

Still need help?

If this article didn’t solve the problem, send WNYpress the details and we’ll help you with the next step.