Skip to main content

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

# Or run without installing
uvx yuki-cli --help

PyPI and Cargo installations provide both yuki and yuki-cli as executable names.

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

Releasing

Vership owns versioning, changelog generation, release commits, and tags. See the release runbook for the verified workflow and recovery policy.

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.11.tar.gz (85.0 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.11-py3-none-manylinux_2_28_x86_64.whl (3.0 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

yuki_cli-0.1.11-py3-none-manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

yuki_cli-0.1.11-py3-none-macosx_11_0_arm64.whl (2.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

yuki_cli-0.1.11-py3-none-macosx_10_12_x86_64.whl (2.9 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for yuki_cli-0.1.11.tar.gz
Algorithm Hash digest
SHA256 4e04c36d8504a0fe9f11c8bcbfa24946e1a10c083db092884d03f70a408bf941
MD5 70f804bcafe25fee882b8a3e27ffe1bb
BLAKE2b-256 7d8d4e498b10fa2b2f84d5b222816412965e62014797ab82a4260ba19500088e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yuki_cli-0.1.11-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fce24cc6b1b164c2619a43de288bab3be2f20f09a59a8c3f07d8ca9a2870878e
MD5 166b3e2be6ae9b4359181e5058b05220
BLAKE2b-256 661396c5ecf27cb8a557d8394faebc5d0aa6c3194aaf137a2b7fbd9a48a07b60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yuki_cli-0.1.11-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d1510820fa31f41a790d68086b267192343fd009de7bb3642e2d9b18d87f5bf2
MD5 1328c8d96566fd66fd823f5d75369722
BLAKE2b-256 2d420083dd9e6a4b33e011f5ab4639d365ec6e468b1045f4f7124909239ff25f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yuki_cli-0.1.11-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dbe01c7f90061ac055aba4832f0c60a2ef0a78acc64fc16b81a7b41c229d2a0b
MD5 ab6c88af04c11f57a54cf61f14a2b937
BLAKE2b-256 bfc607c6ed5b3a85b4f34bf755a68ce31387950ae6883e37a6f1382ec6c61d87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yuki_cli-0.1.11-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 51cac72365c18c597d0da374434dcec0ca1ae88fb90a5e4ea0495105caa38ae3
MD5 8b2461e38ed4531db9394f3cd8ef4f2e
BLAKE2b-256 aaf61c71e8caee6a245abb06e49746f5ed74c6c344efbca5c3b2d605b345c464

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.12

5 files

This release

0.1.11 This release

5 files

0.1.10

5 files

0.1.8

5 files

0.1.7

5 files

0.1.6

5 files

0.1.5

5 files

0.1.4

5 files

0.1.3

5 files

0.1.2

5 files

0.1.1

5 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page