Skip to content
iSmartPay Developers
Esc
↑↓navigate↵open⌘Jpreview
On this page

Introduction

What the iSmartPay API does, and how test and live differ.

The iSmartPay API lets your business take money from customers and send money to them. Payments run over mobile money.

You can:

  • Collect. Ask a customer to pay you. They approve on their phone.
  • Pay out. Send money from your wallet to a customer’s mobile money account.
  • Pay out in bulk. Send up to 100 payouts in one request. See Payout batches.
  • Share a payment link. See Hosted checkouts.
  • Buy airtime and data for a mobile number. See Utility purchases.
  • Settle your wallet to your own accounts, on a schedule or now. See Settlements.
  • Pay another business from your wallet by its handle. See Wallet transfers.
  • Check fees, limits and balance before you move money.
  • Get webhooks when a payment changes state, and catch up on any you missed. See Transactions and events.

All routes live under /v1. Requests and responses are JSON. Every call carries a bearer token.

Test and live

iSmartPay runs two separate environments: test and live. You use one account for both, and verify your business once.

  • Each has its own base URL and its own console.
  • Each has its own keys and its own webhook endpoints.
  • A key only works in the environment that made it. A test key sent to live is rejected with 403 environment_mismatch, and so is a live key sent to test.
  • Test moves no real money, except for utility purchases: those send real airtime and data in test too.

Build and check everything in test first. When it works, follow Going live.

Conventions

  • Money is a decimal string in major units, such as "120.00". See Money and fees.
  • Errors look like {"error":{"code":"...","message":"..."}}. See Errors.
  • Every response has a Request-Id header. Quote it if you contact support.
  • Each key has a rate limit. Past it you get 429 rate_limited with a Retry-After header. Wait that many seconds, then retry.

Was this page helpful?