Developers
Integrate payments in your stack
A REST API with key-based authentication, a hosted checkout that handles card authentication for you, and signed webhooks to keep your systems in sync.
Quick start
Create an account
Sign up on the merchant dashboard and copy your public and private keys.
Sign upChoose your integration
Hosted checkout for most merchants; server-to-server if you need full control of the payment UI.
Compare optionsBuild and test in the sandbox
Use the sandbox base URL, your test keys and the documented test cards.
Read the guideGo live
Switch to your live keys and the production base URL after working through the go-live checklist.
Go-live checklist
Two ways to integrate
Most first-time integrations should start with the hosted checkout.
Hosted checkout
Recommended- One backend call to initialize the payment.
- Redirect the customer to the returned authorizationUrl.
- Card data never reaches your servers.
- 3-D Secure and OTP handled on the checkout page.
- Verify the payment server-side after the redirect.
Server-to-server
Advanced- Collect card details in your own UI.
- Handle 3-D Secure redirects, OTP and frictionless flows yourself.
- Card data passes through your servers, so your own PCI DSS obligations apply.
Example requests
Taken from the public API documentation. Keys shown are placeholders.
curl --request POST \
--url https://api.swiftlinkpay.com/transaction/initialize \
--header 'Authorization: pk_test_xxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
--data '{
"amount": 100000,
"email": "customer@example.com",
"currency": "NGN",
"reference": "order-20250514-001",
"callbackUrl": "https://yoursite.com/payment/callback",
"channels": ["card", "bank"]
}'// Server-to-Server - Use private key (backend only)
const verification = await fetch(`https://api.swiftlinkpay.com/transaction/verify/${reference}`, {
method: 'GET',
headers: {
'Authorization': 'sk_test_xxxxxxxxxxxx'
}
});
const transaction = await verification.json();
console.log(transaction.data.status); // 0 (COMPLETED) or 2 (AUTHORIZED) = paidEnvironments
Keep sandbox and production credentials separate. Switching environments only requires changing the base URL and the matching API key.
| Environment | Base URL | Use |
|---|---|---|
| Sandbox | https://sandbox-api.swiftlinkpay.com | Testing with test keys and test cards. No real payments. |
| Production | https://api.swiftlinkpay.com | Live payments with live keys. |
Test cards and their expected outcomes are listed in the documentation.
Webhooks
Set your webhook URL in the dashboard and SwiftlinkPay will notify your server when a transaction's status changes. Verify the x-signature header, handle duplicate notifications idempotently, and always confirm payment with the verify endpoint before fulfilling an order.
- HTTPS endpoint configured per environment.
- Optional per-transaction webhook URL override.
- Respond with a 2xx status quickly and process asynchronously.
Start building
Get your sandbox keys and make your first test payment.
