Complyance Logo

Complyance Python SDK

Production ready Python SDK with comprehensive e-invoicing support for multiple countries including UAE, Germany, Saudi Arabia, Malaysia, and Belgium. Built for real-world e-invoice applications.

Feature Summary

  • Multi-Country Support - UAE, Germany, KSA, Malaysia, Belgium
  • Type Hints - Full type annotation support
  • Async Support - asyncio integration
  • Python 3.8+ - Modern Python compatibility

Installation

pip

pip install complyance-sdk

poetry

poetry add complyance-sdk

conda

conda install -c complyance complyance-sdk

Quick Start

Initialize the SDK

from complyance import ComplyanceClient

client = ComplyanceClient(
    api_key='your-api-key',
    base_url='https://api.complyance.io'
)

Submit an Invoice

from complyance.models import Invoice, Party, LineItem, TaxId

invoice = Invoice(
    document_type='Invoice',
    document_number='INV-001',
    issue_date='2024-01-01',
    currency='SAR',
    seller=Party(
        name='Example Company',
        tax_ids=[
            TaxId(type='VAT', value='300000000000003')
        ]
    ),
    buyer=Party(
        name='Customer Company'
    ),
    line_items=[
        LineItem(
            description='Product',
            quantity=1,
            unit_price=100.00,
            tax_rate=15
        )
    ]
)

result = client.submit_invoice(invoice, country='SA')
print(f"Invoice submitted: {result.invoice_id}")

Field Mapping Reference

For a comprehensive understanding of all available fields, validation rules, and country-specific requirements, refer to our detailed Field Mapping Payload Reference.

This reference provides:

  • Complete field documentation for all supported countries (SA, MY, BE, DE, AE)
  • Country-specific requirements and compliance rules
  • Field descriptions with examples and validation rules
  • Required vs Optional field indicators

Review this reference to ensure your payload structure meets all regulatory requirements for your target country.

Configuration

Environment Variables

export COMPLYANCE_API_KEY="your-api-key"
export COMPLYANCE_BASE_URL="https://api.complyance.io"

Configuration File

# config.py
COMPLYANCE_CONFIG = {
    'api_key': 'your-api-key',
    'base_url': 'https://api.complyance.io',
    'timeout': 30,
    'retries': 3
}

Features

KSA (Saudi Arabia) - ZATCA Compliance

from complyance.models import KSAInvoice, KSAExtensions

ksa_invoice = KSAInvoice(
    document_type='Standard',
    document_number='INV-001',
    # ... standard fields
    extensions=KSAExtensions(
        sa_digital={
            'icv': '1',
            'pih': 'NWZlY2ViNjZmZmM4NmYzOGQ5NTI3ODZjNmQ2OTZjNzljMmRiYzIzOWRkNGU5MWI0NjcyOWQ3M2EyN2ZiNTdlOQ==',
            'qr_code': True
        }
    )
)

result = client.submit_invoice(ksa_invoice, country='SA')

UAE - FTA PINT Compliance

from complyance.models import UAEInvoice, UAEExtensions

uae_invoice = UAEInvoice(
    document_type='Tax Invoice',
    # ... standard fields
    extensions=UAEExtensions(
        ae_identification={
            'trn': '100000000000003',
            'uuid': 'unique-uuid-here'
        }
    )
)

result = client.submit_invoice(uae_invoice, country='AE')

Malaysia - MyInvois Integration

from complyance.models import MalaysiaInvoice, MalaysiaExtensions

malaysia_invoice = MalaysiaInvoice(
    document_type='Invoice',
    # ... standard fields
    extensions=MalaysiaExtensions(
        my_identification={
            'software_provider_id': 'SP-12345',
            'document_id': 'DOC-001'
        },
        my_classification={
            'category': '001',
            'product_service_code': '12345'
        }
    )
)

result = client.submit_invoice(malaysia_invoice, country='MY')

Async Support

import asyncio
from complyance import AsyncComplyanceClient

async def submit_invoice_async():
    async with AsyncComplyanceClient(api_key='your-api-key') as client:
        result = await client.submit_invoice(invoice, country='SA')
        print(f"Invoice submitted: {result.invoice_id}")

asyncio.run(submit_invoice_async())

Error Handling

from complyance.exceptions import ValidationError, ComplyanceAPIError

try:
    result = client.submit_invoice(invoice, country='SA')
    print(f"Success: {result.invoice_id}")
except ValidationError as e:
    print(f"Validation Error: {e.message}")
    for error in e.validation_errors:
        print(f"- {error['field']}: {error['message']}")
except ComplyanceAPIError as e:
    print(f"API Error: {e.status_code} - {e.message}")
except Exception as e:
    print(f"Unexpected error: {e}")

Django Integration

# settings.py
COMPLYANCE_API_KEY = 'your-api-key'
COMPLYANCE_BASE_URL = 'https://api.complyance.io'

# views.py
from django.http import JsonResponse
from complyance import ComplyanceClient
from django.conf import settings

def submit_invoice(request):
    client = ComplyanceClient(
        api_key=settings.COMPLYANCE_API_KEY,
        base_url=settings.COMPLYANCE_BASE_URL
    )
    
    result = client.submit_invoice(invoice, country='SA')
    return JsonResponse({'invoice_id': result.invoice_id})

Flask Integration

from flask import Flask, request, jsonify
from complyance import ComplyanceClient
import os

app = Flask(__name__)
client = ComplyanceClient(api_key=os.getenv('COMPLYANCE_API_KEY'))

@app.route('/submit-invoice', methods=['POST'])
def submit_invoice():
    invoice_data = request.json
    result = client.submit_invoice(invoice_data, country='SA')
    return jsonify({'invoice_id': result.invoice_id})

Support

  • Contact: Contact Complyance for E-Invoicing - Complyance has helped over 1000+ organizations simplify global e-invoicing. Let us help you understand how Complyance can work for you.