Clients pay your invoices by card through Stripe or Paystack, from the invoice’s payment link or a Pay Now button on the PDF. When the payment goes through, BaseCloud records it on the invoice by itself and adds a note to the client. This guide walks you through the setup and the built-in test that confirms it works.
Who can do this: anyone who manages your invoicing settings. Changing the secret key also uses the Create and change automations right.
Step by step
- Connect your Stripe or Paystack account under Settings, then App Connections & Keys, and authorize it.
- Open Settings, then Invoicing Settings. The same payment settings sit on each layout set’s Payment Gateway tab under Quote/Invoice Layout.
- Choose the connection for your layout set.
- Click the Payment Webhook URL to copy it in one click.
- Add that address to Stripe or Paystack, following the steps on screen for your provider (also below).
- Save your keys.
- Click Test payment setup.
Add the webhook to Stripe
The Payment Webhook URL is how Stripe tells BaseCloud a client has paid, so the invoice is marked paid.
- Copy the Payment Webhook URL in BaseCloud.
- Sign in at dashboard.stripe.com in live mode, with the orange Test mode or Sandbox banner gone from the top.
- Search for Webhooks (under Developers) and click Add destination.
- Leave Your account selected, search for
checkout.session.completed, tick it and click Continue. - Choose Webhook endpoint and click Continue.
- Paste the address into Endpoint URL and click Create destination.
- Under Signing secret, click Reveal and copy the secret that starts with
whsec_. - Paste it into Webhook Secret in BaseCloud. It saves by itself.
Add the webhook to Paystack
- Copy the Payment Webhook URL in BaseCloud.
- Sign in at dashboard.paystack.com and click Settings at the bottom left.
- Open the API Keys & Webhooks tab.
- Paste the address into Live Webhook URL and click Save changes.
Paystack sends every payment to this address by itself and signs its messages with your secret key, so the setup is done.
Your keys stay hidden once saved
Paste your Secret key under the gateway you chose, and for Stripe, your Webhook Secret. Once saved, a secret is never shown again on any screen. The box tells you a secret is saved, and pasting a new one replaces it.
Roll a key in Stripe and paste the new one here straight away, so clients keep paying and saved cards keep charging.
Test your payment setup
Click Test payment setup, under Webhook Secret. BaseCloud checks with Stripe or Paystack and says exactly what to fix, and nothing is charged.
- Secret key: that it works as a live key, and for Stripe that payments are switched on.
- Payment Webhook URL: for Stripe, that this exact address is live in your account and sending
checkout.session.completed. - Webhook Secret: that one is saved and looks like a Stripe signing secret. Your first payment confirms it, with a green 200 under the destination’s Event deliveries in Stripe.
What your clients get
The pay page shows the payments and credits so far next to the balance due, so a part-paid invoice is paid online too. Every online payment is recorded on the invoice, whatever the amount, and a payment the gateway reports twice is recorded once.
A Stripe payment also saves the client’s card, so later invoices are charged to it. To share the link, use Send, then Text or WhatsApp on the invoice, or Payment Link in the client’s Accounting tab to copy it.
With BaseCloud Books on, Stripe and Paystack payouts match to the payments inside them during reconciliation, with the fees booked automatically. See bank reconciliation and bank rules.
Fix a payment that stays unpaid
Open the webhook in your provider and look at its recent deliveries.
- Invalid or missing token means the address is out of date. Copy it again from BaseCloud.
- Invalid stripe signature means the Webhook Secret is from another destination. Copy the signing secret again from Stripe.
Then resend the failed events from your provider, and BaseCloud marks the invoices paid. Read more in payments, part payments and credit notes.