Developers & white label

Put invoicing and mobile-money collection inside your own product.

The Breve API lets your system create customers and invoices, ask for payment by M-Pesa or bank through Sharet, and hear back the moment money lands. Use it for one business, or offer Breve to your own clients under your name.

Sell online, bill in Breve

Your shop or booking site creates the invoice, the customer pays with an M-Pesa prompt, and the payment, receipt and cash book update on their own.

Connect your POS or ERP

Push sales and customers in, pull invoices, balances and payments out. Webhooks tell your system when an invoice is paid or a contract is signed.

Offer it as your own

Banks, SACCOs, telcos and software houses can give Breve to their business customers with their own logo, colours and domain. You keep the relationship; we run the platform.

How it works

One key, plain JSON, signed webhooks.

  1. An owner creates an API key in Breve under API & webhooks and picks what it may do: read, write or start payments.
  2. Your server sends it as Authorization: Bearer brv_…. Every request only sees that one business's data.
  3. Start a payment and Breve asks Sharet Africa to send an M-Pesa prompt or reserve a bank reference.
  4. When the money arrives, Breve records it, sends the receipt and POSTs a signed payment.received event to your URL.

Base URL: https://breve.sharet.africa/api/v1 · JSON only · 120 requests a minute per key · Business and Enterprise plans.

Create an invoice
curl -X POST https://breve.sharet.africa/api/v1/invoices \
  -H "Authorization: Bearer brv_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 42,
    "due_date": "2026-11-27",
    "lines": [
      { "name": "Website hosting", "qty": 12, "unit_price": 1500 }
    ],
    "vat": true,
    "send": true
  }'
Ask for M-Pesa payment
curl -X POST https://breve.sharet.africa/api/v1/invoices/1077/payments \
  -H "Authorization: Bearer brv_your_key" \
  -d '{ "method": "mpesa", "phone": "0712345678" }'

{ "data": { "id": "9b1f…", "status": "processing",
  "amount": 20880, "currency": "KES",
  "poll_url": "https://breve.sharet.africa/api/v1/payment-intents/9b1f…" } }

Endpoints

RequestWhat it doesKey needs
GET /me The workspace the key belongs to read
GET /clients List customers (filter, sort, page) read
POST /clients Create a customer write
GET /items Products and services with prices read
GET /invoices List invoices with balance and status read
POST /invoices Create an invoice from line items write
GET /invoices/{id} One invoice with lines, payments and pay link read
POST /invoices/{id}/send Email / SMS the invoice to the customer write
POST /invoices/{id}/payments Start an M-Pesa prompt or bank transfer payments
GET /payments Payments received read
GET /payment-intents/{id} Status of a payment you started payments

Lists accept filter[...], sort and page, e.g. /invoices?filter[status]=unpaid&sort=-due_date.

Webhooks

Know the moment something happens.

Add an https URL and choose events. Each POST carries Breve-Event, Breve-Timestamp and Breve-Signature: an HMAC-SHA256 of timestamp.body with your signing secret. Failed deliveries are retried with back-off for about two days.

invoice.createdinvoice.sentinvoice.paidpayment.receivedpayment.failedcontract.signedpurchase_order.acknowledgedclient.createdfinancing.updated
Check the signature (PHP)
$body = file_get_contents('php://input');
$ts   = $_SERVER['HTTP_BREVE_TIMESTAMP'];
$sig  = $_SERVER['HTTP_BREVE_SIGNATURE'];

$expected = hash_hmac('sha256', $ts.'.'.$body, $secret);

if (! hash_equals($expected, $sig) || abs(time() - $ts) > 300) {
    http_response_code(401); exit;
}
$event = json_decode($body, true); // $event['type'], $event['data']

Payments through Sharet Africa

M-Pesa prompts and bank transfers (PesaLink, RTGS, EFT) are collected by Sharet Africa into the business's own merchant account. Breve never holds customer money.

Financing with Sharet Loans

With the business's consent, unpaid invoices and cash-book history can be shared with Sharet Loans for invoice financing or working capital.

Built to be safe

Keys are stored hashed and can be revoked at once. Every key sees one business only. Webhooks are signed. Requests are rate-limited.

Want to offer Breve to your customers?

Tell us who you serve and how many businesses. We will walk you through white-label pricing, branding and the API.