Building banking for your own customers as an MSB or FI? Do this quickstart first — then the Platform Quickstart adds customer onboarding and per-customer scoping on top of everything here.
Prerequisites
- A verified Rolla business account at app.rolla.xyz
- Funds — or a plan to deposit some in Step 3
Step 1: Create an API key
1
Open the dashboard
Log in at app.rolla.xyz and go to Settings → API Keys.
2
Create a key
Click Create API Key, name it, and copy the key. It is shown once — store it securely.
3
Allowlist your server IPs
Add your server’s IP addresses to the key’s allowlist. A key needs at least one before it can call Withdraw Funds or Rolla Transfer, and once a key has an allowlist it is enforced on every endpoint, not just the money-moving ones.
Step 2: Make your first request
Send the key in theX-API-Key header. List your wallets to confirm everything works:
status (the HTTP code as a number), a human-readable message, and success: true, in that order. Most endpoints then nest the payload under data, but not all of them do — each endpoint’s reference page shows its exact shape. All amounts are in the currency’s smallest unit — kobo for NGN, cents for USD. See Amounts & Currencies.
Step 3: Fund your wallet
Generate a dynamic virtual account and transfer money to it from any Nigerian bank. Rolla credits your NGN wallet when the deposit lands:bank_name and account_number to pay into. 500000 kobo = ₦5,000.
Testing without real money? Sandbox environments expose Simulate a Deposit to credit your wallet instantly.
Step 4: Create a beneficiary
First resolve the recipient’s account so you know the name matches:id from the response.
In a hurry? Withdraw Funds also accepts
inlineBeneficiary details directly, so you can skip this step for one-off payouts.Step 5: Send the payout
100000 kobo = ₦1,000, and description is required. By default the fee comes out of your wallet balance on top of amount, so the beneficiary receives the full ₦1,000; pass deductFeesFromBalance: false to take it out of the amount sent instead. Want a fee quote first? Call Get Transaction Fee.
id. source_amount is what left your wallet (amount plus the fee) and destination_amount is what the beneficiary gets. On USD and other non-NGN bank rails you can also send your own externalReference and fetch the transaction by it later — but NGN and mobile money payouts always get a Rolla-generated reference like NG-NFNUJTUW instead, because the provider imposes its own format. See Idempotency & Retries before retrying failed requests.
Step 6: Track it
Poll the transaction:transaction.completed / transaction.failed events the moment the payout settles, instead of polling.
Next steps
Accept deposits
Static and per-customer virtual accounts for collections at scale.
Send payouts
All rails: local transfers, USD wires, SWIFT, mobile money, stablecoins.
Set up webhooks
Stop polling — get pushed every status change.
API Reference
Every endpoint, field by field.