Help center

Stripe card payments.

Connect your own Stripe account step by step, test it with a test card, then switch to live payments.

PartsDue takes card payments through Stripe Checkout. Customers pay on Stripe's secure page and the money goes straight to your own Stripe account. Card numbers never touch your website. PartsDue takes no cut. Stripe's normal fees apply.

Only a WordPress administrator can enter or change the Stripe keys.

Where customers can pay

Once Stripe is on, customers see pay buttons in three places:

  • The service call fee, right after they book, and on their request page while the job is a new request.
  • The parts deposit, when they approve an estimate.
  • The invoice balance, on their invoice.

Step 1: Get your test keys

Start in test mode so you can try it without real money.

  1. Log in to your Stripe account at stripe.com. Create one if you don't have it.
  2. Turn on Test mode in Stripe.
  3. Go to Developers then API keys.
  4. Copy the Publishable key. It starts with pk_test_.
  5. Click to reveal the Secret key and copy it. It starts with sk_test_.

Step 2: Enter the keys in PartsDue

  1. In PartsDue, go to Settings then Payments.
  2. Set Mode to Test.
  3. Paste the Publishable key and the Secret key.
  4. Click Save settings.

After saving, the secret key field shows "Saved. Type a new key to replace it". Leave it empty to keep the saved key. Card payments switch on as soon as a secret key is saved.

Step 3: Add the webhook

A payment is recorded when the customer comes back from Stripe or when the webhook arrives, whichever is first, and only once. The webhook covers customers who close the page before coming back.

  1. On the Payments tab, find Webhook URL for Stripe (event: checkout.session.completed). Click Copy. It looks like https://example.com/wp-json/obrm/v1/public/stripe.
  2. In Stripe, go to Developers then Webhooks and add an endpoint.
  3. Paste the URL as the endpoint URL.
  4. Select the event checkout.session.completed. You need only this one.
  5. Save the endpoint, then reveal and copy its Signing secret. It starts with whsec_.
  6. Back in PartsDue, paste it into Webhook signing secret and click Save settings.

Step 4: Test a payment

  1. Create a test job for yourself with your own email address.
  2. Create an invoice, click Save and email, and open Customer view.
  3. Click the pay button. You land on Stripe's checkout page.
  4. Use the test card 4242 4242 4242 4242, any future date, any 3-digit CVC and any ZIP code.
  5. After paying you come back to the invoice and see "Thank you, your payment went through."
  6. On the job, the payment shows under Payments as a card payment, and the invoice shows Paid. You also get a Payment received email as the customer.

Step 5: Go live

  1. In Stripe, turn off Test mode and copy your live keys. They start with pk_live_ and sk_live_.
  2. Add the same webhook URL again in live mode and copy its new signing secret. Live and test mode have separate webhooks.
  3. In PartsDue, set Mode to Live, paste the live keys and the live signing secret, and click Save settings.

Mode must match your keys

Mode and your secret key must be the same kind. If Mode is Live but the saved key is a test key (or the other way round), PartsDue turns card payments off and shows a red Card payments are off note on the Payments tab. Set Mode to match the key, or paste the matching key, and the pay buttons come back. A test payment never counts on a live site.

Troubleshooting

  • The customer sees "Online payment is not set up yet." The secret key is missing. Paste it again and save.
  • Payments arrive in Stripe but not on the job. Check Mode, then check the webhook in Stripe. Make sure the signing secret in PartsDue is the one for that webhook and mode.
  • The webhook shows failures in Stripe. Your server clock may be off by more than five minutes, or a security plugin may block the URL. Ask your host.
  • Refunds. Make them in Stripe. PartsDue does not change the payment record.