Skip to content
SwiftlinkPay

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

  1. Create an account

    Sign up on the merchant dashboard and copy your public and private keys.

    Sign up
  2. Choose your integration

    Hosted checkout for most merchants; server-to-server if you need full control of the payment UI.

    Compare options
  3. Build and test in the sandbox

    Use the sandbox base URL, your test keys and the documented test cards.

    Read the guide
  4. Go 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.

Initialize a payment (public key)
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"]
  }'
Verify a payment (private key, backend only)
// 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) = paid

Environments

Keep sandbox and production credentials separate. Switching environments only requires changing the base URL and the matching API key.

API base URLs
EnvironmentBase URLUse
Sandboxhttps://sandbox-api.swiftlinkpay.comTesting with test keys and test cards. No real payments.
Productionhttps://api.swiftlinkpay.comLive 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.