Skip to content

kobanInvoice Ninja from the terminal

A small, scriptable Rust CLI and client library for Invoice Ninja, built for humans at a terminal and AI agents that need stable JSON, explicit errors, and shell completions.

At a glance

sh
# Point koban at the public Invoice Ninja demo API.
export INVOICE_NINJA_BASE_URL="https://demo.invoiceninja.com"
export INVOICE_NINJA_API_TOKEN="TOKEN"

koban clients list --per-page 20
koban invoices list --filter status_id=gt:1 --sort 'date|desc' --all
koban invoices show <id> --output json | jq '.data.balance'

# Writes are guarded: preview first, then confirm.
koban invoices create --client-id <id> \
  --line-item product_key=Consulting,quantity=1,cost=100 --dry-run
koban invoices action <id> --action mark_paid --yes

Use it as a library from any Rust app:

rust
use koban::{ApiClient, Config};

#[tokio::main]
async fn main() -> koban::Result<()> {
    let client = ApiClient::new(Config::from_env()?);
    for invoice in client.invoices().list().await? {
        println!("{} -> {}", invoice.number, invoice.balance);
    }
    Ok(())
}

Track your work automatically with AI agents

Install koban as a skill and your coding agent drives it for you:

sh
koban skill install --target all

Now an agent can log billable tasks and time, draft and send invoices, record expenses, and report on outstanding balances in Invoice Ninja as it works — using koban's stable JSON and its --dry-run/--yes safety gates so every write is previewed first. Works with Claude Code, OpenAI Codex CLI, pi, Cursor, Claude Desktop, and any AGENTS.md-aware tool.

Read the agent skill guide →

New here? Start with the Installation and Quickstart guides, or jump to the Commands overview.

Released under the MIT License.