If you invoice by code, BeeL. is your backend
Scripts, CLIs, cron jobs, GitHub Actions, webhook receivers. The BeeL. API speaks your language: REST, JSON, OpenAPI 3.0, native idempotency and typed errors. Emit invoices from the terminal in 10 lines.
7 days free · no card · Unlimited sandbox · Downloadable OpenAPI 3.0
An API built to script
When your invoicing flow is code, you need an API that doesn't demand OAuth, wizards or UIs. BeeL. integrates from curl in 30 seconds.
Downloadable OpenAPI 3.0
Complete spec at app.beel.es/api/openapi. Generate typed clients for TypeScript, Java, Python, Go or Rust with openapi-generator. The contract is the source of truth.
Official SDKs
@beel_es/sdk for Node/TypeScript with full types, automatic retries, typed errors and webhook verification. Java and Python coming soon. Pure REST always available.
Native idempotency
Every POST accepts an Idempotency-Key. If your script fails mid-way and retries, BeeL. returns the original response. Zero duplicate invoices from timeouts or crashes.
Simple Bearer auth
Authorization: Bearer beel_sk_test_... in a header and you're done. No OAuth flows, no refresh tokens. Perfect for scripts, cron jobs and CLIs where OAuth is overkill.
Two isolated environments
Keys with beel_sk_test_ hit an isolated sandbox — nothing reaches the AEAT. beel_sk_live_ keys emit real invoices. Same base URL, completely separate data.
Typed, consistent errors
Standard HTTP codes (400, 401, 404, 422, 429, 500) with structured JSON payloads. In the SDK: BeeLAuthError, BeeLNotFoundError, BeeLValidationError, BeeLRateLimitError. Catch by type.
One call from any stack
cURL, Node or Python. Same endpoint, same auth, same response. Copy, paste and adapt — or use the official SDK if you prefer types.
Sandbox examples use beel_sk_test_. Same code in production — just swap the key.
Real developer use cases
Common patterns developers implement with BeeL. day to day. Each one takes less than an hour to wire up.
- 1
CLI to invoice from the terminal
A script that reads a CSV or arguments, validates locally and emits invoices with curl or the SDK. Useful for data imports or batch-invoicing completed work.
cURL - 2
Cron job for recurring billing
A monthly cron that reads your recurring customers (retainers, SaaS) and emits invoices on the 1st of every month. Logs, Slack alerts on failure and retries with idempotency-key.
- 3
GitHub Actions on merge to main
A CI workflow that automatically invoices when you merge a PR labeled 'billable'. Commit metadata feeds the description and amount.
GitHub Actions - 4
Webhook receiver for Stripe → BeeL.
An Express/Fastify server that receives the Stripe webhook, verifies the signature and calls POST /invoices with Idempotency-Key = stripe_payment_id. And vice versa with BeeL.'s own webhooks.
Node.js - 5
Internal dashboard via GET /invoices
A custom frontend (React, Vue, Svelte) that consumes /invoices with filters by date and status to show billing, outstanding amounts and metrics without leaving your internal panel.
Node.js
