Build money movement into anything.
A REST API that behaves the way you'd build it: sandbox keys in minutes, webhooks for every event, idempotent retries, and errors that tell you what actually went wrong.
sk_test_ keys work against the full sandbox — no sales call required.
$ curl https://api.starpay.example/v1/collections \ -H "Authorization: Bearer sk_test_····" \ -H "Idempotency-Key: order_8842" \ -d amount=150.00 \ -d currency=GHS \ -d channel=momo \ -d customer="+233 24 XXX XXXX" # 201 Created { "id": "col_9dK2m", "status": "pending_approval" }
// npm install @starpay/sdk const starpay = require("@starpay/sdk")("sk_test_····"); const collection = await starpay.collections.create({ amount: 150.00, currency: "GHS", channel: "momo", customer: "+233 24 XXX XXXX", idempotencyKey: "order_8842" }); // → collection.status: "pending_approval"
# pip install starpay import starpay client = starpay.Client("sk_test_····") collection = client.collections.create( amount=150.00, currency="GHS", channel="momo", customer="+233 24 XXX XXXX", idempotency_key="order_8842", ) # → collection.status == "pending_approval"
Sandbox to first payment in an afternoon.
Get your test keys
Create an account, grab sk_test_ keys, and hit the full sandbox — simulated MoMo prompts, card flows and bank transfers included.
Make your first collection
One POST to /v1/collections. Pass an idempotency key and retry as hard as you like — you'll never double-charge.
Listen for the webhook
We call you back on every state change — collection.settled, payout.settled and friends. Verify the signature, update your books, done.
Small API. Every way Ghana pays.
Predictable REST, versioned from day one, cursor pagination, and a ledger entry behind every object — because an API for money should reconcile by construction, not by cron job.
- POST /v1/collections charge over MoMo, card or bank
- POST /v1/payouts send to wallet, bank or bulk
- POST /v1/bills airtime, data & utilities
- POST /v1/payment_links shareable checkout links
- GET /v1/ledger/entries your reconciliation source of truth
- GET /v1/settlements reports, fees & receipts
Production-grade reliability you can build on.
Webhooks for every event
Signed payloads on every state change, with automatic retries and a redelivery log you can replay from the dashboard.
Idempotent retries
Networks in the real world drop packets. Send the same idempotency key twice and we return the same result — never a double charge.
Provider failover, free
You integrate once. When a rail degrades, we reroute underneath your API call — same request, same response shape.
Sandbox & live keys
A full-fidelity sandbox with simulated rails. Flip sk_test_ to sk_live_ when you're ready.
Risk controls built in
IP whitelisting, scoped keys per environment, role separation between finance and engineering.
Reconciliation-first
Every API object maps to a ledger entry. Query /v1/ledger/entries and your books match ours, to the pesewa.
Ship your integration this week.
Sandbox keys in minutes. Docs that respect your time. An API that reconciles itself.