Skip to main content

A Python wrapper for the WeFact API

Project description

WeFact Python Wrapper

PyPI version Tests codecov Python Version

An unofficial, batteries-included Python client for the WeFact API. Pragmatic, typed where it counts, and intentionally minimal on magic.

What is WeFact? WeFact is a Dutch invoicing and accounting platform. Create invoices and quotes, process supplier invoices, and maintain real-time insight into your administration.

Maintained by zzinnovate. Open source, community-friendly, and actively maintained. Not affiliated with WeFact. For the upstream API, see the official WeFact API documentation.

Documentation

📖 View Full Documentation →

Complete guides and API reference:

Requirements

  • Python 3.11+

Install

# Basic installation (library only)
pip install wefact-python

# With CLI testing tool
pip install "wefact-python[cli]"

# For development (includes CLI, testing, and docs)
pip install -e ".[all]"

Quick start

import os
from wefact import WeFact

client = WeFact(api_key=os.getenv('WEFACT_API_KEY'))

# List your latest invoices
result = client.invoices.list(limit=25)
print(result)

Features

  • Minimal dependencies - Only requests for HTTP calls
  • Type hints - Better IDE support and fewer runtime errors
  • Direct API mapping - Mirrors WeFact's controller/action structure
  • Error handling - Clear exceptions for common failure modes
  • Attachment support - Base64 encoding/decoding utilities built-in
  • Production-tested - Used by zzinnovate in client projects

Resources

Complete coverage of all 13 WeFact API resources:

Invoices • Credit Invoices • Debtors • Products • Creditors • Groups • Subscriptions • Quotes • Interactions • Tasks • Transactions • Cost Categories • Settings

Common operations

# Show a debtor
debtor = client.debtors.show(Identifier="DB10000")

# Create an invoice
invoice = client.invoices.create(
    DebtorCode="DB10000",
    InvoiceLines=[
        {
            "Number": 1,
            "ProductCode": "P0001",
            "Description": "Service",
            "PriceExcl": 100
        }
    ],
)

# Mark invoice as paid
client.invoices.mark_as_paid(Identifier=invoice["invoice"]["Identifier"])

Contributing

Contributions are welcome. See CONTRIBUTING.md for development setup, testing, and workflow guidelines.

Security

See SECURITY.md for reporting vulnerabilities and best practices.

Credits

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wefact_python-1.0.1.tar.gz (64.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wefact_python-1.0.1-py3-none-any.whl (70.0 kB view details)

Uploaded Python 3

File details

Details for the file wefact_python-1.0.1.tar.gz.

File metadata

  • Download URL: wefact_python-1.0.1.tar.gz
  • Upload date:
  • Size: 64.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wefact_python-1.0.1.tar.gz
Algorithm Hash digest
SHA256 6306b667fe55e34e37ef69014bf45d2aa30f08d8c1c96df77760f5453250d6e4
MD5 976e6ef85e5875e585315771efc79c98
BLAKE2b-256 1a823a49f3c783144dd22dc0e39018772adf2df37a6c3104e1d3f1947852004a

See more details on using hashes here.

Provenance

The following attestation bundles were made for wefact_python-1.0.1.tar.gz:

Publisher: publish.yml on zzinnovate/wefact-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wefact_python-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: wefact_python-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 70.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for wefact_python-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0d23a9f70c0dc1f9d311db992e75d969b9265175ea82e4537578c5bcea9b20ae
MD5 d73c1c5cfd113faf191774d521f866e7
BLAKE2b-256 837930d4acf10be728b154cfc1a1a6718e7c4fda5701212df9a838af53c1fd7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for wefact_python-1.0.1-py3-none-any.whl:

Publisher: publish.yml on zzinnovate/wefact-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page