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.
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.
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.
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.
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.
Authorization: Bearer brv_…. Every request only sees that one business's data.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.
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
}'
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…" } }
| Request | What it does | Key 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.
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 $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']
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.
With the business's consent, unpaid invoices and cash-book history can be shared with Sharet Loans for invoice financing or working capital.
Keys are stored hashed and can be revoked at once. Every key sees one business only. Webhooks are signed. Requests are rate-limited.
Tell us who you serve and how many businesses. We will walk you through white-label pricing, branding and the API.