QuickBooks Online ZIMRA Fiscalisation — Integration Guide
Overview. QuickBooks Online doesn't let you point a raw webhook at any URL, so the clean path is a one-Zap bridge: New Invoice → POST to ThatFiscal. Zapier's free tier is enough for most SMEs; Make.com works identically. This endpoint expects the QuickBooks Accounting API v3 Invoice or CreditMemo entity.
Before You Begin: a Zapier (or Make) account connected to your QuickBooks Online, and your ThatFiscal API key.
Create the Zap Trigger
Trigger app: QuickBooks Online. Event: New Invoice. Connect your account and pull in a sample invoice.
Add the Webhook Action
Action: Webhooks by Zapier → POST. URL https://api.thatfiscal.com/webhooks/quickbooks. Payload type JSON. Add header X-Api-Key: tf_….
Send the Raw Entity, Including TxnTaxDetail
Post the whole QuickBooks object rather than a hand-picked set of fields. QuickBooks does not put a tax rate on the line at all — we read it from TxnTaxDetail.TaxLine[].TaxLineDetail.TaxPercent and match it to each line through TaxCodeRef. If TxnTaxDetail is dropped from the payload, every line is declared with unknown tax and the receipt is refused rather than silently declared at 0% or the standard rate. Lines whose TaxCodeRef is NON, exempt or zero-rated are always declared at 0%, whatever the invoice header says.
Repeat for Credit Memos
A second Zap with trigger New Credit Memo to the same URL covers refunds. Zapier posts the CreditMemo object unwrapped — with no "CreditMemo" key around it — and we detect it anyway, from RemainingCredit, a CM-/CN- document number, or the absence of invoice-only fields such as DueDate. It is fiscalised as a credit note that reduces your output VAT, never as a fresh sale.
Keep LinkedTxn on the Credit Memo
Apply the credit memo to the original invoice in QuickBooks before it syncs. That fills LinkedTxn with the invoice's internal Id, which is how we find the original receipt. For an unapplied memo, send credited_invoice_no (or write "Invoice 1037" in the private note) instead. Without either, the credit note is refused with RCPT015.
Turn It On and Test
Create a test invoice in QuickBooks. Zapier fires, and the fiscalised result (QR + verification code) is in your Portal within seconds. The QR link also comes back in the webhook response for your invoice template.
name,hs_code, optional tax_percent) and every future QuickBooks invoice picks them up automatically.