Best Practices
These are the rules that separate integrations that run for years from integrations that page their developers at month-end. Each one is a lesson learned from production EFRIS deployments.
Critical rules
-
Always register first: never fiscalise a sale with an
itemCodethat hasn't been registered. -
No auto-retry on invoices: if fiscalisation times out, check whether the invoice was
already fiscalised with
POST /invoice-detailsbefore trying again. Duplicate fiscalisation means double tax. EFRIS can also be asked to reject duplicates of yourreferenceNo. - Stock before sale: make sure stock is increased before selling, or allow negative stock in your URA portal settings.
- Packaging consistency: if a good was registered with piece packaging, keep the packaging details and quantities on your invoices consistent with that registration so URA's stock decrements correctly.
-
Exact field names: send field names exactly as documented -
invoiceNo,buyerTin,goodsCode,sourceBranchId,deemedFlag,vatProjectId,totalWeight,hsCode. - Amount consistency: the tax lines and totals on an invoice must add up. An invoice whose figures don't reconcile will not be accepted.
Recommended integration checklist
- Cache the system dictionary and commodity categories locally, and refresh them periodically.
- Store
invoiceId,invoiceNo(FDN),antifakeCode, andqrCodeagainst every ERP invoice record - see Invoice Response. - Log the full request and response of every API call. When URA support asks "what did you send?", you want an answer.
- Treat a rejection from URA as a business issue to show the user, not as a temporary failure to retry.
- Run a daily reconciliation: compare your ERP's fiscalised invoices against
POST /query-invoicesfor the same date range.
Looking for the complete reference? Field definitions, code lists, validation rules, error
handling, and ready-to-run examples for every endpoint are available inside your EFRIS Simplified dashboard
once your business is registered on the platform.
Sign in to the dashboard · Get started
Sign in to the dashboard · Get started