Comprehensive operating guide for the multi-tenant fleet management and rental platform with ZRA Smart Invoice integration.
ZedCarHire is a cloud-based, multi-tenant car rental and fleet management Software-as-a-Service (SaaS) platform purpose-built for Zambian car hire businesses. It consolidates fleet records, customer relationships, hire transactions, double-entry accounting, GPS tracking, marketplace listings and ZRA Smart Invoice compliance into a single, integrated system accessible from any modern web browser or via the dedicated mobile Progressive Web App (PWA).
| Portal | URL | Audience | Purpose |
|---|---|---|---|
| Public Marketplace | / | End-customers | Browse, compare and book vehicles |
| Company Admin | /admin/ | Fleet operators | Day-to-day fleet, hire and accounting operations |
| Super Admin | /management/ | ZedCarHire platform team | Tenant approvals, billing oversight, system settings |
| Mobile PWA | /pwa/ | Fleet operators (mobile) | Installable mobile app with offline support |
ZedCarHire is integrated with the Zambia Revenue Authority's Virtual Sales Data Controller (VSDC) and supports real-time submission of customer registrations, item registrations and sales invoices. Smart Invoice is opt-in per company and can be activated after device initialization. See section 8 for the complete workflow.
Onboarding a new company on ZedCarHire takes three steps: registration, identity verification and first login. The entire process is typically completed within one business day.
Visit zedcarhire.com and click Register Your Business. Provide your company name, TPIN, contact phone, primary email and a director's name. Upload a clear photo of your business certificate of incorporation and the director's NRC.
The ZedCarHire team verifies your details against the PACRA registry and ZRA TPIN portal. Approval normally completes within four business hours during weekdays.
You will receive an email confirming approval with a secure link to set your administrator password.
Choose a strong password (minimum 8 characters, mixed case, with at least one digit). You will be redirected to the company dashboard.
Navigate to Profile and add your logo, physical address, bank details and tagline. These appear on every invoice, quotation and public listing.
Your trial begins automatically on first login with 10,000 free tokens (worth K10,000) and full access to all platform features for 30 days.
During your Free Trial you receive 0% commission on hires, can list up to 5 vehicles, get full marketplace exposure and have access to all reporting features. No payment card is required to start.
ZedCarHire uses a transparent pay-as-you-go token model. There are no fixed monthly fees. You only pay a small commission, drawn from your prepaid token balance, when a new hire is created. The commission rate depends on the plan you select.
Tokens are denominated in ZMW for easy mental accounting. K1,000 worth of tokens equals 1,000 tokens.
Subscriptions page from the sidebar.Whether you upgrade, downgrade or take a break — tokens never expire. A "migration" line item is added to your token statement so the audit trail is preserved.
The Token Account is the prepaid wallet that powers your hire commissions. This section is a summary — for the complete deep-dive, see the dedicated Token Account User Guide.
Whenever you create a new hire, the platform calculates and deducts commission instantly using:
Example: a K650/day vehicle on Growth plan (4%) hired for 7 days = 650 × 0.04 × 7 = 182 tokens (K182).
Sidebar → Token Account. The page displays your current balance, utilisation bar and a token calculator.
Pay to the MTN Mobile Money number or bank account shown under "Payment Methods". The minimum top-up amount is K1.
Take a screenshot of the SMS confirmation or bank statement, enter the amount and click Submit Payment Proof.
The ZedCarHire team reviews your proof, typically within 2–4 hours during business hours. You receive an email when tokens are credited.
The Token Statement page shows a month-by-month log of every credit and debit (top-ups, trial grants, hire commissions, manual credits). Use the month selector to switch between periods and the Print button to generate a printer-friendly version for your accountant.
The platform sends automatic email reminders at three thresholds:
| Threshold | Status | Behaviour |
|---|---|---|
| > 20% | Healthy | No action required. |
| ≤ 20% | Warning | Reminder email every 3 days. Hires still allowed. |
| ≤ 5% | Critical | Daily email reminder. Hires still allowed. |
| 0 | Depleted | New hire creation blocked until top-up. All other features unchanged. |
Available on the Token Account page — enter a daily rate and number of days to instantly see how many tokens a planned hire will consume. Useful for estimating monthly top-up requirements.
The Fleet module is where you record every vehicle you operate. Each vehicle's record drives hire pricing, marketplace listings, service scheduling, profitability tracking and — for Smart Invoice users — ZRA item registration.
Sidebar → Manage Cars → click Add New Vehicle in the top-right.
Make, model, registration number, year, owner, ownership type (owned vs outsourced), local hire rate, out-of-town rate, current mileage and service interval.
Type (sedan, SUV, minibus, etc.), transmission, passengers, doors, fuel type, vehicle location.
Tick List on portal to expose the vehicle to public-portal customers. Add a description and upload a vehicle photo (JPG/PNG/WebP, max 5 MB — auto-resized to 800 × 600).
If Smart Invoice is enabled for your company, two extra fields appear: UNSPSC Classification (searchable) and Tax Type. These are sent to ZRA on save.
On save, the vehicle is stored locally and (for Smart Invoice users) registered with ZRA via the VSDC items/saveItem endpoint. A confirmation dialog reports the outcome.
| Status | Meaning |
|---|---|
| Available | Free for hire. Visible on marketplace if portal listing is enabled. |
| On Hire | Currently rented out. Auto-set when a hire is in progress. |
| In Service | Undergoing maintenance. Not bookable. |
| Retired | Permanently removed from active fleet. Excluded from reports unless explicitly included. |
Each vehicle has a last service mileage and next service mileage (last + service interval). When you record a service via Service Vehicle:
The Vehicle Asset Register page captures the accounting view of each vehicle: purchase cost, accumulated depreciation, net book value, insurance details and fitness expiry. Used by the audit pack and balance sheet.
The Vehicle Profitability page summarises, per vehicle:
Use it to identify under-performing vehicles and decide which to keep, sell or replace.
Every hire must be linked to a customer record. The Customer module stores identity, contact, license and optional ZRA TPIN information for each individual or organisation that rents from you.
Sidebar → Manage Customers → Add New Customer.
Full name, primary phone, NRC, address, driving license number. Optionally upload a clear scan/photo of the NRC.
Required: an alternative contact name, NRC and phone — used as next-of-kin / referee for any disputed hire.
If the customer is VAT-registered, enter their 10-digit TPIN. This is sent to ZRA on Smart Invoice registration; otherwise a default value is used.
For Smart Invoice users, the customer is automatically registered with ZRA via branches/saveBrancheCustomers. A confirmation dialog reports success or failure.
NRC is enforced as a unique key per company — the system blocks creating two customers with the same NRC inside the same tenant. On the PWA, phone number is the duplicate guard.
Click the View button on any customer row to see their full profile and uploaded NRC. Edit opens the same form pre-populated. All hires linked to a customer are visible in their profile, including totals spent, average hire length, late returns and favourite vehicle.
After a hire is closed, you may rate the customer (1–5 stars) with optional notes. Aggregated ratings appear on the customer profile and influence the default deposit suggestion on future hires.
A hire is the core financial event on the platform. The lifecycle has four stages: Quote → Hire Out → Hire In → Close. Each transition is timestamped, audited and reflected in your accounting ledgers.
| Stage | What happens | Token impact |
|---|---|---|
| Quote | Pricing built for customer, can be emailed as PDF. No commitment yet. | None |
| Hire Out | Vehicle collected by customer. Deposit captured, status moves to "On Hire". | Commission tokens deducted |
| Hire In | Vehicle returned. Extras, damage, fuel adjustments and final amount calculated. | None |
| Close | Balance settled, deposit released or applied, hire archived. Revenue posted to ledger. | None |
Sidebar → Hire Out (or click New Hire from any vehicle row).
Search by name, phone or NRC. If the customer is new, click Add New Customer inline — they will be created and selected without leaving the page.
Only "Available" vehicles appear. The page auto-fills the daily rate.
Rental date, planned return date, number of days. The system computes hire amount = rate × days. You may apply a discount.
Enter the deposit amount, deposit type (cash, transfer, MoMo) and a reference. The deposit is held against the hire and reconciled at close.
Click Hire Out. The system: (a) deducts commission tokens, (b) creates the hire record, (c) moves the vehicle to "On Hire", (d) posts a journal entry for the deposit, and (e) generates a PDF hire agreement.
From the Manage Hires page, click Hire In on the active hire:
If a hire is cancelled before collection, open it from Manage Hires and click Cancel. You will be asked whether to refund or retain the deposit (per your terms). Cancelled deposits are visible in the Cancelled Deposits report. Commission tokens are not automatically refunded — contact support if a refund is appropriate.
For every hire the platform can generate, on demand:
ZedCarHire integrates with the Zambia Revenue Authority's Virtual Sales Data Controller (VSDC) to provide real-time tax invoice submission. The integration is opt-in and only activates for companies that (a) are on the Premium plan, (b) have completed Device Initialization with ZRA, and (c) have toggled Use Smart Invoice in System Settings.
Smart Invoice is gated by both a platform-wide flag (controlled by ZedCarHire after ZRA certification) and a per-company opt-in (controlled by you in System Settings). Both must be ON for any data to be sent to ZRA. This design ensures the module stays dormant until both parties are ready.
Smart Invoice requires four sequential setup steps. Each step must succeed before the next can be performed.
Sidebar → Smart Invoice → Device Initialization. Enter your TPIN (pre-filled from your company profile), branch ID (typically 000) and device serial number. The platform calls initializer/selectInitInfo and on success stores your VSDC device details locally.
Smart Invoice → Standard Codes → Fetch from ZRA. Downloads the reference data (tax types, payment methods, units of measure, country codes, etc.) via code/selectCodes. Stored in si_code_classes and si_codes. Re-fetch any time the codes update on ZRA's side.
Smart Invoice → Item Classification → Fetch from ZRA. Downloads several thousand UNSPSC commodity codes via itemClass/selectItemsClass. Stored in si_item_classes. Required before any vehicle (item) can be registered with ZRA.
System Settings → ZRA Smart Invoice card → toggle Use ZRA Smart Invoice ON → Save. From this point onward, every customer and vehicle you add is automatically registered with ZRA, and every closed hire generates a Smart Invoice.
| You do this | Platform calls | Local record updated when |
|---|---|---|
| Add a customer | branches/saveBrancheCustomers | ZRA returns resultCd 000 — customers.si_cust_no populated |
| Add a vehicle | items/saveItem | ZRA returns resultCd 000 — car_fleet.si_item_cd populated |
| Close a hire (planned) | trnsSales/saveSales | ZRA returns the invoice QR + signature |
For customer and vehicle adds, if ZRA rejects the submission (any resultCd other than 000), the local record is still saved but the corresponding si_cust_no / si_item_cd field stays NULL. This lets you investigate the ZRA error and re-submit without losing data.
Every VSDC request and response is appended to admin/logs/smart_invoice_debug.log. The log includes:
Within the admin UI, every Smart Invoice action displays both a SweetAlert with the result and an expandable debug panel showing the request/response side-by-side.
The VSDC base URL is stored in system_vsdc_settings. The platform ships pointing at ZRA's sandbox. After certification, ZedCarHire updates this row to the production URL. Per-company overrides are supported but rarely used.
ZedCarHire ships with a complete double-entry accounting engine. Every financial event — a hire, a deposit, a payment, an expense, a service, a token top-up — is automatically posted to the general ledger. No manual journal entries are required for routine operations, but they are supported for adjustments.
Configurable in System Settings → Revenue Recognition Policy:
Use Manage Expenses to log every operating cost — fuel, repairs, salaries, rent, fees. Each expense is linked to a category (configurable in System Settings) and optionally to a specific vehicle. Outsourced vehicle payouts are recorded as Cashouts, which flow into the income statement automatically.
Optional vehicle telematics — supported on Growth and Premium plans. The platform integrates with major GPS hardware vendors via standard protocol adapters.
Tracker Configuration from the sidebar.Vehicle Tracking shows all active vehicles on a single map with their current location, speed and ignition state. Click any vehicle marker for trip history and a 24-hour timeline replay.
Tracking Reports exports daily distance, idle time, geofence breaches and over-speed events to PDF or Excel for any vehicle over any date range.
The ZedCarHire mobile app is delivered as a Progressive Web App (PWA). It installs from the browser, requires no app store and offers offline-capable read access to your fleet, customers and hires.
zedcarhire.com/pwa → menu (⋮) → Add to Home Screen.zedcarhire.com/pwa → Share → Add to Home Screen.Available at Sidebar → System Settings. Administrator-only. Lets you customise platform behaviour without affecting other tenants.
Choose between Recognise at Rental Date (simple) and Daily Pro-Rata (period-accurate). Reporting only — does not change hire pricing or VAT computation.
Your custom T&Cs appear on every public vehicle listing and on the hire agreement PDF. Leave blank to use the ZedCarHire system default. The textarea accepts plain text; numbered sections are recommended.
Manage the bank accounts your business operates and the categories used to classify expenses. These feed the financial reports.
Visible only when ZedCarHire has activated Smart Invoice on the platform. Toggle Use ZRA Smart Invoice ON to begin sending customer, vehicle and hire data to ZRA. See section 8.
All production traffic is encrypted in transit using TLS 1.2 or higher. The certificate is renewed automatically and monitored. Localhost development traffic is permitted over HTTP for convenience only.
Every database query is scoped to your company_id. There is no shared user, customer, vehicle, hire or report data between tenants. Super admin staff have a separate portal and never see operational data unless they impersonate a tenant for support — and every impersonation is logged.
Production databases are backed up nightly and retained for 30 days. File uploads (NRCs, vehicle photos) are mirrored to redundant storage. Backups are encrypted at rest.
You own your data. At any time you may request a full export of your tenant's data in CSV/JSON format by emailing support@zedcarhire.com. The platform delivers the export within five business days.
Customer TPINs and NRCs sent to ZRA are transmitted over HTTPS to ZRA's VSDC endpoint. The platform logs every submission for audit purposes for a minimum of seven years, in line with ZRA record-keeping requirements.
| Symptom | Likely cause | Fix |
|---|---|---|
| "Vehicle limit reached" on add | You have reached the cap for your current plan. | Upgrade to a plan with a higher cap (Subscriptions page). |
| "Token balance too low to create this hire" | Insufficient tokens for the calculated commission. | Top up via Token Account. Existing hires are unaffected. |
| Smart Invoice skipped on customer/vehicle add | (a) Platform-wide flag off, or (b) company opt-in off, or (c) device not initialized. | Check System Settings → ZRA Smart Invoice and confirm Device Initialization succeeded. |
VSDC resultCd 894 |
Invalid TPIN sent to ZRA. | Verify the company TPIN on the Profile page matches what ZRA has on record. |
VSDC resultCd 992 |
Branch ID does not exist for this TPIN. | Confirm Branch ID is 000 for a single-branch business; otherwise use the value ZRA issued. |
| Cannot upload NRC photo | File too large or wrong format. | Max 5 MB. Accepted: JPG, PNG, GIF, WebP, PDF. Try compressing or converting first. |
| Email reminders not arriving | Email address incorrect or in spam folder. | Check Profile → email and your spam folder. Whitelist noreply@zedcarhire.com. |
If you cannot resolve an issue using this manual, reach the ZedCarHire team through any of the channels below. Premium subscribers have access to a dedicated WhatsApp support group with 24/7 coverage.
| Channel | Address | Response SLA |
|---|---|---|
| Email support | support@zedcarhire.com | 4 hours (business hours) |
| Sales / account | sales@zedcarhire.com | 1 business day |
| Smart Invoice / tax queries | tax@zedcarhire.com | 1 business day |
| Emergency (Premium only) | WhatsApp group provided at onboarding | 30 minutes, 24/7 |
Use the button on the cover or visit docs/generate_product_manual_pdf.php?dl=1 to download the latest version for offline reference, audit submission or ZRA Smart Invoice certification.