An official developer portal of the Government of the Republic of Zambia · Test environmentVerify a certificate
Pamodzi Developer HubBuild, integrate and learn the e-Services framework
LGD · Department of Local Government

Market Ablution Fees

FormWorkflowOutputsE2E testDocs
PassedPassedPassedPassedPassed
End-to-end test
3/3 passed 2026-10-21 (mihud, combined)
Documentation
8 steps, 14 images · Download the DOCX
Catalogue ID
607

Output documents

Test evidence

Market Ablution Fees

Service documentation · Republic of Zambia · GSB e-Services

OwnerDepartment of Local Government
Service keyLGD/market-ablution-fees
Versionservice v1, platform 8787cde1
Date2026-10-21

Generated automatically by the service's end-to-end test run. Every screenshot shows synthetic test data on a local test installation, never real personal data.

This document describes the Market Ablution Fees service of Department of Local Government as the platform runs it today. It is generated by the service's end-to-end test: every step below was performed by the test, and every screenshot was taken during that run with synthetic data. Regenerate it with npm run docs:services in the e2e suite; do not edit it by hand.

1. Service summary

ItemDetail
ServiceMarket Ablution Fees
Owner (MDA)Department of Local Government (LGD)
PurposeTo pay the Market Ablution Fee, please scan the QR code displayed at the facility
Who can applyAnyone using the facility.
How to applyAt the place itself: scan the QR code of the payment point with a phone; the national e-Services portal shows the charge and the payer pays with ZamPay (mobile money or card). No sign-in, no application, no name.
FeesNot set in the service configuration.
TurnaroundQR code based service
Validity of the outputNot applicable
Required documentsNone
Output documentsGS-1 Application for a Government Service
GS-2 Notice of Government Action

2. Application process, step by step

The process as configured in the back office:

StepRoleTaskType
1ApplicantApplyform
2ApplicantPaymentpayment
3SystemGenerate Documentgenerate-document
4SystemNotify Clientnotify

Who takes part in this journey: Executive, Supervisor, Citizen, Anyone (public).

Step 1. The council offers the service

Executive · Back office

System administration -> Councils -> Lusaka City Council -> Services: the council's executive switches "Market Ablution Fees" on for the council ("Offer"). A payment point sells only what its site's council offers; switching the service off again stops every point of the council at once. The change is audited.

The council offers the service (desktop)

Step 2. Add a pay-at-point code

Supervisor · Back office

In Ministry functions -> Facilities -> Pay-at-point codes the supervisor adds a payment point for the site (Synthetic Central Market) and the service's approved tariff (Ablution, per use, K2.00). The QR code printed for it carries a random token, never an amount: the price is read from the approved tariff every time someone pays.

Add a pay-at-point code (desktop)

Step 3. Print the QR codes

Supervisor · Back office (done through its case API in the test run: no screenshot)

"Print sheet" on the same screen gives an A4 PDF with one QR code per active payment point of the site, each with its name, the site and the price, and the words "Scan to pay with your phone". The office prints it and fixes each code at its point. A code can be switched off, or renewed (every printed copy of the old one stops working) - both with a reason, kept in the audit trail.

Step 4. Scan the code: what is paid

Citizen · National e-Services portal

The QR code opens the portal's pay-at-point page (<portal>/pay/<token>; the token only names the point). It shows what is paid and the price the server works out from the approved tariff: Ablution, per use at Synthetic Central Market, K2.00, and who is paid. Nobody signs in and nobody is asked for a name or a number.

Scan the code: what is paid (desktop) Scan the code: what is paid (375 px phone)

Step 5. Pay: the ticket invoice

Citizen · National e-Services portal

Pay raises a ZamPay invoice for this browser at the server's price (K2.00; the page sends no amount). Pressing Pay again, or reloading, hands out the same invoice while it is open, so nobody is charged twice. "Pay with ZamPay" opens ZamPay in a new tab.

Pay: the ticket invoice (desktop) Pay: the ticket invoice (375 px phone)

Step 6. Pay at ZamPay

Citizen · National e-Services portal

ZamPay shows the invoice and the amount; the payer chooses mobile money or a card and pays (here the provider test double, never the real gateway).

Pay at ZamPay (desktop) Pay at ZamPay (375 px phone)

Step 7. The receipt

Citizen · National e-Services portal

Once ZamPay's answer is recorded (through the platform's one payment path, never on the page's word) the page shows the receipt: its number (9017880432447982), the amount, when, what for, where and who was paid, with a QR code anyone can scan to check it. Coming back to the page from the same phone shows it again; "Pay again" starts a new payment.

The receipt (desktop) The receipt (375 px phone)

Step 8. Verify the receipt

Anyone (public) · Public verification page

The receipt's QR code opens the public receipt page: genuine, its number, the amount, when, the service and the office. No sign-in is needed and no name is shown (the payer gave none). A wrong or made-up code gets the same "not found" answer.

Verify the receipt (desktop) Verify the receipt (375 px phone)

3. Payment

