Skip to main content

CLI client for the Yuki bookkeeping SOAP API

Project description

yuki

codecov

CLI client for the Yuki bookkeeping SOAP API.

Yuki is a Dutch bookkeeping SaaS used for accounting, VAT returns, and document archiving. This CLI lets you query your administration, find missing invoices, and upload documents — from the terminal or as part of automated workflows.

Note: This project is not affiliated with or endorsed by Yuki Software.

Install

cargo install yuki-cli

Or via pip:

pip install yuki-cli

Both install the yuki binary.

Setup

  1. Get a Yuki API key from your Yuki portal under Settings > API keys.
  2. Run yuki init and paste your key when prompted. The CLI discovers your administrations and writes the config to ~/.config/yuki/config.toml.
yuki init

Non-interactive (for scripting):

yuki init --api-key <key> --default-admin <name>

To rotate your API key later:

yuki init --api-key <new-key>

Quick start: find missing invoices

The main workflow is finding bank transactions that don't have a matching invoice in Yuki:

# Show bank debits without matching invoices for Q1 2025
yuki check unmatched --period 2025-Q1

This cross-references bank transactions against outstanding creditor items, booked archive documents, and known counterparty names. The output shows unmatched transactions with their date, amount, counterparty, and description.

For each unmatched item, you can check if the invoice is already in the archive, and upload it if not:

# Check if an invoice already exists
yuki documents exists --amount 7.28 --date 2025-03

# Upload an invoice (Yuki auto-sorts it)
yuki upload file invoice.pdf

# Or upload to a specific folder with metadata
yuki upload file invoice.pdf --folder inkoop --amount 7.28 --remarks "Hetzner hosting"

Commands

Querying

yuki vat returns                          # List all VAT return periods
yuki vat returns --year 2025              # Filter by year
yuki vat codes                            # List active VAT codes

yuki invoices list --invoice-type purchase # Outstanding purchase invoices
yuki invoices show <transaction-id>       # Transaction details
yuki invoices document <transaction-id>   # Document linked to a transaction

yuki contacts search "Hetzner"            # Search contacts
yuki contacts list                        # List all suppliers and customers

yuki accounts balance --account 11001 --period 2025-Q1
yuki accounts transactions --account 11001 --period 2025-Q1
yuki accounts scheme                      # Chart of accounts (GL scheme)
yuki accounts revenue --period 2025-Q1    # Net revenue for a period
yuki accounts start-balance --year 2025   # Opening balances per GL account

yuki projects list                        # List all projects
yuki projects balance <code> --period 2025  # Project balance

yuki documents list --folder inkoop       # List documents in a folder
yuki documents search "factuur"           # Full-text search
yuki documents exists --amount 7.28 --date 2025-03  # Check if invoice exists

yuki admin list                           # List administrations
yuki admin switch <name>                  # Change default administration

Gap analysis

yuki check btw 2025-Q4                    # VAT period check: outstanding items
yuki check unmatched --period 2026-Q1     # Bank debits without matching invoices
yuki check outstanding <reference>        # Check if a reference is still outstanding

Uploading

yuki upload file invoice.pdf                           # Upload to uitzoeken (auto-sorted)
yuki upload file invoice.pdf --folder inkoop            # Upload to specific folder
yuki upload file invoice.pdf --amount 114.27 \
  --category 45100 --payment-method 4 \
  --remarks "Hosting"                                   # Upload with metadata

yuki upload categories                                  # List cost category IDs
yuki upload payment-methods                             # List payment method IDs

Global flags

Flag Description
--admin <name> Override default administration
--format table|json Output format (auto-detects TTY)
--quiet Suppress informational output

Periods

The --period flag accepts:

  • 2025 — full year
  • 2025-Q1 — quarter
  • 2025-03 — single month

Agent use

When stdout is not a TTY (piped or called by an agent), output defaults to JSON. Errors are also structured JSON on stderr. Exit codes: 0 success, 1 general error, 2 auth error, 3 not found, 4 rate limited.

The documents exists command exits with code 3 when no matching document is found, making it easy to use in scripts and agent workflows.

Config

~/.config/yuki/config.toml:

api_key = "your-api-key"
default_admin = "company_name"

# Skip these counterparties in `check unmatched` (case-insensitive substring match)
unmatched_ignore = [
  "Belastingdienst",
  "ING bankkosten",
]

[administrations.company_name]
domain_id = "domain-uuid"
admin_id = "admin-uuid"

Development

make check    # Run clippy + fmt check + tests
make build    # Debug build
make release  # Release build
make fmt      # Format code
make install  # Install to ~/.cargo/bin/

License

MIT

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

yuki_cli-0.1.4.tar.gz (56.7 kB view details)

Uploaded Source

Built Distributions

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

yuki_cli-0.1.4-py3-none-manylinux_2_28_x86_64.whl (2.7 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

yuki_cli-0.1.4-py3-none-manylinux_2_28_aarch64.whl (2.5 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

yuki_cli-0.1.4-py3-none-macosx_11_0_arm64.whl (2.5 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

yuki_cli-0.1.4-py3-none-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file yuki_cli-0.1.4.tar.gz.

File metadata

  • Download URL: yuki_cli-0.1.4.tar.gz
  • Upload date:
  • Size: 56.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for yuki_cli-0.1.4.tar.gz
Algorithm Hash digest
SHA256 84a461e03d9b85430045d15bdf7ff9ab792b44efc5e489553b7ce717fef06a79
MD5 9a04314ebfde5d74553943e680cec5ca
BLAKE2b-256 3e0ee3b2dfe0d491c8317867a91ba8bf8d9a81021d0fc74d595b6595ff2af5a0

See more details on using hashes here.

File details

Details for the file yuki_cli-0.1.4-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for yuki_cli-0.1.4-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6eb3b2f44b8ef59424d13df8b09747ef171e890a266e76bfab202f9263e5fd5c
MD5 0d59e88927039843aad527cd728328cb
BLAKE2b-256 09f2445c34173beb5c88c39f27fcb009d07ba2e1dd78072bc1e66d6d5cdd9082

See more details on using hashes here.

File details

Details for the file yuki_cli-0.1.4-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for yuki_cli-0.1.4-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 92b6193002f136272150f2915dd07dbaa704c1571e337d775802c64b778bb57b
MD5 01b0fd25320b4753feccca8a26d75a08
BLAKE2b-256 90e8dc8d0f3a7d39193cfb4a5dbffb3d24beadafc6d42f8cbac9b8f8b3f7b881

See more details on using hashes here.

File details

Details for the file yuki_cli-0.1.4-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for yuki_cli-0.1.4-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a1a1e23fa43536a0b7eba8081d2a91d7c2863b03f5138988e6063593cb63b44b
MD5 4480a48fcf642c7d088556155b9723b0
BLAKE2b-256 fb5244fdcdad73172c5225f7a5df07fb56fba856d833eb0753bd21f45806ca0f

See more details on using hashes here.

File details

Details for the file yuki_cli-0.1.4-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for yuki_cli-0.1.4-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ec9a303c303cbec19bed59cb4e83ae7179e51a80e3b2a583ffbd05d8f59cd69c
MD5 9b099215cba288a4e4d834319e8cb8ab
BLAKE2b-256 34caa57e8fd1872da25882c775f8d53fc64d8bc1d9f2b71862040ab80ded374d

See more details on using hashes here.

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