One integration to accept money your customers' way — cards, bank transfers and USSD — behind a clean API and a checkout that just works.
Debit and credit cards, charged in seconds.
A dedicated account number per payment.
A dial code for customers without a card.
Gift cards and crypto are on the way — same integration, no changes on your side.
Spurs Pay handles the hard parts so you can ship. You get a hosted checkout, one API, and reliable webhooks.
Send a customer to a branded, mobile-ready payment page. No PCI forms of your own to build.
Add a payment method and it appears at checkout — your code never changes.
Get a signed event the moment a payment succeeds, so your backend stays in sync.
Keys are hashed, secrets never leave the server, and every request is scoped to your account.
Predictable JSON, one bearer key, and a status you can verify at any time.
Card, bank transfer or USSD — let people pay however they prefer.
Create a payment with your secret key, redirect to the hosted checkout, and confirm the result with a signed webhook or a status check. That's the whole flow.
// Create a payment, then send the customer to checkout
const res = await fetch("https://pay.spurs.com.ng/api/v1/payments", {
method: "POST",
headers: {
Authorization: "Bearer sk_live_...",
"Content-Type": "application/json",
},
body: JSON.stringify({
amount: 250000, // in kobo (₦2,500.00)
currency: "NGN",
customerEmail: "buyer@example.com",
}),
});
const { data } = await res.json();
redirect(data.checkoutUrl); // hosted Spurs Pay checkoutSpin up an account, grab a key, and take your first payment in minutes.
Get your API key