ThatFiscal Knowledge Base

Fiscalise From Excel or CSV — No Add-In to Install

~2 minutes · zero install

Overview. Some fiscalisation providers make Excel users install Windows add-ins, template locators and API plugins across eleven steps. ThatFiscal's Excel route is deliberately the opposite: fill our template, send it, done. No installation, works on any computer — even a phone.

Before You Begin: nothing. If you can open a spreadsheet, you're qualified.

Step 1

Get the Template

The template is excel_template.csv in your welcome pack, and support will email it to you on request. Its header row is:

invoice_no,receipt_type,currency,buyer_name,buyer_tin,item_name,
hs_code,qty,price,line_total,tax_percent,tax_id,tax_inclusive,payment_method,
credited_invoice_no

Column order does not matter — we read by name — and the five optional columns in the table below (notes, amount_paid, line_type, tax_code and credited_invoice_no) can be added or left out. credited_invoice_no ships in the template because a credit-note row cannot be read without it, and adding a column to a file you have already started is the one edit people get wrong. The template ships a worked credit-note row you can copy.

Step 2

Fill In Your Invoices

One row per line item; every row sharing an invoice_no becomes one invoice. The invoice-level values (currency, buyer, receipt type, tax_inclusive, payment method) are read from the first row of each group, so it is enough to fill them once per invoice.

ColumnRequiredWhat It Does
invoice_noYesYour invoice number. Rows sharing it are grouped into one invoice; a row with a blank invoice_no is skipped, so trailing blank rows are harmless.
receipt_typeNoFiscalInvoice (default), CreditNote or DebitNote. Anything else — Proforma, Quote, Receipt — is rejected before submission with a message naming the value.
currencyNo3-letter code, upper-cased for you. Defaults to USD.
buyer_nameNoBuyer's registered name. Leave blank for a walk-in sale.
buyer_tinNoBuyer's 10-digit TIN. ZIMRA requires name and TIN together, so a name with no TIN is moved into the receipt notes instead of blocking the sale (RCPT043).
item_nameYesLine description. Defaults to "Item" if blank.
hs_codeNo4 or 8 digits. Leave blank and we auto-fill it.
qtyNoDefaults to 1. Zero or negative is treated as 1.
priceSee noteUnit price. If line_total is blank we compute price × qty.
line_totalSee noteLine total. This wins over price × qty when the two disagree, and the unit price is re-derived from it so ZIMRA's RCPT024 check passes. Give at least one of price or line_total.
tax_percentRecommendedThe VAT rate for that line — 15.5, 0, etc.
tax_idRecommendedThe ZIMRA tax ID matching that rate on your device (from getConfig — the IDs are assigned by ZIMRA per device, e.g. standard-rate VAT 15.5%, zero-rated and exempt each have their own ID). We resolve it from the rate if you leave it blank.
tax_inclusiveNoA blank cell means TRUE (tax-inclusive) — the Zimbabwean convention. Accepted true values: 1, true, yes, y, inclusive. Anything else (false, no, 0, exclusive) is tax-exclusive, and VAT is then added on top of your prices.
payment_methodNoDefaults to Cash. Also Card, MobileMoney, BankTransfer, Coupon, Credit, Other.
credited_invoice_noFor credit notesThe invoice number this credit note reverses. Required whenever receipt_type is CreditNote or DebitNote.
notesFor credit notesFree text printed on the receipt. ZIMRA requires a note on every credit and debit note (RCPT034).
amount_paidNoOverrides the computed payment total. Leave it blank and we compute it — line sum when tax-inclusive, line sum plus VAT when tax-exclusive.
line_typeNoSale (default) or Discount. A negative total is treated as a Discount line automatically.
tax_codeNoZIMRA tax code letter, if your device uses them.

There is no date column — the receipt is stamped at the moment it is fiscalised, which is what keeps it inside your open fiscal day.

Step 3

Send It In

Save from Excel as CSV UTF-8 (Comma delimited) — another encoding is refused with a message telling you exactly that. Then POST the file, or ask support to run the upload for you:

curl -H "X-Api-Key: tf_…" \
     -F "file=@invoices.csv" \
     https://api.thatfiscal.com/webhooks/excel

Each invoice is signed, submitted to ZIMRA, and listed with its QR and verification code — print or email them to customers from the portal.

One Bad Row Won't Sink the Batch: the response tells you how many invoices were processed and lists every rejection with its invoice number and reason: {"processed": 12, "rejected": 1, "results": […], "errors": [{"invoice_no": "INV-1007", "error": "…"}]}. Fix the offending rows and re-send just those — an invoice already fiscalised is not fiscalised twice.
Credit Notes in CSV: set receipt_type to CreditNote and fill credited_invoice_no with the original invoice number. Do not use negative quantities — the sign is applied for you. The original invoice must already be fiscalised on the same device or the credit note is refused with RCPT015.
Batch Habit: send daily rather than weekly. Receipts are stamped when they are fiscalised, not when the sale was made, so a week-old sale is declared under today's fiscal day.
Need a Hand? Email support@thatfiscal.com or call +263 78 674 5282. If it is quicker, we will do the setup with you on the call.
← All Knowledge Base Guides