Home / API Reference / Micros POS Integration Guide
Micros POS Integration Guide
This is the integration contract for connecting Oracle Simphony (Micros POS) terminals to the middleware. It covers the endpoint, authentication, the full payload schema, field reference, document types, responses and errors.
Endpoint
POST https://server.zra.co.zm/pckzra/api/taxint/pos/upload
Header Value Description
Content-Typeapplication/jsonRequest body format
Acceptapplication/jsonExpected response format
AuthorizationBearer <JWT_TOKEN>Oracle Restaurant IDM JWT token
Use cases covered by this one endpoint: standard invoices (sales), credit notes (refunds/voids) and debit notes (adjustments). A health check is available at GET /pckzra/api/taxint/health.
Removed endpoints
POST /pos/fiscal-update and
GET /api/taxint/statistics are
not supported . Statistics are available via the
Reports API only.
Complete payload schema
{
"DocumentInfo": {
"FolioType": "Invoice",
"FiscalFolioId": "",
"Application": "POS",
"PropertyTaxNumber": "1234567890"
},
"FolioInfo": {
"FolioHeaderInfo": {
"FolioType": "STD",
"AssociatedBillFiscalBillNo": "",
"InvoiceCurrencyCode": "ZMW",
"InvoiceCurrencyRate": 1.0,
"CashierNumber": "CASHIER01"
},
"Postings": [
{
"TrxNo": 1,
"TrxCode": "ITEM-001",
"UnitPrice": 100.00,
"Quantity": 2,
"NetAmount": 200.00,
"GrossAmount": 232.00,
"Product": "Product Description"
}
],
"TrxInfo": [
{
"Code": "ITEM-001",
"TrxType": "C",
"Description": "POS Transaction",
"FiscalTrxCodeType": "A"
}
]
},
"SellerInfo": {
"SellerName": "Store Name",
"Address": {
"Address": "123 Main Street",
"City": "Lusaka",
"Country": "Zambia",
"PostalCode": 10101,
"State": "Lusaka Province"
},
"SellerContactDetails": { "Number": "+260 211 123456" },
"SellerBRN": "BRN123456"
},
"PaymentInfo": {
"PaymentType": "Cash",
"TotalWoVat": 200.00,
"Total": 232.00
}
}
Field reference
DocumentInfo
Field Type Required Description Valid values
FolioTypeString Yes Type of document Invoice, CRN, DRN
FiscalFolioIdString Yes Folio identifier; must be non-blank Any string
ApplicationString Yes Application type Always POS
PropertyTaxNumberString Yes Store TPIN for ZRA Valid TPIN
FolioInfo.FolioHeaderInfo
Field Type Required Description
FolioTypeString Yes STD, CRN or DRN
AssociatedBillFiscalBillNoString For CRN/DRN Original invoice's fiscal bill number
InvoiceCurrencyCodeString Yes ISO currency code, ZMW for Kwacha
InvoiceCurrencyRateDecimal Yes Exchange rate, 1.0 for local currency
CashierNumberString Yes Cashier/register identifier — becomes the Chrilan auditNumber
FolioInfo.Postings (line items)
Field Type Required Description
TrxNoInteger Yes Sequential line number
TrxCodeString Yes Product code — must match a TrxInfo Code
UnitPriceDecimal Yes Price per unit
QuantityDecimal Yes Quantity sold
NetAmountDecimal Yes Amount before tax (UnitPrice × Quantity)
GrossAmountDecimal Yes Amount including tax
ProductString Yes Product description
RemarkString For CRN Reason for the credit note (at least one line)
FolioInfo.TrxInfo (VAT classification)
Field Type Required Description
CodeString Yes Must match the Posting's TrxCode
TrxTypeString Yes Transaction type
DescriptionString Yes Description
FiscalTrxCodeTypeString Yes VAT category code (see below)
VAT category codes
Code Description ZRA classification
AStandard rate Standard VAT (16%)
DZero rated Zero-rated by nature
EExempt Tax exempt
TTourism levy Treated as standard rated
SellerInfo
Field Type Required Description
SellerNameString Yes Store identifier used for the API-key lookup — must exactly match the registered store
SellerBRNString No Business Registration Number
AddressObject Yes Store address details
SellerContactDetailsObject Yes Store contact information (Number becomes the Chrilan cell)
PaymentInfo
Field Type Required Description
PaymentTypeString Yes Cash or Card
TotalWoVatDecimal Yes Total excluding VAT (sum of NetAmount)
TotalDecimal Yes Total including VAT (sum of GrossAmount)
BuyerInfo (optional)
Field Description
BuyerTINBuyer/customer TPIN — mapped to the Chrilan tpin field (empty string if absent)
BuyerLpoLPO number — sets Chrilan lpo and isLpo
Buyer address fields Passed through to the response for POS check printing
Successful response (HTTP 200)
{
"fiscalFolioNo": "211",
"fiscalBillGenerationDateTime": "2026-01-14T11:32:01",
"fiscalOutputs": {
"output": [
{ "name": "COLL_TAX1", "value": "211" },
{ "name": "QR_CODE_URL", "value": "https://siportal.zra.org.zm/common/link/ebm/receipt/indexEbmReceiptData?Data=..." },
{ "name": "BASE64_TO_IMAGE", "value": "iVBORw0KGgoAAAANSUhEUg..." },
{ "name": "sdcId", "value": "SDC0010022742" },
{ "name": "mrcNo", "value": "WIS00037264" },
{ "name": "intrlData", "value": "IXCI2VHBMB3QWYTQJC4G5W6L4M" },
{ "name": "rcptSign", "value": "4BQOZAXZVTQGRLAQ" },
{ "name": "taxData", "value": "ZRA Invoice: INV0010022742/3470\n..." },
{ "name": "vsdcRcptPbctDate", "value": "20260114113201" },
{ "name": "$PartnerFiscalStatus$", "value": "COMPLETED" }
]
},
"statusMessages": { "messages": [] }
}
Field Description
fiscalFolioNoZRA fiscal receipt number
QR_CODE_URL / BASE64_TO_IMAGEQR code as URL and as base64 image for printing
sdcId, mrcNoSmart Device Controller ID and MRC number
rcptSignDigital receipt signature
taxDataTax breakdown text for the receipt
$PartnerFiscalStatus$COMPLETED or FAILED
Document types
Standard invoice (STD)
Normal sale: DocumentInfo.FolioType = "Invoice", FolioHeaderInfo.FolioType = "STD".
Credit note (CRN)
Refund or void. Requirements:
FolioType = CRN in both DocumentInfo and FolioHeaderInfo
AssociatedBillFiscalBillNo = the original invoice's fiscal bill number
At least one Posting includes a Remark explaining the reason
The middleware automatically looks up the original receipt number and SDC ID from its database and links the refund at ZRA.
Error handling
HTTP Meaning Typical cause
200 Success Invoice registered at ZRA
400 Bad Request Validation failed — missing/invalid fields
401 Unauthorized Invalid or missing JWT
403 Forbidden Store not registered or inactive
500 Server Error Chrilan API failure or internal error
{
"error": "Validation failed",
"details": [
"PropertyTaxNumber is required",
"FolioType must be Invoice, CRN, or DRN"
]
}
Error Cause Resolution
SellerName is requiredMissing SellerInfo/SellerName Include the SellerInfo block with SellerName
Store not registered: XSellerName not in the middleware database Register the store; check exact spelling
PropertyTaxNumber is requiredMissing TPIN Include a valid TPIN in DocumentInfo
TrxInfo missing for TrxCodeA Posting has no matching TrxInfo entry Ensure every TrxCode has a TrxInfo.Code
Critical integration rules
TrxCode linkage
Every Posting must have a TrxInfo entry with a matching Code. This linkage determines the VAT treatment of the line.
SellerName must match exactly the value registered in the middleware (case and spacing included).
Amount consistency : NetAmount = UnitPrice × Quantity; PaymentInfo totals must equal the sums of the line amounts.
Currency : pass-through; use ZMW with rate 1.0 for local sales.