Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Inventory
  3. ZRA Smart Invoice — Importers (Zambia) v 18.0
  4. Sales Conditions FAQ

ZRA Smart Invoice — Importers (Zambia)

by AminiTech Solutions https://www.aminitechsolutions.com
Odoo

$ 488.00

v 18.0 Third Party
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 17.0 18.0 19.0
You bought this module and need support? Click here!
Versions 17.0 18.0 19.0
  • Description
  • Manifest
  • License
🎉 35% LAUNCH OFFER — Launch pricing on every ZRA Smart Invoice app. It rises as the apps gain traction, so the earlier you come in, the less you pay.
For Odoo 18 · Community & Enterprise

ZRA Smart Invoice Importers — reconcile what customs cleared

For importers: pull the goods declared under your TPIN at customs straight from your VSDC (selectImportItems), link each customs line to one of your products, and approve it (updateImportItems, imptItemSttsCd 3) so it becomes a registered ZRA item you can actually sell. HS code, declaration reference, origin, quantities and the foreign-currency invoice values arrive exactly as customs declared them. Builds on ZRA Smart Invoice Stock.

✅ selectImportItems → reviewable register ✅ Link a product, approve to status 3 ✅ HS code, origin & FCur values
ZRA Smart Invoice Importers — reconcile what customs cleared
$195 ⭐ Implementation included

One-time purchase · unlimited documents · free updates on every ZRA Smart Invoice spec change. Requires the free ZRA Smart Invoice Base.

Overview

Customs declared it — now make it sellable

Zambia’s Smart Invoice will not let you sell a good the ZRA does not know, and an imported good arrives at customs as a line under your TPIN rather than as an item in your catalogue. This app closes that gap: one click pulls every imported line your VSDC knows about into a reviewable register, you link each line to the product it really is, and Approve pushes it back as imptItemSttsCd 3. The call goes to your own VSDC or OSDC — no third-party SaaS sits between your customs data and the ZRA.

📦

Pull your customs lines

Fetch from ZRA calls /imports/selectImportItems and lands every imported line declared under your TPIN in a register you can read, filter and group — taskCd, declaration number, HS code, quantities and supplier, exactly as customs recorded them.

🔗

Link, then approve

Point each customs line at the product it really is and press Approve at ZRA: /imports/updateImportItems goes out with imptItemSttsCd 3, the item class and your product’s itemCd, turning a customs line into a registered ZRA item.

💰

Foreign-currency detail kept

The invoice amount, currency code and exchange rate customs used (invcFcurAmt / invcFcurCd / invcFcurExcrt) are stored on every line beside the package and quantity units — the numbers you need when the ZRA asks how a landed cost was arrived at.

How it works

Every imported line, from fetch to approved

The ZRA Imported Items list for Kabwata Traders Ltd with the Fetch from ZRA button in the list header
01 · Fetch from ZRA

One button pulls every imported line under your TPIN

A Fetch from ZRA button sits in the header of the ZRA Imported Items list and calls /imports/selectImportItems on your VSDC with a full-history watermark, so nothing declared under your TPIN is left behind on the first run. Every line comes back with its taskCd, declaration number and date, item sequence, HS code, item name, quantities and supplier. A notification tells you exactly what happened — how many lines were new and how many were updated — rather than leaving you to guess. Run it again whenever a new consignment clears and the register catches up.

02 · The register

Your customs lines as a working list, not a PDF

The register shows one row per imported line: declaration date, declaration number, item sequence, HS code, item name, quantity and quantity unit, with supplier name, foreign-currency amount and currency available as optional columns you can toggle on. The state is a colour-coded badge — green once approved, red when the VSDC refused it, muted when customs cancelled the line. The list is editable in place, so you can work straight down a consignment without opening a single form. It opens filtered to Fetched, because those are the lines that need you.

The imported-items list showing declaration date, declaration number, item sequence, HS code, quantity and a state badge per line
The Customs Declaration block on an imported item, showing task code, declaration number and date, HS code, customs status and country codes
03 · Customs declaration

The whole customs identity of the line, on the record

Open any line and the Customs Declaration block holds precisely what the ZRA holds: the task code (taskCd), the declaration number (dclNo) and date (dclDe), the item sequence, the HS code (hsCd), the customs status and both country codes — origin (orgnNatCd) and export nation (exptNatCd). Every field is read-only, because these are customs’ facts and not yours to edit. The customs status itself is the ZRA’s own imptItemSttsCd vocabulary: Unsent, Waiting, Approved or Cancelled, so you always know where a line stands before you touch it.