ItemIn the test run
Fee (as published)the point's tariff
TariffAblution, per use (ablution)
Invoice9017880432447982
AmountZMW 2.00
Receipt9017880432447982
Paid byanyone at the point: no account, no name

On screen: step 5 (Pay: the ticket invoice), step 6 (Pay at ZamPay), step 7 (The receipt) in section 2.

4. Output documents

Receipt on the payer's phone

The receipt the pay-at-point page shows once the payment is recorded. The payer keeps it on the phone (or ZamPay's own receipt PDF, offered on the same page); a market attendant scans its QR code to check it.

Receipt on the payer's phone

Fields

FieldValue in the test run
Receipt number9017880432447982
AmountK2.00
ChargeAblution, per use
PlaceSynthetic Central Market
Invoice9017880432447982
ReferenceLGD-MAF/00001/10-21-26

Verification

ItemDetail
QR codeOpens the public receipt page (<portal>/verify/receipt/<reference>?sig=<signature>); the signature is made by the server, so a receipt cannot be forged or guessed
What it showsGenuine, the receipt number, the amount, when, the service and the office; never a name

Payment point sheet (QR codes to print)

The A4 sheet the office prints from Pay-at-point codes: one QR code per active payment point of the site, with its name, the site and the price. The code carries only a random token; the price is always the approved tariff on the server.

Payment point sheet (QR codes to print)

The issued PDF has 1 page; the image shows the first.

Fields

FieldValue in the test run
PointAblution block A (synthetic)
SiteSynthetic Central Market
PriceK2.00
Address in the QR code<portal>/pay/<token>

Verification

ItemDetail
Renewing a codeA supervisor can renew a point's code (with a reason): every printed copy of the old code stops working at once
Switching offA switched-off point, an unknown and a made-up code all answer "This payment point is not available"

On screen: step 8 (Verify the receipt) in section 2.

5. Notifications

WhenChannelToMessageDelivery
Payment due (invoice raised)in-app (portal bell)the ticket (no person: nobody sees it)Payment due for application LGD-MAF/00001/10-21-26 - The fee of ZMW 2.00 for Market Ablution Fees (LGD-MAF/00001/10-21-26) is now due. Invoice 9017880432447982.shown
Payment receivedin-app (portal bell)the ticket (no person: nobody sees it)Payment received for LGD-MAF/00001/10-21-26 - Your payment of ZMW 2.00 for LGD-MAF/00001/10-21-26 (Market Ablution Fees) has been received. Receipt: <ZamPay>/pdf?documentType=receipt&invoiceNumber=9017880432447982shown
Payment due (invoice raised)smsnobody (no contact details)skipped
Payment due (invoice raised)emailnobody (no contact details)Payment due for application LGD-MAF/00001/10-21-26skipped
Payment receivedsmsnobody (no contact details)skipped
Payment receivedZamPaythe payerZamPay confirms the payment to the phone or card used; the pay-at-point page shows the receipt.sent by ZamPay

Delivery: shown = in the portal's notification bell; delivered = the SMS gateway (a test double in this run) reported the text delivered; skipped = not sent on that channel (e-mail is not configured on the test installation, and some notices go out on one channel only); sent by the national portal = a ministry node handed the notice to the national portal, which texts and e-mails the citizen under its own name and the citizen's preferences. Addresses written <portal>, <ZamPay> stand for the national portal and ZamPay.

6. Legacy mapping

ItemDetail
ReplacesMarket Ablution Fees in the legacy ZIGS e-Services directory (ZIGS_Services)
Legacy service id607
Legacy providerDepartment of Local Government (LGD) under Ministry of Local Government and Rural Development
Legacy processnot recorded
Fee in the legacy systemnone
Fee taken before submissionyes (as in ZIGS)
Time to issue (legacy)not recorded
Legacy output templatesGS-1 Application for a Government Service: ZIGS_Forms_ZDA / GS1
GS-2 Notice of Government Action: ZIGS_Forms_Notices / GS-2.NoticeOfAction
Legacy addresshttps://ecouncils.gsb.gov.zm
How it was brought overImported by the platform's legacy catalogue importer (zcm-backend scripts/zigs/importLegacy.js) from the ZIGS snapshot: form, case types, fees, documents, process and output templates, then served by the new platform.

7. Version and date

ItemDetail
Document versionservice v1, platform 8787cde1
Generated2026-10-21T13:03:45Z (by the end-to-end run, not edited by hand)
Service versionnot versioned (configured directly)
Platform snapshotbackend 8787cde1
portal 6762d63
back office 58e5946
Test suitee2e 50a3441; one installation (combined); seed profile mihud
Journeys30-catalogue-service.spec.js: the office adds a pay-at-point code for the service's approved tariff and prints its QR code - passed
30-catalogue-service.spec.js: the payer scans the code, sees what is paid, pays with ZamPay and gets the receipt - passed
30-catalogue-service.spec.js: the receipt verifies on the public receipt page - passed
Result3 of 3 journey tests passed
DataSynthetic test data on a local test installation; provider test doubles for ZamPass, ZamPay, SMS and signing.