| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Invoicing (account) |
| Lines of code | 1958 |
| Technical Name |
l10n_zm_smart_invoice_import_export |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Invoicing (account) |
| Lines of code | 1958 |
| Technical Name |
l10n_zm_smart_invoice_import_export |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
Zambia ZRA Smart Invoice â Import, Export & Stock Movement
Register imports, exports and stock-IO movements in the ZRA Smart Invoice (VSDC) as mandated â straight from Odoo, with your own VSDC credentials (BYOK)
Why this module
The Zambia Revenue Authority (ZRA) Smart Invoice mandates that every stock movement is reflected in the taxpayer's electronic ledger. When goods are imported, the customs-declared items must be matched to stock and approved; when goods are exported, the sale must be registered as a zero-rated transaction with the destination country and customs reference; and every physical in/out movement must be reported with the correct movement reason. This module covers all three â the import, export and stock-IO sides of Smart Invoice â for the community edition of Odoo.
It builds the exact VSDC JSON payloads ZRA's gateway accepts, recomputes the VAT at the published 16% standard rate, validates each transaction against ZRA's business rules locally, and submits to your own VSDC using your own device credentials.
Key features
Import-item registration
Capture a customs declaration (ASYCUDA reference + VSDC task code), match
each declared import item to an Odoo product, set the HS / tariff code
and the ZRA item classification, then approve (status 2) or cancel
(status 3) and register the decision to ZRA via
/imports/updateImportItems.
Zero-rated export sales
Flag a customer invoice as an export, set the destination country and
export declaration reference, and register a zero-rated
(taxTyCd C1) sale to ZRA via
/trnsSales/saveSales with the full A..E VAT-band breakdown.
Stock-IO movement reporting
Report any physical movement â import in, export out, sale return or
adjustment â with the correct published sarTyCd reason via
/stock/saveStockItems, pre-filled directly from a stock
picking.
Local validation
Every transaction is checked before submission: 10-digit TPIN, 6-10 digit HS code, present customs reference, destination country that is not Zambia, legal tax-type codes and per-band VAT reconciliation â so a malformed payload is caught locally rather than rejected by the VSDC.
BYOK transport
We do not operate a VSDC or hold a ZRA account on your behalf and we are not a certified invoicing-system vendor. The payloads are posted to your own locally-deployed VSDC, authenticated with your own TPIN, branch and device serial. Nothing is sent anywhere else.
Full audit trail
Every request and response body is stored in a transport log, the built payload is downloadable as JSON, and the document chatter tracks each status change.
Published ZRA codes implemented
| Area | Codes |
|---|---|
| Standard VAT rate | 16% (taxTyCd A / B) |
| Export / zero-rated | C1 Exports, C2 Zero-rating (LPO), C3 Zero-rated by nature â 0% |
| Exempt | D â no VAT |
| Import item status | 1 Pending, 2 Approved, 3 Cancelled |
| Stock movement reason (sarTyCd) | 02 Import, 01 Purchase, 11 Sale/Export, 03 Sale return, 06 Stock move, 05/16 Adjustment |
| Receipt type | S Sale, R Refund |
| Sales status | 02 Approved, 05 Cancelled |
| TPIN / Branch | 10-digit TPIN, 3-digit branch (000 = head office) |
How it works
- Set your company ZRA TPIN and branch ID, and configure your VSDC connection (base URL + device serial).
- Imports: create an Import Declaration, add the customs items, match them to products with HS codes, validate and register.
- Exports: mark a customer invoice as an export, set the destination country and declaration reference, validate and register.
- Stock movements: open the Register Stock Movement wizard (or launch it from a stock picking), pick the movement reason and submit.
- Review the transport log and download the JSON payloads for your records.
Requirements & compatibility
Built for Odoo Community 18 and 19. Depends only on the community
account, stock and mail modules.
Requires the Python requests library (bundled with Odoo)
and a locally-deployed ZRA VSDC issued to your business.
Screenshots
Vsdc Connections
Import Declarations
Transport Log
Register Stock Movement
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