04 · Quantities & value

Packages, quantities and the foreign-currency invoice

The Quantities & Value block carries the package count and its unit (pkg / pkgUnitCd), the quantity and its unit (qty / qtyUnitCd), then the commercial detail: the invoice amount in foreign currency, the currency code and the exchange rate customs applied (invcFcurAmt, invcFcurCd, invcFcurExcrt). The supplier name and the clearing agent name (spplrNm / agntNm) sit alongside them. Nothing is re-derived or re-keyed — a K-denominated books figure and a USD customs invoice can be reconciled from the same record.

The Quantities and Value block showing package and quantity units, the foreign-currency amount, code and rate, plus supplier and agent
The Link and Approve block on an imported item with the Linked Product field and the item class code
05 · Link a product

Say which of your products this customs line actually is

The Link & Approve block is where the work happens: pick the product in your catalogue that this customs line corresponds to. That link is what lets the app send your own itemCd back to the ZRA, and it is why the customs line stops being an orphan and becomes stock you can invoice. The product field is editable directly in the list too, so a twenty-line consignment can be matched in one pass down the register without opening twenty forms.

06 · Item class

The UNSPSC class resolves itself, and you can override it

Every approval needs an item class (itemClsCd), and the app finds it for you through a three-step fallback: the class customs already put on the line, then the ZRA item class set on the linked product, then your company’s default item class — landing on 99012000 only if nothing else is set. The resolved value sits on the record as an editable field, so when customs classified a line differently from the way you registered the product, you decide which one goes back. No blank itemClsCd ever reaches the VSDC.

The Item Class field on an imported item, resolved from the customs line, the linked product or the company default
The Approve at ZRA button in the imported-item header above the Fetched to Approved status bar
07 · Approve at ZRA

One click converts a customs line into a registered item

Approve at ZRA posts /imports/updateImportItems with the customs identity (taskCd, dclDe, itemSeq, hsCd), the resolved item class, your product’s ZRA item code and imptItemSttsCd 3 — the ZRA’s code for an approved imported item. If the linked product has no ZRA item code yet, one is generated to the compliant pattern before the call goes out, so you never have to prepare the product first. The record walks a Fetched → Approved status bar, and the customs status on the line is updated to 3 to match what the ZRA now holds.

08 · Approve in bulk

Work down a consignment from the list

Every row in the register carries its own Approve action with a tick icon, and it disappears the moment the line is approved — so an already-approved line cannot be pushed twice by a stray click. Select the lines you have matched and approve them one after another straight from the list, without ever leaving it. Lines that are already approved are silently skipped when a selection includes them, so a bulk pass over a mixed consignment does the right thing.

The per-row Approve button on the imported-items list, hidden on lines that are already approved
An imported item with the Linked Product field empty, the state on which approval is refused until a product is chosen
09 · Guards

It refuses to send a declaration that would be rejected

Two checks run before anything reaches the VSDC. Approve a line with no product linked and the app stops with a plain message naming the line, because the ZRA needs an itemCd and there is nothing honest to send without one. And if the company’s ZRA settings are incomplete, the app names exactly what is missing — TPIN, Branch ID, Smart Invoice URL or Device Serial — rather than firing a call that will fail. Fetch is guarded the same way, so a half-configured company gets an explanation instead of an error.

10 · The VSDC answer

The response is kept, including the ones that mean success

Whatever your VSDC replies is written to the ZRA Response box on the record, which stays hidden while there is nothing to say. Two result codes are treated as success rather than failure: 921 (declared data cannot be re-received) and 994 (overlapped data) both mean the ZRA already holds this exact line, so the app converges them to Approved instead of looping on a line that is genuinely done. Anything else marks the line Failed with the VSDC’s own words, ready to fix and re-approve.

The ZRA Response box on an imported item, showing the message returned by the VSDC after approval
The imported-items register after a re-sync, with existing lines updated in place rather than duplicated
11 · Fetch twice, safely

Re-running the sync updates lines instead of duplicating them

