Getting Started
Developer documentation

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.
  1. 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.
  2. Create a customerOne request provisions a dedicated virtual account automatically — no separate account-creation call.
  3. 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.
  4. 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.