Skip to content

EInvoice Module

Christian KASSE edited this page Apr 2, 2026 · 2 revisions

E-Invoice Module

Electronic invoicing: create, normalize, submit to tax authorities, verify, and track compliance.

Accessor: client.einvoice

Available Resources

Resource Accessor Description
Invoices client.einvoice.invoices E-invoice management
Submissions client.einvoice.submissions Tax authority submissions
Verification client.einvoice.verification Invoice verification
Compliance client.einvoice.compliance Compliance records
Statistics client.einvoice.statistics E-invoice statistics

Submission Lifecycle

The submission resource has additional methods for interacting with tax authorities:

# Submit to tax authority
result = client.einvoice.submissions.submit(submission_id)

# Check submission status
status = client.einvoice.submissions.check_status(submission_id)
# Returns: "accepted", "pending", or "rejected"

Verification

# Verify by QR code
result = client.einvoice.verification.verify(qr_code="https://tax.gov/verify/ABC123")

# Verify by reference
result = client.einvoice.verification.verify(reference="EI-2026-00123", tin="123456789")

Code Examples

Create and Submit an E-Invoice

from essabu import Essabu

client = Essabu(api_key="esa_live_xxx", tenant_id="tenant-id")

# Create an e-invoice
einvoice = client.einvoice.invoices.create(
    invoice_id="inv-uuid",
    customer_tin="123456789",
    customer_name="ACME Corp",
    items=[
        {
            "description": "Consulting services",
            "quantity": 10,
            "unit_price": 150.00,
            "tax_rate": 16.0,
        },
    ],
    currency="CDF",
)

# Create a submission
submission = client.einvoice.submissions.create(
    invoice_id=einvoice["id"],
    authority="OBR",
)

# Submit to tax authority
result = client.einvoice.submissions.submit(submission["id"])

# Check status
status = client.einvoice.submissions.check_status(submission["id"])
print(status["status"])

List and Filter

invoices = client.einvoice.invoices.list(status="submitted", page_size=50)

for page in client.einvoice.invoices.list_all():
    for inv in page.data:
        print(inv["reference"], inv["status"])

Compliance

compliance = client.einvoice.compliance.list(status="compliant")
client.einvoice.compliance.create(
    period="2026-Q1",
    authority="OBR",
    total_invoices=150,
    total_amount=75000.00,
)

Statistics

stats = client.einvoice.statistics.list(
    start_date="2026-01-01",
    end_date="2026-03-31",
)
monthly = client.einvoice.statistics.retrieve("2026-03")

See Also

Clone this wiki locally