Install
openclaw skills install smartbill-invoicingIssue SmartBill invoices through the SmartBill.ro API with local automation. Use for SmartBill tasks such as validating invoice payloads, creating invoices, listing available document series, and downloading invoice PDFs by series and number.
openclaw skills install smartbill-invoicingUse scripts/smartbill_cli.py for deterministic SmartBill API calls instead of ad-hoc HTTP snippets.
python scripts/smartbill_cli.py validate-payload --input references/invoice-example.json --show-payloadpython scripts/smartbill_cli.py create-invoice --input <invoice.json> --dry-runpython scripts/smartbill_cli.py create-invoice --input <invoice.json> --allow-finalpython scripts/smartbill_cli.py download-invoice-pdf --series-name <SERIES> --number <NO> --output <file.pdf>number string returned by SmartBill (zero-padded, e.g. "0123"). Do not strip leading zeros or convert to an integer.--output accepts absolute or relative paths and must end in .pdf.Set these before calling SmartBill:
SMARTBILL_USERNAME - SmartBill login emailSMARTBILL_TOKEN - SmartBill API tokenSMARTBILL_COMPANY_VAT_CODE - default CIF (optional but recommended)Optional overrides:
SMARTBILL_API_BASE (default: https://ws.smartbill.ro/SBORO/api)SMARTBILL_TIMEOUT_SECONDS (default: 30)SMARTBILL_RETRIES (default: 2)SMARTBILL_DEBUG (default: unset) — set to 1, true, or yes to enable request/response debug logging to stderrvalidate-payload
{ "invoice": {...} } wrapper both accepted).create-invoice
POST /invoice.--allow-final to issue a final invoice.--dry-run (prints normalized payload, no API call) and --force-draft.--debug (or set SMARTBILL_DEBUG=1) to print full request/response payloads to stderr.get-series
GET /series.download-invoice-pdf
GET /invoice/pdf using CIF + series + number.--output accepts an absolute or relative .pdf path. Relative paths are resolved against the current working directory. The resolved path must fall within an OpenClaw-allowed media root or the current working directory.The invoice payload is a flat JSON object sent directly to the SmartBill API. See references/invoice-example.json for the canonical minimal example and references/smartbill-api.md for field documentation.
Both formats are accepted as input to the CLI:
{ "companyVatCode": "...", "client": {...}, ... }{ "invoice": { "companyVatCode": "...", "client": {...}, ... } }The CLI unwraps automatically and sends the invoice object directly to the API.
--dry-run first to confirm the normalized payload before hitting the API.isDraft: false) as a high-impact action requiring explicit user confirmation.client.saveToDb: false and products[].saveToDb: false to avoid persisting test data.number verbatim as returned — it is zero-padded (e.g. "0123") and must never be stripped of leading zeros or cast to an integer.references/smartbill-api.md for payload field reference, endpoint mapping, and auth/rate-limit notes.references/invoice-example.json as the canonical starting payload template.