Metadata-Version: 2.4
Name: ura-efris-sdk
Version: 0.1.1
Summary: Python SDK for Uganda Revenue Authority (URA) EFRIS API
Author-email: Emmanuel Bartile <emmanuel@paybill.co.ke>
Maintainer-email: Emmanuel Bartile <emmanuel@paybill.co.ke>
License: MIT
Project-URL: Homepage, https://github.com/paybillke/ura-efris-python-sdk
Project-URL: Documentation, https://paybill.ke/docs/ura-efris
Project-URL: Repository, https://github.com/paybillke/ura-efris-python-sdk.git
Project-URL: Issues, https://github.com/paybillke/ura-efris-python-sdk/issues
Project-URL: Changelog, https://paybill.ke/docs/ura-efris/change-log
Keywords: URA,EFRIS,Uganda,Tax,eInvoicing,Fiscal,SDK,API
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Office/Business :: Financial :: Accounting
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic<3.0,>=2.0
Requires-Dist: cryptography<45.0,>=40.0
Requires-Dist: pycryptodome<4.0,>=3.21
Requires-Dist: pytz>=2023.3
Requires-Dist: requests<3.0,>=2.31.0
Provides-Extra: dev
Requires-Dist: pytest>=7.4.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: responses>=0.23.0; extra == "dev"
Requires-Dist: black>=23.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Requires-Dist: mypy>=1.5.0; extra == "dev"
Requires-Dist: pre-commit>=3.4.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=7.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=1.3; extra == "docs"
Requires-Dist: myst-parser>=2.0; extra == "docs"
Provides-Extra: async
Requires-Dist: httpx>=0.25.0; extra == "async"
Requires-Dist: aiofiles>=23.0; extra == "async"
Provides-Extra: all
Requires-Dist: ura-efris-sdk[dev,docs]; extra == "all"
Dynamic: license-file

<p align="center">
  <a href="https://paybill.ke" target="_blank">
    <picture>
      <source media="(prefers-color-scheme: dark)" srcset="https://paybill.ke/logo-wordmark--dark.png">
      <img src="https://paybill.ke/logo-wordmark--light.png" width="180" alt="Paybill Kenya Logo">
    </picture>
  </a>
</p>

# URA EFRIS System-to-System Integration SDK (Python)

![Python](https://img.shields.io/badge/Python-3.9%2B-blue?logo=python)
![Pydantic](https://img.shields.io/badge/Pydantic-v2-3a56c5?logo=pydantic)
![License](https://img.shields.io/badge/License-MIT-green)
![URA EFRIS](https://img.shields.io/badge/URA-EFRIS-2E8B57)
![Postman Compliant](https://img.shields.io/badge/Postman-Compliant-FF6C37?logo=postman)
![Pytest Tested](https://img.shields.io/badge/Tests-Pytest-3776AB?logo=pytest)

A production-ready **Python SDK** for integrating with the Uganda Revenue Authority (URA) **EFRIS** (Electronic Fiscal Receipting and Invoicing System) via the **System-to-System (S2S)** interface.  
Built in accordance with official URA EFRIS technical specifications, encryption standards, device registration requirements, and offline mode enablement guidelines.

---

## Official URA EFRIS Documentation

📄 **Step-by-Step Guide – System-to-System Integration (v1.1)**  
Issue Date: 19/07/2022  
https://efris.ura.go.ug/site/manualDownload/downloadManualById?id=569326253531712032&language=

📄 **Offline-Mode Enabler – Hardware & Software Requirements**  
https://efris.ura.go.ug/site/manualDownload/downloadManualById?id=779571457750410225&language=

📄 **Offline-Mode Enabler – Installation Guide**  
https://efris.ura.go.ug/site/manualDownload/downloadManualById?id=537308370255165978&language=

📄 **Interface Requirements for Information Management and Fiscalisation**  
https://efris.ura.go.ug/site/manualDownload/downloadManualById?id=173517733139059055&language=

📄 **EFRIS Thumbprint & Device Registration Guide**  
https://efris.ura.go.ug/site/manualDownload/downloadManualById?id=102729662704726203&language=

---

> ⚠️ **Important Notice**  
> This SDK implements the **URA EFRIS System-to-System (S2S)** integration model.  
> Proper onboarding, certificate provisioning, and device registration with URA are required before production use.

---

## Features

✅ System-to-System (S2S) API integration  
✅ Payload encryption & digital signature support  
✅ URA-compliant request/response models  
✅ Device & taxpayer authentication helpers  
✅ Timezone-safe timestamp handling (EAT / UTC)  
✅ Offline Mode Enabler compatibility  
✅ Strong typing with **Pydantic v2**  
✅ Production-grade HTTP client  

---

## Installation

```bash
pip install ura-efris-sdk
````

---

## Author

**Bartile Emmanuel**
📧 [support@paybill.dev](mailto:support@paybill.dev) | 📱 +254 757 807 150
*Lead Developer, Paybill Kenya*

📘 URA EFRIS Documentation (Paybill):
[https://paybill.ke/docs/ura-efris](https://paybill.ke/docs/ura-efris)

---

## License

MIT © 2025–2026 Paybill Kenya Limited

🇺🇬 **Supporting Digital Tax Compliance in Uganda**
🇰🇪 Proudly engineered by Paybill Kenya Limited
