canonical: https://jentic.com/apis/envoice.in/envoice

# Envoice In Envoice API

Envoice is a small-business invoicing and billing platform that handles clients, estimates, invoices, recurring invoices, payments, items, and reporting. The API exposes 61 endpoints covering the full invoicing lifecycle: client management, estimation creation and conversion to invoice, invoice issuing and payment recording, item and tax catalogues, and webhook subscriptions for invoice activity. Suited to SaaS apps and accounting integrations that need to push invoices into Envoice or react when an invoice is paid or sent to a client.

## For AI agents

Create and manage clients, estimates, invoices, items, and payments inside the Envoice billing platform and subscribe to invoice-activity webhooks.

## Scope

Does not handle full general-ledger accounting, payroll, or payment-card acquiring - use for client, estimate, invoice, payment, and webhook management only.

## Capabilities

- List, create, update, and delete clients in the Envoice billing system
- Create and update estimates and convert an accepted estimate into an invoice
- Send estimates and invoices to clients with /sendtoclient style endpoints
- Record payments against invoices and update payment records as needed
- Manage product and service items, including their tax categories, in the Envoice catalogue
- Set up recurring invoices and update their schedule and status
- Subscribe webhooks to react to invoice activities such as send, view, or pay events

## Use cases

### SaaS Subscription Billing

A SaaS product creates a client in Envoice when a customer signs up, then schedules a recurring invoice via the recurring-invoice endpoints to bill on the subscription cadence. Payments are recorded back via the payment endpoints, and webhook notifications keep the application aware of paid, sent, and viewed events. Replaces a custom billing engine for SMB-facing SaaS.

Example prompt: Call POST `/api/client/new` for the new customer, then create a recurring invoice that bills monthly on day 1.

### Estimate-to-Invoice Workflow

Sales teams create estimates with POST `/api/estimation/new`, send them via POST `/api/estimation/sendtoclient`, and convert accepted estimates into invoices with POST `/api/estimation/convert.` The conversion preserves line items and tax handling, eliminating double entry. Useful for project-based and services businesses.

Example prompt: Submit POST `/api/estimation/sendtoclient` for estimate 9001, then call POST `/api/estimation/convert` when the client accepts.

### Invoice Activity Notifications

External systems subscribe to Envoice webhooks so dashboards and Slack channels react when invoices are sent, viewed, or paid. The webhook payload includes the invoice identifier and activity type, enabling fine-grained automation such as triggering a follow-up email if an invoice has been viewed but not paid for several days.

Example prompt: Register a webhook URL via the webhook subscription endpoint and verify the test payload arrives at the configured endpoint.

### AI Agent Billing Assistant Through Jentic

An AI assistant uses Jentic to discover Envoice operations by intent and answers user questions like 'create an invoice for $1,200 to Acme for consulting' by chaining client lookup, item creation, and invoice issuing. The Envoice x-auth-key and x-auth-secret stay in your Jentic One instance and never enter the agent's prompt context.

Example prompt: Search Jentic for 'create an invoice for a client', load the new-invoice endpoint, and execute it with the client ID and a single line item.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/api/client/all` | List all clients |
| POST | `/api/client/new` | Create a new client |
| POST | `/api/client/update` | Update an existing client |
| POST | `/api/estimation/new` | Create a new estimate |
| POST | `/api/estimation/sendtoclient` | Send an estimate to the client |
| POST | `/api/estimation/convert` | Convert an estimate into an invoice |
| GET | `/api/estimation/all` | List all estimates |
| POST | `/api/estimation/changestatus` | Change the status of an estimate |

## Key resources

- **Clients** — Create, read, update, and delete client records that invoices and estimates reference.
- **Estimates** — Create, send, convert, and update estimates including conversion to invoice.
- **Invoices** — Issue, send, update, and delete invoices, including recurring invoice management.
- **Payments** — Record payments against invoices and update payment records.
- **Items** — Maintain the product and service catalogue, including tax categories.
- **Webhooks** — Subscribe to invoice activity events for real-time downstream automation.

## Why Jentic

- **Setup:** Wiring Envoice by hand means sending both its x-auth-key and x-auth-secret headers on every call and building your own retries against www.envoice.in. Through Jentic you install once, import the Envoice API from the API Directory, store both header values once, and your agent calls it.
- **Permission scoping:** Envoice sends the client, estimate, or invoice details in the request body rather than the URL, so scope the agent to the operations it needs, such as creating a client or a new estimate. You pick that allowed set, so an operation like converting an estimate at `/api/estimation/convert` is only reachable if you include it.
- **Credential handling:** Your Envoice x-auth-key and x-auth-secret are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create an invoice in Envoice' or 'list all clients', and Jentic returns the matching Envoice operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Invoice Ninja** — Open-source invoicing platform with a comparable feature set
- **Space Invoices** — Invoicing API focused on embedded use inside other applications
- **Xero Accounting** — Sync issued invoices and payments into a small-business accounting ledger

## FAQ

### What authentication does the Envoice API use?

The Envoice API uses two API keys: x-auth-key and x-auth-secret, both passed as headers on every request. Through Jentic, both values are stored encrypted in your Jentic One instance and injected at execution time so they never enter the agent context.

### Can I create a recurring invoice with the Envoice API?

Yes. The API exposes recurring-invoice endpoints to create, update, and pause recurring schedules so a SaaS application can hand subscription billing to Envoice rather than building its own engine.

### How do I convert an estimate into an invoice?

Call POST `/api/estimation/convert` with the estimate identifier. The conversion carries over line items and tax treatment so there is no double entry. Pair with POST `/api/estimation/sendtoclient` to send the estimate to the client first.

### What are the rate limits for the Envoice API?

The OpenAPI spec does not publish numeric rate limits. Envoice applies fair-use throttling at the account level. If you are running bulk imports or back-fills, contact Envoice support before sustained high-throughput operations.

### How do I create a new invoice through Jentic?

Search Jentic for 'create an invoice in Envoice', load the new-invoice operation, and execute it with the client ID and line items. Get started with Jentic One, the self-hosted execution layer.

### Does Envoice support webhooks?

Yes. Configure up to ten webhook URLs that receive HTTP POST payloads when invoice activity occurs (sent, viewed, paid). Endpoints that fail to return 200 across multiple retries are deactivated until they recover.

### Can I limit what my agent is allowed to do with the Envoice API?

Yes. Because you run Jentic One yourself, your own rules decide which Envoice operations the agent may call, so you can allow only the ones a task needs, such as listing clients with GET `/api/client/all` or creating an estimate with POST `/api/estimation/new.` Envoice passes the client, estimate, and invoice details in the request body rather than the URL, so a sensitive operation like converting an estimate at POST `/api/estimation/convert` or recording a payment is reachable only if you include it in that allowed set. Your x-auth-key and x-auth-secret are held by your own instance and injected at execution time, so the agent never sees the credentials it uses.
