kibble invoice command creates a USDC invoice, emails it to your vendor, and opens the invoice URL in your browser. You can walk through the guided prompt flow interactively, or pipe a JSON payload to stdin for fully automated invoice creation in scripts, CI pipelines, and agent workflows.
Interactive flow
Runnpx create-kibble with no flags, complete the initial prompts for your business name and email, then select kibble invoice from the action menu.
Enter your business name and email
The CLI prompts for your business name and email address. These become the merchant details on the invoice.
Enter your merchant address
Enter your business’s mailing address (e.g.
123 Main St, San Francisco, CA). This appears on the invoice as the bill-from address.Enter vendor details
The CLI prompts for your vendor’s name, email address, and optionally their mailing address.
- Vendor name (required) — The company or person you’re billing.
- Vendor email (required) — The address the invoice PDF is emailed to.
- Vendor address (optional) — Appears as the bill-to address on the invoice.
Add line items
Add one or more line items. For each item, enter:
- Description — A short label for the product or service (e.g.
Consulting). - Quantity — A whole number (e.g.
10). - Unit price — The per-unit USDC price as a decimal string (e.g.
150.00).
Add optional notes
Enter any additional notes to appear on the invoice (e.g.
Net 30 or Thank you for your business).Choose your wallet type
Select Kibble-managed wallet to have Kibble provision a deposit address, or BYO to receive payment at your own USDC address on Base.
Output
After a successfulkibble invoice, the CLI prints:
Programmatic use with —stdin
Pass--stdin to pipe a JSON payload directly to the CLI. The CLI reads from stdin, calls the API, and prints the full response as JSON to stdout — no prompts, no browser window.
Full invoice JSON payload
All fields accepted by--stdin:
"send_now": true to email the invoice to your vendor immediately. Set "wallet_type" to "privy" for a managed deposit address or "byo" to use your own wallet.
Dry-run validation with —stdin —dry-run
Add--dry-run alongside --stdin to validate your payload without submitting it to the API. The CLI parses the JSON, checks it against the invoice schema, and echoes the validated payload back to stdout. No invoice is created and no email is sent.
Line items
Each object inline_items requires three fields:
| Field | Type | Description |
|---|---|---|
description | string | Label for the product or service. |
quantity | number | Whole-number quantity. |
unit_price | string | Per-unit USDC amount as a decimal string (e.g. "150.00"). |
quantity × unit_price across all items.
Append-only invoice fields
Once an invoice is created, several fields are set once and never updated:merchant_name_snapshot— The merchant name recorded at invoice creation time.merchant_address_snapshot— The merchant address recorded at invoice creation time.invoice_number— The unique invoice number assigned by Kibble (e.g.INV-2026-0042).