Skip to main content

A Python wrapper for the WeFact API

Project description

WeFact Python Wrapper

PyPI version GitHub release (latest by date) Tests codecov Python Version

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

Zero dependencies beyond requests. Clean, lightweight, and production-ready.

Maintained by zzinnovate and used in production. 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

  • Zero dependencies - Only requests, nothing else
  • 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.0.tar.gz (64.1 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.0-py3-none-any.whl (70.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: wefact_python-1.0.0.tar.gz
  • Upload date:
  • Size: 64.1 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.0.tar.gz
Algorithm Hash digest
SHA256 45de11a7c453318ea31f9e8a51584a103ccdf3d60fbe30da8bbc8f2d307f0ef9
MD5 dc6accf4e3ee956817c62b830f86c698
BLAKE2b-256 ada60aa163a5134d1fb0ade3c208b55f67edf08df103387d717ee7f5e454b925

See more details on using hashes here.

Provenance

The following attestation bundles were made for wefact_python-1.0.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: wefact_python-1.0.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e6ac006dbe5814c6e88f9c3e4df4478f7352a5d62188716930df44eec09f4345
MD5 1498086b64345c88f559fb22087b87a4
BLAKE2b-256 15c543cc57f22840ef5ad376b4368d74e85e9a3126f9fd9cd8d78be6d64825cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for wefact_python-1.0.0-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