Skip to main content

URA EFRIS System-to-System API SDKs

The URA EFRIS SDKs are a family of production-ready, community-maintained SDKs designed to simplify integration with the Uganda Revenue Authority (URA) EFRIS System-to-System API across multiple programming languages.

These SDKs abstract the complexity of the EFRIS protocol—including JSON payload structure, encryption (RSA/AES), signature validation, token lifecycle management, and URA-specific business rules—allowing developers to focus on business logic, not API intricacies.


Supported Languages & Installation

Community-maintained SDKs are available for popular languages. Select your preferred language below:

PHP SDK

Install via Composer

composer require paybilldev/ura-efris-sdk

What These SDKs Solve

All SDKs are built around the same core principles derived from the official EFRIS API specification (v23.7+):

  • Strict compliance with EFRIS JSON envelope structure (data, globalInfo, returnStateInfo)
  • Automatic encryption/decryption handling for RSA/AES payloads and BASE64 encoding
  • Signature generation & validation for online mode transactions
  • Token & session management with T102/T103 initialization flows
  • Payload validation against 300+ business rules before requests reach URA
  • ReturnCode handling with human-readable error messages (e.g., 3240: Buyer's status in deemed/exempt project is abnormal)
  • Dictionary synchronization (T115) for units of measure, currencies, tax categories, and commodity codes
  • Sandbox & production environment support via configurable endpoints

This ensures predictable, auditable behavior regardless of your technology stack.


Who This Is For

These SDKs are ideal for:

  • ERP & accounting systems (SAP, Oracle, QuickBooks integrations)
  • Custom POS/e-commerce platforms requiring fiscal compliance
  • Middleware services aggregating transactions from multiple sources
  • Logistics & export systems generating customs-compliant invoices (SAD, HS codes)
  • Fuel station management systems (EDC integration via T162–T172)
  • Businesses operating across multiple URA-registered branches

Design Philosophy

  • 🔹 One SDK method = one EFRIS interface code (e.g., uploadInvoice()T109)
  • 🔹 No silent data mutation—all transformations are explicit and documented
  • 🔹 Validation errors surface early—before network calls, with field-level guidance
  • 🔹 Timezone & format awareness—handles yyyy-MM-dd HH:mm:ssdd/MM/yyyy HH:mm:ss conversions
  • 🔹 Branch & agent-aware—supports branchId, agentType, and principal/agent workflows

This aligns SDK behavior with URA audit expectations and simplifies troubleshooting during certification.


Key Configuration Requirements

Before using the SDKs, ensure you have:

RequirementDescription
TINValid Taxpayer Identification Number (10–20 digits)
DeviceNo (DSN)Registered device serial number or virtual device ID
White-Box KeysObtained via T102 for online-mode encryption
Commodity SetupGoods registered via T130 with valid goodsCategoryId
Branch RegistrationAll issuing branches pre-registered with URA
Network AccessOutbound HTTPS to efrisws.ura.go.ug or efristest.ura.go.ug

Disclaimer

These SDKs are not officially endorsed by URA.
The Uganda Revenue Authority may update API behavior, validation rules, or interface specifications without notice.
Always:

  1. Test thoroughly in the URA sandbox environment
  2. Monitor the EFRIS Portal for announcements
  3. Validate requirements with your URA relationship manager before production deployment