Custom POS & Direct REST API Guide
Learn how to generate Bearer API keys and send JSON receipt payloads directly to Mutero VFD from custom POS software, web checkout engines, or ERP backends.
Direct Synchronous Fiscalization
The Mutero REST API returns official ZIMRA digital signatures, receipt numbers, and QR verification URLs synchronously within 200ms.
Same FDMS rules as other integrations
Send explicit
zimra_tax_id (1 / 2 / 3) or a known tax label. Unknown taxes are blocked — they never silently become 15%. Zero-rated / exempt lines need an 8-digit hs_code. Include customer.tin with a real customer name so Mutero can emit ZIMRA buyerData. Optional tax_inclusive is persisted for correct RCPT026/027 totals.1Generate Bearer API Key
Go to API Keys Manager in your Mutero Dashboard. Click Generate New API Key and select your target Virtual Fiscal Device.
Authorization Header Formathttp
Authorization: Bearer mtr_live_9a8b7c6d5e4f3a2b1c...2Submit Receipt for Fiscalization
Send a HTTP POST request to the receipt submission endpoint:
POST /api/v1/vfd/receipts Request Payloadjson
{
"device_id": "vfd_dev_65f4e3a2b1c",
"invoice_number": "INV-2026-089",
"currency": "USD",
"tax_inclusive": false,
"customer": {
"name": "Acme Zimbabwe Ltd",
"tin": "2001984756"
},
"items": [
{
"item_name": "Dell XPS 15 Laptop",
"quantity": 1,
"unit_price": 1200.00,
"total_amount": 1200.00,
"zimra_tax_id": 1,
"hs_code": "8471.30.00"
}
]
}3Synchronous Fiscal Verification Response
Mutero responds with the official ZIMRA signature, receipt number, and verification link for printing QR codes on customer receipts:
200 OK Response Payloadjson
{
"success": true,
"receipt_number": "ZIMRA-2026-0098475",
"verification_url": "https://fdms.zimra.co.zw/verify/ZIMRA-2026-0098475",
"qr_code_data": "https://fdms.zimra.co.zw/verify/ZIMRA-2026-0098475",
"zimra_signature": "MEQCID3k8A...==",
"status": "VERIFIED"
}How to issue a credit note
Easiest option: Mutero web app
Open the fiscalised invoice in the Mutero web app, then click Issue Credit Note. Use the API below only when your POS / backend needs to issue credits automatically.
Or send a credit note to Mutero with the original invoice (or FRN) and a reason:
Endpointhttp
POST /api/v1/vfd/receipts/credit-noteExamplejson
{
"original_invoice_number": "INV-2026-089",
"reason": "Customer returned goods",
"credit_note_number": "CN-2026-089"
}- Use
original_invoice_numberororiginal_fiscal_receipt_number. reasonis required.- Leave
linesout to credit the full invoice, or send specific line numbers/quantities for a partial credit.