Setting up a payment provider
- Where
- Settings → Payment Gateways
- Plan
- All plans
- Permission
- Payments → Gateway Config
Nothing in the Payments menu can collect money until a provider is configured here. Confusingly, this screen is not in the Payments menu — it lives in Settings.
Three providers are supported: Paystack, Hubtel and PaySwitch (the theTeller API).
Before you start
Section titled “Before you start”Have your provider’s dashboard open. You will be copying keys out of it.
- Paystack — your secret key, from Settings → API Keys & Webhooks. It begins
sk_live_orsk_test_. - Hubtel — your API client ID and client secret, and your merchant account number.
- PaySwitch — your API user and API key, and your merchant ID.
Adding a provider
Section titled “Adding a provider”- Go to Settings, choose Payment Gateways, then click the Payment Gateways row inside it. (Yes — twice.)
- Click New gateway.
- Choose the Gateway — Paystack, Hubtel or PaySwitch. This can never be changed afterwards.
- Type a Display name, any label that helps you recognise it.
- Leave Purpose on Merchant collection. Also permanent — and see the warning about Billing below.
- Leave Enabled on Yes.
- Set Priority only if you configure more than one provider: the enabled one with the lowest number is your default (see Priority decides the default provider below).
- Under Credentials, fill in the boxes for your provider:
- Paystack — Secret key, and optionally Public key.
- Hubtel — Username, Password, Merchant ID.
- PaySwitch — Username, Password, Merchant ID, and optionally Network (a fallback only — see below).
- Enter a Webhook secret if your provider issues one. Read the section below first — it does less than it sounds like.
- Leave Raw config (advanced) empty.
- Click save. You get “Gateway saved”.
The heading warns you correctly: “Your provider keys are encrypted at rest and never shown again after saving.”
The webhook URL
Section titled “The webhook URL”Your provider needs to be told where to notify SaleSprint when a payment changes.
Each gateway entry shows a read-only Webhook URL. It has this shape:
https://<SaleSprint API address>/api/v1/webhooks/payments/<provider>
where <provider> is exactly paystack, hubtel or payswitch. Copy it into your
provider’s dashboard: Paystack under Settings → API Keys & Webhooks, and the
equivalent callback or webhook setting for Hubtel and PaySwitch.
- No workspace ID is needed. SaleSprint works out which workspace and which payment
a notification belongs to from the payment reference itself. Older instructions that
ended the URL with
?tenant=…still work, but the extra part is no longer needed. - One URL per provider is enough. The same address serves every payment.
A notification is only a nudge
Section titled “A notification is only a nudge”SaleSprint never marks a payment as paid just because a notification says so. Every notification makes SaleSprint ask the provider directly about that payment, and only the provider’s own answer counts. A fake or replayed notification cannot invent money.
The amount and currency the provider reports must also match the request exactly. If they do not — for example the customer paid less — the request is not marked paid and nothing reaches your balance. It is set to Under review instead, with the reason recorded on its transaction.
When a notification never arrives
Section titled “When a notification never arrives”Payments are not lost. SaleSprint checks every open payment with the provider on its own: a few minutes after the payment is started, then every few minutes for up to a week. A customer who returns to the payment page after paying also triggers a check, so the page usually turns to paid within seconds. A notification that arrived while the payment was still pending is re-checked automatically afterwards.
Payments that are never completed are cancelled once they expire (after SaleSprint has confirmed with the provider that nothing was paid).
The Webhook secret box
Section titled “The Webhook secret box”What it does depends on which provider you chose.
| Provider | What the Webhook secret does |
|---|---|
| Paystack | Nothing. Paystack signs every notification with your secret key, and SaleSprint checks that signature. Leave the box blank. |
| Hubtel | The signing key. Notifications must carry a matching HMAC-SHA256 signature of their content. |
| PaySwitch | Same as Hubtel. |
Which configuration is actually in use
Section titled “Which configuration is actually in use”A banner above the table tells you one of:
- “Your own Paystack configuration is currently active.”
- “Currently using the platform default gateway (Paystack).”
The second means you have not set anything up and SaleSprint is falling back to a provider your operator configured.
The list
Section titled “The list”Columns are Display name, Gateway, Purpose, Priority, Enabled and Credentials. Row actions are Edit and Delete.
Deleting warns you: “This removes your override and reverts to the platform default.” If there is no platform default, collection stops working instead — nothing says so.
Changing keys later
Section titled “Changing keys later”Gateway and Purpose cannot be changed at all. A mistake in either means deleting the entry and creating it again.
Two things to avoid
Section titled “Two things to avoid”Related
Section titled “Related”- Payments overview
- Collecting payments
- Getting paid online — pay links on invoices, and what the customer sees
- Troubleshooting invoices and online payments