SaukiPayDocs
IntegrationsAPI Integration

Transactions

Collect a payment through Saukipay checkout, then verify it from your backend.

Accepting a payment takes two calls:

  1. Initialize a transaction from your backend. Saukipay returns a checkout URL.
  2. Redirect your customer to that URL. When they finish, they are sent back to your callback_url, and Saukipay sends a webhook.
  3. Verify the transaction by its reference before you give value.

Initialize a transaction

POST /transaction/init

Body

FieldTypeRequiredDescription
referencestringYesYour unique, case-sensitive reference. Only letters, numbers and -, _, ., = are allowed.
amountnumberYesAmount to charge the customer.
currencystringYesNGN, USD or GBP. Defaults to your integration currency.
callback_urlstringYesWhere the customer is redirected after paying. This page should verify the transaction.
customer.payerNamestringYesCustomer's full name.
customer.emailstringYesCustomer's email address.
customer.phoneNumberstringNoCustomer's phone number.

Example

const res = await fetch('https://server.saukipay.net/api/v1/transaction/init', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SAUKIPAY_SECRET_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    reference: 'ORDER-10045',
    amount: 1000,
    currency: 'NGN',
    callback_url: 'https://yourstore.com/payment/complete',
    customer: {
      payerName: 'John Doe',
      email: 'john.doe@example.com',
      phoneNumber: '08012345678',
    },
  }),
});

const { data } = await res.json();
// Redirect the customer to data.data.checkout

Response

{
  "status": "success",
  "message": "Invoice created successfully",
  "data": {
    "statusCode": "00",
    "data": {
      "checkout": "https://server.saukipay.net/MNLZLYTR-SUK-ARXVZWLCKR",
      "accessCode": "MNLZLYTR-SUK-ARXVZWLCKR",
      "reference": "ORDER-10045"
    }
  }
}

Redirect the customer to data.data.checkout to complete the payment.

Verify a transaction

GET /transaction/verify/:reference

Always verify a transaction from your backend before giving value. Don't rely on the customer landing on your callback_url.

ParameterTypeRequiredDescription
referencestringYesThe reference you used to initialize the transaction.

Example

const res = await fetch(
  `https://server.saukipay.net/api/v1/transaction/verify/${reference}`,
  { headers: { Authorization: `Bearer ${process.env.SAUKIPAY_SECRET_KEY}` } }
);

const { data } = await res.json();
if (data.data.status === 'success') {
  // Payment confirmed: fulfil the order
}

Response

{
  "status": "success",
  "message": "Invoice verified successfully",
  "data": {
    "statusCode": "00",
    "data": {
      "reference": "ORDER-10045",
      "status": "success",
      "amount": 307.5,
      "settledAmount": 300,
      "chargedFee": 7.5,
      "currency": "NGN",
      "paymentChannel": "card",
      "processorResponse": "Approved by Financial Institution",
      "paidAt": "2025-08-27 14:06:02",
      "customer": {
        "fullName": "John Doe",
        "email": "john.doe@example.com",
        "phoneNumber": "08012345678"
      },
      "paymentDetails": {
        "method": "card",
        "first6Digits": "506124",
        "last4Digits": "7591",
        "cardType": "0",
        "expiry": "0728",
        "token": "ss-tkn-6jxkiazt33zkzz6ucqhijmdp"
      },
      "environment": "live",
      "log": {
        "errors": 0,
        "success": true,
        "channel": "card",
        "history": [
          {
            "id": 8422,
            "type": "TRANSACTION RECORDED",
            "message": "success",
            "reference": "METYZHJT-SW-LK12MUJCV7",
            "channel": "S2S"
          }
        ]
      }
    }
  }
}
  • amount is what the customer paid. settledAmount is what reaches your wallet after chargedFee is deducted.
  • If no transaction matches the reference, the API returns 404 Not Found.

Reference values

Payment status

ValueMeaning
successTransaction successful
pendingTransaction still pending
failedTransaction failed
abandonedCheckout expired before payment
refundedA refund was processed

Payment channel

ValueMeaning
cardCard payment
transferBank transfer to a virtual account
ussdUSSD bank payment

Currency

ValueCurrency
NGNNigerian naira
USDUS dollar
GBPBritish pound

On this page