Each imported line is identified by the combination of company, task code, declaration number and item sequence — and that combination is enforced by a database constraint, not just by good intentions. So Fetch from ZRA can be run as often as you like: a line already in the register is updated in place with whatever customs now says, and only genuinely new lines are created. Your product links and approvals survive a re-sync, which matters when a declaration is amended after you have already matched half of it.

12 · Find & triage

Search by HS code or declaration, group by status

The search bar takes the item name, the HS code, the declaration number or the supplier, so the one line a clearing agent is asking about is seconds away. One-click filters isolate Fetched, Approved or Failed, and Group By collapses the register by Status or by Declaration — group by declaration and each consignment becomes its own block with its own count, which is exactly how an importer thinks about the work. The register lives under Inventory as ZRA Imported Items.

The imported-items search bar with the Fetched, Approved and Failed filters and the Group By menu
The imported-items register, whose Fetch and Approve actions are restricted to the ZRA Manager role
13 · Roles

Who may look, and who may approve

The app uses the three roles under the ZRA Smart Invoice (Zambia) privilege that the free Base ships. A ZRA User sees the register and can read every customs line; the Fetch from ZRA and Approve actions are reserved for a ZRA Manager, and only a Manager can edit or remove a line. So a warehouse clerk can check what customs declared for a consignment without being able to tell the ZRA that an item is approved.

Implementation included

We connect you to ZRA Smart Invoice

Buying the app includes the setup: we help you register your device on the ZRA Smart Invoice Taxpayer Portal, point the connector at your VSDC (or ZRA’s hosted OSDC), run the device initialisation, validate the full flow on the ZRA sandbox, then switch you to production.

1️⃣
Register

Device on the ZRA Smart Invoice portal

2️⃣
Configure

TPIN, branch, device serial, tax bands

3️⃣
Validate

Full flow on the ZRA sandbox

4️⃣
Go live

Switch to production, declare for real

The family

One suite, sold your way

Buy only what you need on the free Base, or take the all-in-one Suite.

ZRA Base
ZRA Base
Free engine · view app
ZRA Invoicing
ZRA Invoicing
E-invoicing · view app
ZRA POS
ZRA POS
Point of Sale · view app
ZRA Stock
ZRA Stock
Stock & traders · view app
ZRA Manufacturing
ZRA Manufacturing
Manufacturing · view app
ZRA Importers
ZRA Importers
Imports · current
ZRA Pro
ZRA Pro
Control tower · view app
ZRA Suite
ZRA Suite
All-in-one · view app

Frequently asked

What does this need to run?

The free ZRA Smart Invoice Base (your VSDC connection, the TPIN and branch identity and the submission engine) and the ZRA Smart Invoice Stock app, which supplies the product-level ZRA item identity this app links your customs lines to.

Where do the imported lines come from?

From your own VSDC. Fetch from ZRA calls /imports/selectImportItems with your TPIN and branch, and the VSDC returns the goods declared at customs under that TPIN. Nothing is typed in by hand and no third-party service sits in between.

What does Approve actually change at the ZRA?

It posts /imports/updateImportItems with imptItemSttsCd 3, linking the customs line to your item code and its UNSPSC item class. That is what converts a customs-declared good into a registered ZRA item you can put on a Smart Invoice.

What if I fetch the same consignment twice?

Nothing breaks. Lines are keyed on company, task code, declaration number and item sequence — enforced in the database — so a re-fetch updates the existing rows and keeps your product links and approvals.

Any limits or subscription?

None. A one-time purchase, unlimited declarations and imported lines, and free updates as the ZRA Smart Invoice specification moves.

Ready for ZRA Smart Invoice compliance?

Install now, or write to us — we set up your Smart Invoice connection with you.

reach@aminitechsolutions.com
AminiTech Solutions · Lusaka · Kampala & Nairobi · www.aminitechsolutions.com
ZRA, Smart Invoice and the Zambia Revenue Authority name are the property of the Zambia Revenue Authority and are used here only to identify the system this connector integrates with. AminiTech Solutions is an independent software vendor and is not affiliated with, or endorsed by, the ZRA.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Inventory (stock)
• Purchase (purchase)
• Discuss (mail)
• Invoicing (account)
Community Apps Dependencies Show
• ZRA Smart Invoice — Stock, Traders (Zambia)
• ZRA Smart Invoice — Base (Zambia)
Lines of code 2471
Technical Name aminitech_zra_importers
LicenseOPL-1
Websitehttps://www.aminitechsolutions.com
Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with