Read ChargeOver customers, invoices, transactions, subscriptions, reports; create customers, quotes.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: add a contact (person) to an existing customer. No email is sent by this call. Returns the new user_id. POST /user.
The customer the contact belongs to.
Full name (alternative to first_name and last_name).
Email address.
Phone number.
Job title.
Mobile number.
Last name.
First name.
Your own unique id for the contact.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
WRITE: add a contact (person) to an existing customer. No email is sent by this call. Returns the new user_id. POST /user.
| Argument | Type | Description |
|---|---|---|
| name | string | Full name (alternative to first_name and last_name). |
| string | Email address. | |
| phone | string | Phone number. |
| title | string | Job title. |
| mobile | string | Mobile number. |
| last_name | string | Last name. |
| first_name | string | First name. |
| customer_id* | integer | The customer the contact belongs to. |
| external_key | string | Your own unique id for the contact. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "Full name (alternative to first_name and last_name)."
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Email address."
},
"phone": {
"type": "string",
"maxLength": 50,
"description": "Phone number."
},
"title": {
"type": "string",
"maxLength": 100,
"description": "Job title."
},
"mobile": {
"type": "string",
"maxLength": 50,
"description": "Mobile number."
},
"last_name": {
"type": "string",
"maxLength": 100,
"description": "Last name."
},
"first_name": {
"type": "string",
"maxLength": 100,
"description": "First name."
},
"customer_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The customer the contact belongs to.",
"exclusiveMinimum": 0
},
"external_key": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Your own unique id for the contact."
}
}
}WRITE: create a new customer (no charge, no invoice, no email is sent by this call). Returns the new customer_id. Add a primary contact with the superuser_* fields. Use chargeover_list_customers first to avoid a duplicate (external_key is unique). POST /customer.
| Argument | Type | Description |
|---|---|---|
| company* | string | Company / customer name. |
| bill_city | string | Billing city. |
| ship_city | string | Shipping city. |
| bill_addr1 | string | Billing address line 1. |
| bill_addr2 | string | Billing address line 2. |
| bill_state | string | Billing state/province. |
| ship_addr1 | string | Shipping address line 1. |
| ship_addr2 | string | Shipping address line 2. |
| ship_state | string | Shipping state/province. |
WRITE: add a note to a customer, subscription, invoice, contact, quote or item (shown in the ChargeOver UI to the team; never sent to the customer). Returns the note id. POST /note.
| Argument | Type | Description |
|---|---|---|
| note* | string | The note text. |
| context_id* | integer | The id of that record (customer_id, package_id, invoice_id, user_id, quote_id or item_id). |
| context_str* | string | What the note is attached to (billing_package = a subscription, user = a contact). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"context_str",
"context_id",
"note"
],
"properties": {
"note": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "The note text."
},
"context_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The id of that record (customer_id, package_id, invoice_id, user_id, quote_id or item_id).",
"exclusiveMinimum": 0
},
"context_str": {
"enum": [
"customer",
"billing_package",
"invoice",
"user",
"quote",
"item"
],
"type": "string",
"description": "What the note is attached to (billing_package = a subscription, user = a contact)."
}
}
}WRITE: create a quote (a proposal) for an existing customer. Nothing is billed and no email is sent: the quote stays open until someone sends or accepts it in ChargeOver. Each line refers to an existing item (chargeover_list_items). paycycle: one = one-time invoice, mon = monthly, 2mn = every 2 months, qtr = quarterly, six = every 6 months, yrl = yearly, 2yr, 3yr, 1wk = weekly, 2wk. Returns the new quote_id. POST /quote.
| Argument | Type | Description |
|---|---|---|
| date | string | A date as YYYY-MM-DD. |
| memo | string | Memo shown to the customer on the quote. |
| nickname | string | Nickname of the quote. |
| paycycle* | string | Billing cycle of the quote. |
| refnumber | string | Your reference number for the quote. |
| line_items* | array | At least one line. |
| customer_id* | integer | The customer the quote is for. |
| external_key | string | Your own unique id for the quote. |
Get one contact (user) by user_id: name, email, phone, username, the customers they belong to. GET /user/{user_id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The user_id (a number). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The user_id (a number).",
"exclusiveMinimum": 0
}
}
}Get one customer by customer_id: company, status, addresses, primary contact, terms, balance fields, custom fields. GET /customer/{customer_id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The customer_id (a number). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The customer_id (a number).",
"exclusiveMinimum": 0
}
}
}Get one invoice by invoice_id: status, line items, totals, balance, payments and credits applied, billing address. GET /invoice/{invoice_id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The invoice_id (a number). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The invoice_id (a number).",
"exclusiveMinimum": 0
}
}
}Get one item (product, service or discount) by item_id: name, type, SKU, pricing tiers per currency. GET /item/{item_id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The item_id (a number). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The item_id (a number).",
"exclusiveMinimum": 0
}
}
}Get one quote by quote_id: status, line items, totals, memo, links to the invoice or subscription it became. GET /quote/{quote_id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The quote_id (a number). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The quote_id (a number).",
"exclusiveMinimum": 0
}
}
}A report's name, its available_filters (field names and allowed operators), available_columns and default_columns. Read this before chargeover_run_report to know which filters and columns to use. GET /_report/{report_id}.
| Argument | Type | Description |
|---|---|---|
| report_id* | integer | The report_id from chargeover_list_reports. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"report_id"
],
"properties": {
"report_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The report_id from chargeover_list_reports.",
"exclusiveMinimum": 0
}
}
}Get one subscription (package) by package_id: status, payment cycle, pay method, next invoice date, line items. GET /package/{package_id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The package_id (a number). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The package_id (a number).",
"exclusiveMinimum": 0
}
}
}Get one transaction (payment, refund or credit that already happened) by transaction_id: amount, method, status, the invoices it was applied to, related refunds. GET /transaction/{transaction_id}.
| Argument | Type | Description |
|---|---|---|
| id* | integer | The transaction_id (a number). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The transaction_id (a number).",
"exclusiveMinimum": 0
}
}
}List contacts (the people at customers; the API calls them users). Filterable fields: user_id, external_key, first_name, last_name, email, phone, user_type_id, username, customers.customer_id (contacts of one customer). Paged: pass next_offset as offset. GET /user.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Records per page, 1-500 (default 50). |
| order | string | Sort as field:ASC or field:DESC, for example invoice_id:DESC. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| filters | array | Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Records per page, 1-500 (default 50)."
},
"order": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}:(ASC|DESC)$",
"description": "Sort as field:ASC or field:DESC, for example invoice_id:DESC."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op"
],
"properties": {
"op": {
"enum": [
"EQUALS",
"NOTEQUALS",
"GT",
"GTE",
"LT",
"LTE",
"CONTAINS",
"IS:NULL",
"ISNOT:NULL"
],
"type": "string",
"description": "EQUALS, NOTEQUALS, GT, GTE, LT, LTE, CONTAINS (substring), IS:NULL or ISNOT:NULL (no value)."
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$",
"description": "Filter field (the list tool's description names the valid ones)."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "The value to compare with; omit for IS:NULL / ISNOT:NULL."
}
}
},
"maxItems": 10,
"description": "Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]."
}
}
}List coupons (code, description, type, enabled, linked discount item). Filterable fields: none documented; the list is small. Paged: pass next_offset as offset. GET /coupon.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Records per page, 1-500 (default 50). |
| order | string | Sort as field:ASC or field:DESC, for example invoice_id:DESC. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| filters | array | Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Records per page, 1-500 (default 50)."
},
"order": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}:(ASC|DESC)$",
"description": "Sort as field:ASC or field:DESC, for example invoice_id:DESC."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op"
],
"properties": {
"op": {
"enum": [
"EQUALS",
"NOTEQUALS",
"GT",
"GTE",
"LT",
"LTE",
"CONTAINS",
"IS:NULL",
"ISNOT:NULL"
],
"type": "string",
"description": "EQUALS, NOTEQUALS, GT, GTE, LT, LTE, CONTAINS (substring), IS:NULL or ISNOT:NULL (no value)."
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$",
"description": "Filter field (the list tool's description names the valid ones)."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "The value to compare with; omit for IS:NULL / ISNOT:NULL."
}
}
},
"maxItems": 10,
"description": "Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]."
}
}
}List customers (companies that are billed). Filterable fields: customer_id, parent_customer_id, bill_state, ship_state, bill_country, ship_country, external_key, token, company, superuser_id, superuser_email, customer_status_state (a = active, i = inactive), customer_status_str (active-current, active-overdue, inactive-manual, inactive-activity), custom_1..custom_50, write_datetime, mod_datetime. Paged: pass next_offset as offset. GET /customer.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Records per page, 1-500 (default 50). |
| order | string | Sort as field:ASC or field:DESC, for example invoice_id:DESC. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| filters | array | Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Records per page, 1-500 (default 50)."
},
"order": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}:(ASC|DESC)$",
"description": "Sort as field:ASC or field:DESC, for example invoice_id:DESC."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op"
],
"properties": {
"op": {
"enum": [
"EQUALS",
"NOTEQUALS",
"GT",
"GTE",
"LT",
"LTE",
"CONTAINS",
"IS:NULL",
"ISNOT:NULL"
],
"type": "string",
"description": "EQUALS, NOTEQUALS, GT, GTE, LT, LTE, CONTAINS (substring), IS:NULL or ISNOT:NULL (no value)."
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$",
"description": "Filter field (the list tool's description names the valid ones)."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "The value to compare with; omit for IS:NULL / ISNOT:NULL."
}
}
},
"maxItems": 10,
"description": "Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]."
}
}
}List invoices with status, totals, credits, payments and balance. Filterable fields: invoice_id, refnumber, customer_id, invoice_status_str (open-unpaid, open-overdue, open-collections, closed-void, closed-paid), invoice_status_state (o = open, c = closed), package_id, package_token, date, currency_id, total, balance, subtotal, token, bill_state, bill_country, line_items.item_id, write_datetime, mod_datetime. Paged: pass next_offset as offset. GET /invoice.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Records per page, 1-500 (default 50). |
| order | string | Sort as field:ASC or field:DESC, for example invoice_id:DESC. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| filters | array | Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]. |
| include_line_items | boolean | true = include each record's line items (bigger reply). Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Records per page, 1-500 (default 50)."
},
"order": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}:(ASC|DESC)$",
"description": "Sort as field:ASC or field:DESC, for example invoice_id:DESC."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op"
],
"properties": {
"op": {
"enum": [
"EQUALS",
"NOTEQUALS",
"GT",
"GTE",
"LT",
"LTE",
"CONTAINS",
"IS:NULL",
"ISNOT:NULL"
],
"type": "string",
"description": "EQUALS, NOTEQUALS, GT, GTE, LT, LTE, CONTAINS (substring), IS:NULL or ISNOT:NULL (no value)."
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$",
"description": "Filter field (the list tool's description names the valid ones)."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "The value to compare with; omit for IS:NULL / ISNOT:NULL."
}
}
},
"maxItems": 10,
"description": "Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]."
},
"include_line_items": {
"type": "boolean",
"description": "true = include each record's line items (bigger reply). Default false."
}
}
}List items: the products, services and discounts that go on invoices, quotes and subscriptions, with their pricing tiers. Filterable fields: item_id, name, external_key, accounting_sku, item_type (service or discount), custom_1, custom_2, custom_3. Paged: pass next_offset as offset. GET /item.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Records per page, 1-500 (default 50). |
| order | string | Sort as field:ASC or field:DESC, for example invoice_id:DESC. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| filters | array | Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Records per page, 1-500 (default 50)."
},
"order": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}:(ASC|DESC)$",
"description": "Sort as field:ASC or field:DESC, for example invoice_id:DESC."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op"
],
"properties": {
"op": {
"enum": [
"EQUALS",
"NOTEQUALS",
"GT",
"GTE",
"LT",
"LTE",
"CONTAINS",
"IS:NULL",
"ISNOT:NULL"
],
"type": "string",
"description": "EQUALS, NOTEQUALS, GT, GTE, LT, LTE, CONTAINS (substring), IS:NULL or ISNOT:NULL (no value)."
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$",
"description": "Filter field (the list tool's description names the valid ones)."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "The value to compare with; omit for IS:NULL / ISNOT:NULL."
}
}
},
"maxItems": 10,
"description": "Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]."
}
}
}List notes attached to customers, subscriptions, invoices, contacts, quotes and items. Filterable fields: context_str (customer, billing_package, invoice, user, quote, item), context_id. Paged: pass next_offset as offset. GET /note.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Records per page, 1-500 (default 50). |
| order | string | Sort as field:ASC or field:DESC, for example invoice_id:DESC. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| filters | array | Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Records per page, 1-500 (default 50)."
},
"order": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}:(ASC|DESC)$",
"description": "Sort as field:ASC or field:DESC, for example invoice_id:DESC."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op"
],
"properties": {
"op": {
"enum": [
"EQUALS",
"NOTEQUALS",
"GT",
"GTE",
"LT",
"LTE",
"CONTAINS",
"IS:NULL",
"ISNOT:NULL"
],
"type": "string",
"description": "EQUALS, NOTEQUALS, GT, GTE, LT, LTE, CONTAINS (substring), IS:NULL or ISNOT:NULL (no value)."
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$",
"description": "Filter field (the list tool's description names the valid ones)."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "The value to compare with; omit for IS:NULL / ISNOT:NULL."
}
}
},
"maxItems": 10,
"description": "Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]."
}
}
}List quotes (proposals for a customer or lead; the list has no line items, get one quote for those). Filterable fields: quote_id, customer_id, brand_id, currency_id, refnumber, token, external_key, date, bill_state, bill_country, quote_status_str (open-new, open-sent, closed-won, closed-lost), quote_status_state (o = open, c = closed). Paged: pass next_offset as offset. GET /quote.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Records per page, 1-500 (default 50). |
| order | string | Sort as field:ASC or field:DESC, for example invoice_id:DESC. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| filters | array | Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Records per page, 1-500 (default 50)."
},
"order": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}:(ASC|DESC)$",
"description": "Sort as field:ASC or field:DESC, for example invoice_id:DESC."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op"
],
"properties": {
"op": {
"enum": [
"EQUALS",
"NOTEQUALS",
"GT",
"GTE",
"LT",
"LTE",
"CONTAINS",
"IS:NULL",
"ISNOT:NULL"
],
"type": "string",
"description": "EQUALS, NOTEQUALS, GT, GTE, LT, LTE, CONTAINS (substring), IS:NULL or ISNOT:NULL (no value)."
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$",
"description": "Filter field (the list tool's description names the valid ones)."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "The value to compare with; omit for IS:NULL / ISNOT:NULL."
}
}
},
"maxItems": 10,
"description": "Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]."
}
}
}List the account's saved reports (report_id and name). Run one with chargeover_run_report. GET /_report.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List subscriptions (the API calls them packages): recurring billing plans of customers. Filterable fields: package_id, customer_id, token, brand_id, paymethod, paycycle (mon, qtr, yrl...), nickname, package_status_state (a active, c cancelled, e expired, s suspended), package_status_str (active-trial, active-current, active-overdue, canceled-nonpayment, canceled-manual, expired-expired, expired-trial, suspended-suspended), external_key, write_datetime, mod_datetime, cancel_datetime, line_items.item_id, customer.superuser_email, customer.users.email. Paged: pass next_offset as offset. GET /package.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Records per page, 1-500 (default 50). |
| order | string | Sort as field:ASC or field:DESC, for example invoice_id:DESC. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| filters | array | Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]. |
| include_line_items | boolean | true = include each record's line items (bigger reply). Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Records per page, 1-500 (default 50)."
},
"order": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}:(ASC|DESC)$",
"description": "Sort as field:ASC or field:DESC, for example invoice_id:DESC."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op"
],
"properties": {
"op": {
"enum": [
"EQUALS",
"NOTEQUALS",
"GT",
"GTE",
"LT",
"LTE",
"CONTAINS",
"IS:NULL",
"ISNOT:NULL"
],
"type": "string",
"description": "EQUALS, NOTEQUALS, GT, GTE, LT, LTE, CONTAINS (substring), IS:NULL or ISNOT:NULL (no value)."
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$",
"description": "Filter field (the list tool's description names the valid ones)."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "The value to compare with; omit for IS:NULL / ISNOT:NULL."
}
}
},
"maxItems": 10,
"description": "Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]."
},
"include_line_items": {
"type": "boolean",
"description": "true = include each record's line items (bigger reply). Default false."
}
}
}List transactions (payments, refunds and credits that already happened; this tool only reads them). Filterable fields: transaction_id, customer_id, gateway_id, currency_id, creditcard_id, ach_id, tokenized_id, token, external_key, gateway_status, gateway_transid, amount, fee, transaction_type, transaction_method, transaction_detail, transaction_datetime, transaction_status.state, transaction_status.str, applied_to.invoice_id, applied_to.package_id. Paged: pass next_offset as offset. GET /transaction.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Records per page, 1-500 (default 50). |
| order | string | Sort as field:ASC or field:DESC, for example invoice_id:DESC. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| filters | array | Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]. |
| include_applied_to | boolean | true = include the invoices each transaction was applied to (bigger reply). Default false. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Records per page, 1-500 (default 50)."
},
"order": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}:(ASC|DESC)$",
"description": "Sort as field:ASC or field:DESC, for example invoice_id:DESC."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op"
],
"properties": {
"op": {
"enum": [
"EQUALS",
"NOTEQUALS",
"GT",
"GTE",
"LT",
"LTE",
"CONTAINS",
"IS:NULL",
"ISNOT:NULL"
],
"type": "string",
"description": "EQUALS, NOTEQUALS, GT, GTE, LT, LTE, CONTAINS (substring), IS:NULL or ISNOT:NULL (no value)."
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$",
"description": "Filter field (the list tool's description names the valid ones)."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "The value to compare with; omit for IS:NULL / ISNOT:NULL."
}
}
},
"maxItems": 10,
"description": "Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]."
},
"include_applied_to": {
"type": "boolean",
"description": "true = include the invoices each transaction was applied to (bigger reply). Default false."
}
}
}List usage (metered billing) data points recorded against subscription line items. Filterable fields: line_item_id, external_key, from (date), to (date). Paged: pass next_offset as offset. GET /usage.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Records per page, 1-500 (default 50). |
| order | string | Sort as field:ASC or field:DESC, for example invoice_id:DESC. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| filters | array | Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Records per page, 1-500 (default 50)."
},
"order": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}:(ASC|DESC)$",
"description": "Sort as field:ASC or field:DESC, for example invoice_id:DESC."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op"
],
"properties": {
"op": {
"enum": [
"EQUALS",
"NOTEQUALS",
"GT",
"GTE",
"LT",
"LTE",
"CONTAINS",
"IS:NULL",
"ISNOT:NULL"
],
"type": "string",
"description": "EQUALS, NOTEQUALS, GT, GTE, LT, LTE, CONTAINS (substring), IS:NULL or ISNOT:NULL (no value)."
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$",
"description": "Filter field (the list tool's description names the valid ones)."
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
],
"description": "The value to compare with; omit for IS:NULL / ISNOT:NULL."
}
}
},
"maxItems": 10,
"description": "Filters, all combined with AND. Example: [{field:'customer_id',op:'EQUALS',value:12},{field:'date',op:'GTE',value:'2026-01-01'}]."
}
}
}Run a saved report and return its rows (read only; nothing is changed). Filters use the report's own field names from chargeover_get_report, for example [{field:'transaction_transaction_date',op:'GTE',value:'2026-01-01'}]. Operators vary by field (dates GTE/LTE/EQUALS, ids EQUALS, strings CONTAINS/DOES_NOT_CONTAIN). To page (offset > 0) an order is required. Max 1000 rows per page. POST /_report/{report_id}/_action/reportData.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Rows per page, 1-1000 (default 100). |
| order | string | Sort as field:ASC or field:DESC, for example invoice_id:DESC. |
| offset | integer | Records to skip (default 0). Use next_offset from the previous reply. |
| columns | array | Column names to return (default: the report's default columns). |
| filters | array | Report filters (combined with AND). |
| report_id* | integer | The report_id from chargeover_list_reports. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"report_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Rows per page, 1-1000 (default 100)."
},
"order": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}:(ASC|DESC)$",
"description": "Sort as field:ASC or field:DESC, for example invoice_id:DESC."
},
"offset": {
"type": "integer",
"maximum": 1000000,
"minimum": 0,
"description": "Records to skip (default 0). Use next_offset from the previous reply."
},
"columns": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$"
},
"maxItems": 60,
"description": "Column names to return (default: the report's default columns)."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op",
"value"
],
"properties": {
"op": {
"enum": [
"EQUALS",
"NOTEQUALS",
"GT",
"GTE",
"LT",
"LTE",
"CONTAINS",
"DOES_NOT_CONTAIN"
],
"type": "string"
},
"field": {
"type": "string",
"pattern": "^[A-Za-z][A-Za-z0-9_.]{0,63}$"
},
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
}
},
"maxItems": 10,
"description": "Report filters (combined with AND)."
},
"report_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The report_id from chargeover_list_reports.",
"exclusiveMinimum": 0
}
}
}WRITE: change fields of an existing customer; send only the fields to change. Cannot touch payment methods, balances or status. Replaces the previous values of the fields you send. PUT /customer/{customer_id}.
| Argument | Type | Description |
|---|---|---|
| company | string | New company / customer name. |
| bill_city | string | Billing city. |
| ship_city | string | Shipping city. |
| bill_addr1 | string | Billing address line 1. |
| bill_addr2 | string | Billing address line 2. |
| bill_state | string | Billing state/province. |
| ship_addr1 | string | Shipping address line 1. |
| ship_addr2 | string | Shipping address line 2. |
| ship_state | string | Shipping state/province. |
| customer_id |
| bill_country |
| string |
| Billing country. |
| external_key | string | Your own unique id for the customer (cannot be reused by default, even after deletion). |
| ship_country | string | Shipping country. |
| bill_postcode | string | Billing postal code. |
| ship_postcode | string | Shipping postal code. |
| superuser_email | string | Primary contact email address. |
| superuser_phone | string | Primary contact phone number. |
| parent_customer_id | integer | Parent customer id, to create a child customer. |
| superuser_last_name | string | Primary contact last name. |
| superuser_first_name | string | Primary contact first name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"company"
],
"properties": {
"company": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Company / customer name."
},
"bill_city": {
"type": "string",
"maxLength": 100,
"description": "Billing city."
},
"ship_city": {
"type": "string",
"maxLength": 100,
"description": "Shipping city."
},
"bill_addr1": {
"type": "string",
"maxLength": 255,
"description": "Billing address line 1."
},
"bill_addr2": {
"type": "string",
"maxLength": 255,
"description": "Billing address line 2."
},
"bill_state": {
"type": "string",
"maxLength": 100,
"description": "Billing state/province."
},
"ship_addr1": {
"type": "string",
"maxLength": 255,
"description": "Shipping address line 1."
},
"ship_addr2": {
"type": "string",
"maxLength": 255,
"description": "Shipping address line 2."
},
"ship_state": {
"type": "string",
"maxLength": 100,
"description": "Shipping state/province."
},
"bill_country": {
"type": "string",
"maxLength": 100,
"description": "Billing country."
},
"external_key": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Your own unique id for the customer (cannot be reused by default, even after deletion)."
},
"ship_country": {
"type": "string",
"maxLength": 100,
"description": "Shipping country."
},
"bill_postcode": {
"type": "string",
"maxLength": 30,
"description": "Billing postal code."
},
"ship_postcode": {
"type": "string",
"maxLength": 30,
"description": "Shipping postal code."
},
"superuser_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Primary contact email address."
},
"superuser_phone": {
"type": "string",
"maxLength": 50,
"description": "Primary contact phone number."
},
"parent_customer_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Parent customer id, to create a child customer.",
"exclusiveMinimum": 0
},
"superuser_last_name": {
"type": "string",
"maxLength": 100,
"description": "Primary contact last name."
},
"superuser_first_name": {
"type": "string",
"maxLength": 100,
"description": "Primary contact first name."
}
}
}| validuntil_date | string | Quote valid until, YYYY-MM-DD. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id",
"paycycle",
"line_items"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "A date as YYYY-MM-DD."
},
"memo": {
"type": "string",
"maxLength": 2000,
"description": "Memo shown to the customer on the quote."
},
"nickname": {
"type": "string",
"maxLength": 255,
"description": "Nickname of the quote."
},
"paycycle": {
"enum": [
"one",
"mon",
"2mn",
"qtr",
"six",
"yrl",
"2yr",
"3yr",
"1wk",
"2wk"
],
"type": "string",
"description": "Billing cycle of the quote."
},
"refnumber": {
"type": "string",
"maxLength": 100,
"description": "Your reference number for the quote."
},
"line_items": {
"type": "array",
"items": {
"type": "object",
"required": [
"item_id"
],
"properties": {
"descrip": {
"type": "string",
"maxLength": 1000,
"description": "Line description override."
},
"item_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "An existing item_id.",
"exclusiveMinimum": 0
},
"expire_recurs": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Number of invoices before the line expires."
},
"line_quantity": {
"type": "number",
"maximum": 1000000000,
"description": "Quantity (default 1).",
"exclusiveMinimum": 0
}
}
},
"maxItems": 100,
"minItems": 1,
"description": "At least one line."
},
"customer_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The customer the quote is for.",
"exclusiveMinimum": 0
},
"external_key": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Your own unique id for the quote."
},
"validuntil_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Quote valid until, YYYY-MM-DD."
}
}
}| integer |
| The customer_id to update. |
| bill_country | string | Billing country. |
| external_key | string | Your own unique id for the customer (cannot be reused by default, even after deletion). |
| ship_country | string | Shipping country. |
| bill_postcode | string | Billing postal code. |
| ship_postcode | string | Shipping postal code. |
| superuser_email | string | Primary contact email address. |
| superuser_phone | string | Primary contact phone number. |
| superuser_last_name | string | Primary contact last name. |
| superuser_first_name | string | Primary contact first name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"customer_id"
],
"properties": {
"company": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "New company / customer name."
},
"bill_city": {
"type": "string",
"maxLength": 100,
"description": "Billing city."
},
"ship_city": {
"type": "string",
"maxLength": 100,
"description": "Shipping city."
},
"bill_addr1": {
"type": "string",
"maxLength": 255,
"description": "Billing address line 1."
},
"bill_addr2": {
"type": "string",
"maxLength": 255,
"description": "Billing address line 2."
},
"bill_state": {
"type": "string",
"maxLength": 100,
"description": "Billing state/province."
},
"ship_addr1": {
"type": "string",
"maxLength": 255,
"description": "Shipping address line 1."
},
"ship_addr2": {
"type": "string",
"maxLength": 255,
"description": "Shipping address line 2."
},
"ship_state": {
"type": "string",
"maxLength": 100,
"description": "Shipping state/province."
},
"customer_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The customer_id to update.",
"exclusiveMinimum": 0
},
"bill_country": {
"type": "string",
"maxLength": 100,
"description": "Billing country."
},
"external_key": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Your own unique id for the customer (cannot be reused by default, even after deletion)."
},
"ship_country": {
"type": "string",
"maxLength": 100,
"description": "Shipping country."
},
"bill_postcode": {
"type": "string",
"maxLength": 30,
"description": "Billing postal code."
},
"ship_postcode": {
"type": "string",
"maxLength": 30,
"description": "Shipping postal code."
},
"superuser_email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Primary contact email address."
},
"superuser_phone": {
"type": "string",
"maxLength": 50,
"description": "Primary contact phone number."
},
"superuser_last_name": {
"type": "string",
"maxLength": 100,
"description": "Primary contact last name."
},
"superuser_first_name": {
"type": "string",
"maxLength": 100,
"description": "Primary contact first name."
}
}
}