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-sdkpoetry
poetry add complyance-sdkconda
conda install -c complyance complyance-sdkQuick 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.