Skip to content
cyrenes

Developers

Build on Cyrenes

Create invoices, share pay links and follow payments from your own systems. One versioned REST API over the same ledger your finance team already trusts.

REST
JSON over HTTPS
JWT
Bearer + refresh
v1
Versioned paths
1# Get the shareable pay link for invoice 20412curl https://erp.cyrenes.io/api/v1/invoices/2041/pay-link \3  -H "Authorization: Bearer $CYRENES_TOKEN"
Response 200 OK
1{2  "url": "https://erp.cyrenes.io/pay/k7Hq2d"3}
Illustrative request — see the API reference for exact endpoints and fields.

REST API

One API at /api/v1

The same endpoints power the Cyrenes web and mobile apps, so everything you can do in the product is built on what you integrate with.

JSON over HTTPS

Predictable, resource-oriented URLs under /api/v1. Requests and responses are JSON, with standard HTTP status codes.

JWT bearer auth

Exchange credentials for a short-lived access token and a refresh token. Send the token as a Bearer header on every call.

Versioned

The version lives in the path. New fields are added without breaking v1, so your integration keeps working as we ship.

Authenticate once, stay signed in

Sign in to receive a short-lived access token and a refresh token. Use the access token as a bearer credential, and swap the refresh token for a new one before it expires. Every request is scoped to the business the token belongs to.

Token lifecycle (illustrative)
  1. 1POST/api/v1/auth/loginaccess + refresh token
  2. 2GET/api/v1/invoicesAuthorization: Bearer <token>
  3. 3POST/api/v1/auth/refreshnew access token

Reference

Browse every endpoint in OpenAPI

A full OpenAPI (Swagger) reference documents each endpoint, parameter and response shape. Generate a client in your language of choice, or try requests right from the reference.

API referenceOpenAPI
  • GET/api/v1/invoices
  • POST/api/v1/invoices
  • GET/api/v1/invoices/{id}/pay-link
  • GET/api/v1/payments/{id}/status
Illustrative — full reference on request

Resources

The objects your business runs on

Start with the core of getting paid and keeping the books, all from one token.

  • Invoices

    Create, list and finalise invoices, download the PDF and start a collection.

  • Pay links

    Fetch the public pay link for an invoice — the customer pays by MoMo or card.

  • Customers

    Read and manage the customers you bill, in sync with your other systems.

  • Payments

    Follow a collection from request to settled with its current status.

  • Expenses

    Record expenses and pay them from the wallet or externally.

  • Approvals

    List what is waiting for sign-off, then approve or reject it.

Payment status

Know the moment a payment lands

Mobile money and card payments settle asynchronously. Each collection moves from pending to paid or failed, the books update as it does, and your system can read the status from the API.

Read status from the API

Look up any payment by id to see whether it is pending, paid or failed before you act on it.

Make your side safe to retry

Record which payments you have already handled, so checking twice never fulfils an order twice.

Confirm before you fulfil

Release goods only once a payment reads as paid. The books are already updated when it does.

Payment statusLive
  • INV-2041 · pending09:41:02
  • INV-2041 · paid09:41:19
  • INV-2044 · failed10:02:47
GET /api/v1/payments/{id}/status → paid

Illustrative status timeline. Need push notifications to your own endpoint? Talk to our team about your integration.

Get API access

Tell us what you're building. We'll set up credentials, share the OpenAPI reference and help you test against your business.

Ship your integration with a team behind it

Start free, then talk to us about API access for your business.

Start in minutes

Open an account, add your business and send your first pay link the same day.

One ledger

Every payment, invoice, purchase and expense posts to the books automatically.

Talk to a person

Our team in Kigali helps you set up rails, approvals and your chart of accounts.