canonical: https://jentic.com/apis/chargeover.com/chargeover

# ChargeOver API

ChargeOver is a recurring and subscription billing platform for B2B and SaaS businesses. The v3 REST API exposes the full billing graph: customers, invoices, subscriptions, transactions, and the action endpoints that drive day-to-day operations such as suspending a subscription, voiding an invoice, emailing a customer, applying a late fee, or charging a payment. The API is built around the concept of REST actions appended via the action query parameter, letting integrators trigger lifecycle changes alongside standard CRUD calls.

## For AI agents

Manage customers, invoices, subscriptions, and transactions for a recurring billing platform, including action endpoints to suspend, cancel, void, or charge. Useful for finance ops and customer success agents.

## Scope

Does not handle direct card processing, fraud scoring, or chargeback representment - use for subscription, invoice, and customer billing operations only.

## Capabilities

- Create, retrieve, update, and deactivate customer records via the /customers endpoints, including emailing and inactive flagging through action parameters
- Issue and manage invoices with /invoices, including void, late-fee application, email, payment capture, and PDF retrieval
- Run the subscription lifecycle through /subscriptions: suspend, unsuspend, cancel, uncancel, and upgrade-downgrade via action parameters
- Record and reverse payment transactions with /transactions and POST `/transactions/{id}`?action=void
- Email an invoice or customer directly from the API with the action=email pattern
- Pull invoice PDFs via GET `/invoices/{invoice_id}/pdf` for downstream document workflows

## Use cases

### Recurring SaaS Billing Operations

B2B SaaS finance teams use ChargeOver to manage subscription lifecycles for customers, including suspending past-due accounts and uncancelling reactivations. The /subscriptions endpoints with action=suspend, unsuspend, cancel, uncancel, and upgrade-downgrade let an integrator implement dunning, win-back, and plan-change workflows from a single namespace.

Example prompt: POST `/subscriptions/{subscription_id}`?action=suspend for any subscription with an unpaid invoice older than 30 days

### Invoice Issuance and Collection

Finance teams create one-off and scheduled invoices through POST /invoices, then drive collection via the action endpoints: action=email to send the invoice, action=late-fee to add penalties, action=pay to capture payment against a stored method, and action=void to nullify a mistakenly issued invoice. GET `/invoices/{invoice_id}/pdf` returns the formatted invoice for downstream archiving.

Example prompt: POST /invoices with the line items, then POST `/invoices/{invoice_id}`?action=email to deliver it to the customer

### Customer Lifecycle Management

Customer success and finance ops teams keep ChargeOver in sync with their CRM by creating customers via POST /customers and toggling active status through the action=active and action=inactive variants. Listing /customers with filters supports reconciliation against the CRM and pulling `/customers/{customer_id}` returns the full billing record for support contexts.

Example prompt: POST `/customers/{customer_id}`?action=inactive when the matching CRM record is marked churned

### Agent-Driven Billing Operations via Jentic

An AI agent given an instruction like 'cancel any subscription whose customer has not paid in 60 days' can resolve the workflow through Jentic. It searches Jentic for the subscription cancel operation, identifies past-due records via /invoices, and posts `/subscriptions/{id}`?action=cancel - all while the API key stays in your Jentic One instance.

Example prompt: Search Jentic for 'cancel a subscription', identify past-due subscriptions, and POST `/subscriptions/{id}`?action=cancel for each

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/customers` | Create a customer record |
| POST | `/invoices` | Create an invoice |
| POST | `/invoices/{invoice_id}?action=pay` | Capture payment against an invoice |
| POST | `/subscriptions` | Create a subscription |
| POST | `/subscriptions/{subscription_id}?action=cancel` | Cancel a subscription |
| POST | `/subscriptions/{subscription_id}?action=upgrade-downgrade` | Change a subscription plan |
| POST | `/transactions/{transaction_id}?action=void` | Void a transaction |

## Key resources

- **Customers** — Customer records with create, update, deactivate, and email actions
- **Invoices** — Issued invoices with void, late-fee, email, pay, and PDF actions
- **Subscriptions** — Recurring subscription records with suspend, unsuspend, cancel, uncancel, and upgrade-downgrade actions
- **Transactions** — Payment transaction records with void capability

## Why Jentic

- **Setup:** Wiring ChargeOver by hand means handling its HTTP Basic auth over TLS, resolving your account subdomain into the v3 host, and attaching credentials to every billing call yourself. Through Jentic you install once, import ChargeOver from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** ChargeOver puts the subscription and transaction ids in the URL path (`/subscriptions/{subscription_id}`, `/transactions/{transaction_id}`), so a rule can pin your agent to a given subscription and nothing else. You choose the operations it may call, so cancelling a subscription or voiding a transaction is not included unless you add it.
- **Credential handling:** Your ChargeOver credential is stored once, encrypted, by your own Jentic One instance and used to sign the Basic auth header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'cancel a subscription' or 'create an invoice', and Jentic returns the matching ChargeOver operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Recurly API** — Recurly offers a similar SaaS subscription billing model with broader payment processor coverage; ChargeOver targets B2B billing with action-based REST.
- **Zuora API** — Zuora is enterprise-grade subscription billing with revenue recognition; ChargeOver is mid-market with a simpler REST surface.
- **Stripe API** — Stripe is the underlying payment processor; ChargeOver orchestrates subscriptions and invoices on top.

## FAQ

### What authentication does the ChargeOver API use?

ChargeOver uses HTTP Basic authentication over TLS, with credentials issued from your account settings. Through Jentic, the credential is held encrypted in your Jentic One instance and the agent only sees a scoped execution token rather than the raw username and password pair.

### Can I cancel a subscription through the ChargeOver API?

Yes. POST `/subscriptions/{subscription_id}`?action=cancel cancels the subscription. Use action=uncancel to reactivate before the term ends, action=suspend to pause without cancelling, and action=upgrade-downgrade to change the plan.

### How do I email an invoice with the ChargeOver API?

Call POST `/invoices/{invoice_id}`?action=email. ChargeOver renders the invoice and sends it to the on-file email for the customer. The same pattern (action=email) works for `/customers/{customer_id}`?action=email when sending an account-level message.

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

ChargeOver does not publish a fixed public rate limit; production limits depend on your plan. Implement exponential backoff on HTTP 429 responses and prefer batched reads (filtering /customers or /invoices) over per-record polling.

### How do I capture payment against an invoice through Jentic?

Install jentic with pip install jentic, search for 'capture payment on an invoice', load the schema for POST `/invoices/{invoice_id}`?action=pay, and execute. Run Jentic One, the self-hosted execution layer, for an agent API key.

### Does the ChargeOver API expose invoice PDFs?

Yes. GET `/invoices/{invoice_id}/pdf` returns the PDF representation of the invoice, suitable for archiving in your document store or attaching to outbound customer communications.

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

Yes. Because you run Jentic One yourself, your own rules decide which ChargeOver operations and credentials the agent may use, so it only ever calls what you have approved. ChargeOver puts the subscription and transaction ids in the URL path (`/subscriptions/{subscription_id}`, `/transactions/{transaction_id}`), so a rule can pin the agent to a specific subscription and nothing else. Destructive actions like POST `/subscriptions/{subscription_id}`?action=cancel or POST `/transactions/{transaction_id}`?action=void are not available to the agent unless you explicitly add them.
