Skip to main content

CLI client for the Yuki bookkeeping SOAP API

Project description

yuki

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.2.tar.gz (54.9 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.2-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.2-py3-none-manylinux_2_28_aarch64.whl (2.5 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

yuki_cli-0.1.2-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.2.tar.gz.

File metadata

  • Download URL: yuki_cli-0.1.2.tar.gz
  • Upload date:
  • Size: 54.9 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.2.tar.gz
Algorithm Hash digest
SHA256 bdfe48a362440a4f608c3137ea878c2c033e056d7de4943da821ec193c2e2bbd
MD5 960e9d8e49dc14b02eaf9231d08d7a78
BLAKE2b-256 5fd3a8c2b7d5d94ea514a96180aa42b1ecf63db1a478c69e485890b11a80172c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yuki_cli-0.1.2-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 10364e63bb8702cf4d1e2a9e32f543e81fd1601a58ad160fa050f31fbe4be746
MD5 991dcedfbfabf0286d8cde102fe0322b
BLAKE2b-256 1d14bfa0b8ca2c7f9701dcbbbe28e4f1188b294a5c610cb65592ad503c00dafe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yuki_cli-0.1.2-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 477efee96f06b52b0ea11263f3c4ac2e83b1d453e5a7ed4db5b2c5d694aa6ceb
MD5 3ecbfe29b68ec4fc7704dbee95a05797
BLAKE2b-256 a91e48dc7cfd95b3292485697cc45f9c66080b6260924c850cb6329f24e00228

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yuki_cli-0.1.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e94e6214810139d5119bf2bae66f1a7911ab0908ee8e59541d66f4d373e33b04
MD5 6e932eba53b3ea9555b8de653e64edb3
BLAKE2b-256 e029499aa12f5cc9ac98eb81be4f61bada26a0d214f57b17617577561794e14f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yuki_cli-0.1.2-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a8788e6d3e9b5f25bf3b765d2b913cd6c8ba16af0d02b982f40e31edbc27a856
MD5 68d874cda0a86a7ef8c0e294fdab2e4e
BLAKE2b-256 cff859015261b7f4f51a9c17e2489a1991a886d7cef685daf3f2402cda3c17f9

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