← Slimpay.ng

Used by every "Try It" panel across these docs to call app.slimpay.ng for real. Get one from Authentication — register or log in, then paste the token here. Stored only in this browser (localStorage), never sent anywhere but the Slimpay API, and auto-cleared after 8 hours.

Wallet

Funding, Transfers & Withdrawals

Identity verification required

Every endpoint on this page requires a verified NIN — see Identity Verification. Calling any of them before verification returns a 403 with code: "NIN_VERIFICATION_REQUIRED".

Funding the wallet

There's no "push money in" API call — funding happens by bank transfer to the wallet's dedicated virtual account. POST /wallet/fund just returns the account details to display for a given amount; the balance updates automatically once the transfer is confirmed server-to-server (typically within a few minutes).

POST /wallet/fund Requires Auth
bash
curl https://app.slimpay.ng/api/v1/wallet/fund \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{ "amount": 5000 }'
POST /wallet/fund
json
{
  "status": true,
  "message": "Transfer to the account below to fund your wallet.",
  "data": {
    "amount": 5000,
    "account": { "bank": "Wema Bank", "number": "8123456789", "name": "SLIMPAY-OBINNA JOHN" },
    "note": "Payment reflects within 5 minutes."
  }
}

Transfer to another Slimpay user

POST /wallet/transfer Requires Auth

Free, instant, wallet-to-wallet. The recipient is looked up by email or phone.

bash
curl https://app.slimpay.ng/api/v1/wallet/transfer \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": "jane@example.com",
    "amount": 5000,
    "note": "For lunch",
    "transaction_pin": "1234"
  }'
POST /wallet/transfer

Withdraw to a bank account

POST /wallet/withdraw Requires Auth

Withdraws to any Nigerian bank for a flat ₦25 fee. The account name is re-verified server-side against the bank before anything moves — always call /wallet/verify-account first and show the confirmed name to the user before they submit.

bash
curl https://app.slimpay.ng/api/v1/wallet/withdraw \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 5000,
    "bank_code": "058",
    "account_number": "0123456789",
    "account_name": "Obinna John",
    "transaction_pin": "1234"
  }'
POST /wallet/withdraw
json
{
  "status": true,
  "message": "Withdrawal to OBINNA JOHN SAMUEL — 0123456789 initiated successfully.",
  "data": {
    "amount": 5000,
    "fee": 25,
    "total": 5025,
    "destination": "OBINNA JOHN SAMUEL — 0123456789 (Guaranty Trust Bank (GTB))",
    "new_balance": "975.00"
  }
}
If the transfer fails after debit

The wallet is debited before dispatch, then reversed automatically if the bank transfer itself fails on the receiving end — you'll get a 422 and the balance will already reflect the reversal. You never need to reconcile this manually.

Look up a recipient before sending

GET /users/lookup Requires Auth
bash
curl "https://app.slimpay.ng/api/v1/users/lookup?q=jane@example.com" \
  -H "Authorization: Bearer {token}"
GET /users/lookup