Dedicated virtual account infrastructure
Give every payer a dedicated account number
Cyrus turns one API call into a persistent, named virtual account — then reconciles every inbound transfer back to the identity you attribute it to. You never touch a raw provider payload.
A "customer" is just whoever you attribute a virtual account to — a person, a beneficiary, an institution. Cyrus doesn't assume the relationship: a savings app attributes to the saver, a school-fees app might attribute to the school. Provisioning and reconciliation work identically either way.
- Create your Cyrus accountSign up with your business name, email, and a password — that's it. Cyrus runs its own payment-provider account under the hood, so you never need provider credentials of your own. After signup, open Dashboard → API keys, generate your key, and copy it immediately. Full keys are shown only once.
- Create a customerOne request provisions a dedicated virtual account automatically — no separate account-creation call.
- Receive paymentsMoney sent to that account number is attributed to the customer and delivered to your webhook as a normalized
payment.succeededevent, net of the provider's fee and Cyrus's platform fee, credited to your wallet. - Pay outAdd a bank beneficiary and withdraw your wallet balance to it whenever you like — see Dashboard → Payouts.
POST https://api.trycyrus.app/v1/customers
Authorization: Bearer cyrus_9f2a…
{
"reference": "user_123",
"firstName": "Amara",
"lastName": "Okafor"
}
→ 200 OK
{
"data": {
"reference": "user_123",
"virtualAccount": {
"accountNumber": "0123456789",
"bankName": "Nombank MFB",
"status": "ACTIVE"
}
}
}Authenticate every request
Cyrus authenticates with a single API key — there is no separate API login and no TEST/LIVE split. Generate your key in the dashboard and copy the full value when it is shown.
Authorization: Bearer cyrus_9f2a…
Your ops team uses a separate dashboard login (email and password) — it only governs the dashboard, never the API.