---
title: ChargeDesk API Integration on Truto
slug: chargedesk
category: Payment Gateway
canonical: "https://truto.one/integrations/detail/chargedesk/"
---

# ChargeDesk API Integration on Truto



**Category:** Payment Gateway  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 35 tools for ChargeDesk that AI agents can call directly.

- **create_a_charge_desk_charge** — Create a charge record in ChargeDesk. Creates a record of an external charge. NB: this is not a gateway method, so will not create a live charge on your gateway. Use the Create Charge gateway method to create a live charge. This only records an external charge in ChargeDesk; use gateway_charges.create to charge a card through the gateway. Returns the charge with fields such as added_tax, amount, amount_formatted, amount_refunded, amount_refunded_formatted, amount_symbol, charge_id, company, currency, customer_country, customer_email, customer_id, customer_name, customer_phone, … Required: amount, currency, customer.id. 
- **list_all_charge_desk_charges** — List charges in ChargeDesk. Get all charges associated with the secret key provided in the request Returns charge records with fields such as added_tax, amount, amount_formatted, amount_refunded, amount_refunded_formatted, amount_symbol, charge_id, company, currency, customer_country, customer_email, customer_id, customer_name, customer_phone, … Paginate with count and offset (max 500 per page). Required: none. 
- **get_single_charge_desk_charge_by_id** — Get a charge in ChargeDesk. Retrieves a charge that has previously been created. Returns the charge with fields such as added_tax, amount, amount_formatted, amount_refunded, amount_refunded_formatted, amount_symbol, charge_id, company, currency, customer_country, customer_email, customer_id, customer_name, customer_phone, … Required: id. 
- **update_a_charge_desk_charge_by_id** — Update a charge in ChargeDesk. Updates an existing charge with new information. Returns the charge with fields such as added_tax, amount, amount_formatted, amount_refunded, amount_refunded_formatted, amount_symbol, charge_id, company, currency, customer_country, customer_email, customer_id, customer_name, customer_phone, … Required: id, customer.id. 
- **charge_desk_charges_email** — Email a charge notification in ChargeDesk. Send an email notification (such as receipt) to the customer. The type of email sent will depend on the current status of the charge. Paid or Pending charges will send a receipt. Refunded charges will send a refund notification. Authorized charges will send an authorized notification. Voided charges will send a void email. Returns the charge. Required: charge_id. 
- **charge_desk_charges_preview** — Preview charge totals in ChargeDesk. Preview the subtotal, any tax rates and the final total amount for a charge or product. Calculations are based on the country and tax ID provided. Useful for previews in checkout forms. Returns: subtotalAmount, taxRates, totalAmount and their formatted forms. Required: none. 
- **delete_a_charge_desk_charge_by_id** — Delete a charge in ChargeDesk. Deletes a charge record. Returns an empty response on success. Required: id. 
- **create_a_charge_desk_gateway_charge** — Create a live charge, subscription or payment request through the connected payment gateway in ChargeDesk. Charge a customer's card on file with using=card, amount, currency and customer.id; add product.interval (and optional product.trial_period_days) to start a subscription instead; or pass contact (an email or phone number) in place of a customer to send a payment request the customer pays through a link. This is a gateway method: the object is created on the gateway as well as in ChargeDesk. Returns the created charge, plus subscription or pay_link when applicable, with fields such as added_tax, amount, amount_formatted, amount_refunded, amount_refunded_formatted, amount_symbol, charge_id, company, currency, customer_country, customer_email, customer_id, customer_name, customer_phone, … Required: using, amount, currency, and customer.id or contact. 
- **charge_desk_gateway_charges_refund** — Refund a charge in ChargeDesk. Process a refund for a charge. Will return a success or failure from the originating payment gateway. This is a gateway method: the change is applied on the originating payment gateway as well as in ChargeDesk, and may not be supported by every gateway. Returns the charge with fields such as added_tax, amount, amount_formatted, amount_refunded, amount_refunded_formatted, amount_symbol, charge_id, company, currency, customer_country, customer_email, customer_id, customer_name, customer_phone, … Required: charge_id. 
- **charge_desk_gateway_charges_capture** — Capture an authorized charge in ChargeDesk. Capture or void an authorized charge. Will return a success or failure from the originating payment gateway. This is a gateway method: the change is applied on the originating payment gateway as well as in ChargeDesk, and may not be supported by every gateway. Returns the charge with fields such as added_tax, amount, amount_formatted, amount_refunded, amount_refunded_formatted, amount_symbol, charge_id, company, currency, customer_country, customer_email, customer_id, customer_name, customer_phone, … Required: charge_id. 
- **charge_desk_gateway_charges_void** — Cancel a payment request in ChargeDesk. Cancel the payment request. The payment page will show that the charge no longer needs to be paid. This is a gateway method: the change is applied on the originating payment gateway as well as in ChargeDesk, and may not be supported by every gateway. Returns the charge with fields such as added_tax, amount, amount_formatted, amount_refunded, amount_refunded_formatted, amount_symbol, charge_id, company, currency, customer_country, customer_email, customer_id, customer_name, customer_phone, … Required: charge_id. 
- **charge_desk_gateway_subscriptions_cancel** — Cancel a subscription in ChargeDesk. Cancels any future recurring charges through the original payment gateway. May not be supported on all gateways. This is a gateway method: the change is applied on the originating payment gateway as well as in ChargeDesk, and may not be supported by every gateway. Returns the subscription with fields such as amount, amount_formatted, amount_symbol, billing_cycles_current, billing_cycles_total, canceled_at, charges, company, currency, current_period_end, current_period_start, customer_id, ended_at, first_seen, … Required: subscription_id. 
- **charge_desk_gateway_subscriptions_update_plans** — Edit subscription plans in ChargeDesk. Edits a subscription's plans and recurring details. This is a gateway method: the change is applied on the originating payment gateway as well as in ChargeDesk, and may not be supported by every gateway. Returns the subscription with fields such as amount, amount_formatted, amount_symbol, billing_cycles_current, billing_cycles_total, canceled_at, charges, company, currency, current_period_end, current_period_start, customer_id, ended_at, first_seen, … Required: subscription_id. 
- **create_a_charge_desk_customer** — Create a new customer in ChargeDesk. Returns the full customer record including customer_id, email, name, phone, and metadata. Required: customer_id. Pass duplicate='update' to update an existing customer with the same id instead of creating a new one.
- **list_all_charge_desk_customers** — List all ChargeDesk customers. Returns customer records including customer_id, email, name, phone, and country. Supports optional filters email, customer_id, and country.
- **get_single_charge_desk_customer_by_id** — Get a single ChargeDesk customer by id. Returns the full customer record including customer_id, email, name, phone, metadata, and manage_url. Required: id.
- **update_a_charge_desk_customer_by_id** — Update the data stored for an existing ChargeDesk customer. Returns the updated customer record including customer_id, email, name, phone, and metadata. Required: id.
- **delete_a_charge_desk_customer_by_id** — Delete a ChargeDesk customer by id. Deletes all associated data such as charges and tickets by default; pass delete_all=0 to keep it or delete_all=2 to keep anonymised charges and subscriptions. Returns an empty 204 response on success.
- **create_a_charge_desk_subscription** — Create a subscription record in ChargeDesk. Creates a record of an external subscription. NB: this is not a gateway method, so will not create a live subscription on your gateway. Use the Create Subscription gateway method to create a live subscription. This only records an external subscription in ChargeDesk; use gateway_charges.create with product.interval to bill through the gateway. Returns the subscription with fields such as amount, amount_formatted, amount_symbol, billing_cycles_current, billing_cycles_total, canceled_at, charges, company, currency, current_period_end, current_period_start, customer_id, ended_at, first_seen, … Required: subscription_id. 
- **list_all_charge_desk_subscriptions** — List subscriptions in ChargeDesk. Get all subscriptions associated with the secret key provided in the request Returns subscription records with fields such as amount, amount_formatted, amount_symbol, billing_cycles_current, billing_cycles_total, canceled_at, charges, company, currency, current_period_end, current_period_start, customer_id, ended_at, first_seen, … Paginate with count and offset (max 500 per page). Required: none. 
- **get_single_charge_desk_subscription_by_id** — Get a subscription in ChargeDesk. Retrieves a subscription that has previously been created. Returns the subscription with fields such as amount, amount_formatted, amount_symbol, billing_cycles_current, billing_cycles_total, canceled_at, charges, company, currency, current_period_end, current_period_start, customer_id, ended_at, first_seen, … Required: id. 
- **update_a_charge_desk_subscription_by_id** — Update a subscription in ChargeDesk. Update the data stored for an existing subscription. Returns the subscription with fields such as amount, amount_formatted, amount_symbol, billing_cycles_current, billing_cycles_total, canceled_at, charges, company, currency, current_period_end, current_period_start, customer_id, ended_at, first_seen, … Required: id. 
- **create_a_charge_desk_product** — Create a product in ChargeDesk with a custom product_id, name, amount, currency, and optional billing interval. Returns the created product object including product_id, name, amount, currency, and status. Required: product_id. Set duplicate to 'update' to update an existing product instead of creating a duplicate.
- **list_all_charge_desk_products** — List all products in ChargeDesk. Returns product objects including product_id, name, amount, currency, status, and url.
- **get_single_charge_desk_product_by_id** — Get a single ChargeDesk product by id. Returns the product object including product_id, name, amount, currency, status, and url. Required: id (product_id).
- **update_a_charge_desk_product_by_id** — Update an existing ChargeDesk product by id. Returns the updated product object including product_id, name, amount, currency, and status. Required: id (product_id). Pass name to update the product's name.
- **create_a_charge_desk_webhook** — Create a webhook in ChargeDesk that delivers notifications to a URL endpoint. Returns: webhook_id. Required: url. Specify all to receive every notification type, or notifications to subscribe to specific ones such as charge_new or customer_new.
- **delete_a_charge_desk_webhook_by_id** — Delete a ChargeDesk webhook by id. Returns an empty 204 response on success. Required: id.
- **create_a_charge_desk_agent** — Create a ChargeDesk agent and send them an invite email; if an agent with that email already exists, their role is updated instead. Returns the agent including name, email, and role. Requires name, email, and role.
- **charge_desk_agents_bulk_delete** — Delete an existing ChargeDesk agent identified by their email address. Returns an empty 204 response on success. Required: agent_email.
- **list_all_charge_desk_charge_items** — List the line items and taxes on a ChargeDesk charge. Returns: items, taxes. Required: charge_id.
- **list_all_charge_desk_customer_groups** — List ChargeDesk customers with their charges and subscriptions grouped together. Returns grouped records each containing a charge object plus any related subscription and pay_link.
- **list_all_charge_desk_webhook_notifications** — List all possible webhook notification types in ChargeDesk. Returns: object, webhook_id.g. charge_new, charge_refunded, subscription_canceled, agent_log_new). Takes no parameters.
- **list_all_charge_desk_agent_activity_logs** — List ChargeDesk agent activity logs — the actions performed in your account, such as refunds and other agent-driven events. Returns log entries with: action_type, description, event, object_id, object_type, occurred, source, ip, company, and action_reason.
- **list_all_charge_desk_subscription_cancellations** — List ChargeDesk subscription cancellation log entries. Returns log records including charge_id, subscription_id, customer_id, amount, status, and occurred.

## How it works

1. **Link your customer's ChargeDesk account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach ChargeDesk.** The Proxy API is a 1-to-1 mapping of the ChargeDesk API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Embed billing actions inside support tools** — Helpdesks, CRMs, and omnichannel inboxes can let support agents view charges, issue refunds, and manage subscriptions without leaving a ticket. ChargeDesk routes those actions to the underlying payment gateway, so your users don't need direct Stripe or Braintree access.
- **Power AI agents that resolve billing tickets autonomously** — AI support platforms can look up a customer's charges and subscriptions, cancel recurring billing, process refunds, and email receipts — all through ChargeDesk — so the bot resolves 'cancel and refund me' tickets end-to-end without gateway-specific logic.
- **Generate async payment links during live conversations** — Sales engagement, live chat, and omnichannel SaaS can let agents create ChargeDesk gateway charges addressed to a contact (email or phone) and drop a payment link into the conversation to collect upgrades, overages, or unpaid balances.
- **Audit refund and churn behavior across support teams** — Workforce management and QA analytics platforms can ingest agent activity logs and subscription cancellation records to build dashboards on refund volume per agent, policy violations, and the financial impact of support interactions.
- **Unify multi-gateway billing data into a single customer view** — If your users run Stripe, PayPal, Braintree, and others in parallel, you can surface a normalized customer profile with all charges, subscriptions, and payment links via ChargeDesk's grouped customer endpoints instead of integrating each gateway individually.

## What you can build

- **In-ticket billing sidebar** — Fetch a customer and their grouped charges, subscriptions, and payment links to render a complete billing panel alongside any support conversation.
- **One-click refund and void controls** — Let agents trigger live refunds, captures, or voids on the underlying payment gateway directly from your UI using ChargeDesk's gateway charge actions.
- **Subscription management workflows** — Allow agents or AI to cancel subscriptions or switch plans on the gateway, and log every change for churn and revenue reporting.
- **Pay-by-link generator for live chat and email** — Create gateway charges against a contact email or phone to produce a hosted payment link your agents can send mid-conversation, with preview endpoints for accurate totals and tax.
- **Refund and churn analytics dashboards** — Pull agent activity logs and subscription cancellation records to track refund volume, reasons, agent attribution, and churn trends over time.
- **Automated receipt and payment confirmation emails** — Trigger ChargeDesk's charge email action after any refund, update, or new charge to send branded receipts without building your own transactional email flow.

## FAQs

### How does authentication to ChargeDesk work through Truto?

Truto handles the ChargeDesk API credential exchange and storage for each of your end users. You call Truto's unified endpoints with a connection identifier, and we attach the right auth headers to every ChargeDesk request — your product never has to store or rotate ChargeDesk keys itself.

### Which ChargeDesk operations are available via Truto?

Truto exposes charges, gateway charges (refund, capture, void), customers, subscriptions (including gateway cancel and plan updates), products, webhooks, agents, charge items, customer groups, webhook notifications, agent activity logs, and subscription cancellation logs. Both read and write operations are supported for each of these resources.

### Can we trigger refunds and subscription changes on the underlying payment gateway?

Yes. ChargeDesk's gateway endpoints — exposed through Truto as gateway charge refund, capture, void, and subscription cancel or plan update — write directly to the connected gateway (Stripe, PayPal, Braintree, etc.), so you don't need to integrate each processor separately.

### How do we keep billing data fresh in our product?

You can register ChargeDesk webhooks through Truto to receive real-time events, and fall back to the list endpoints (charges, subscriptions, customer groups, activity logs) for polling or backfills. Truto normalizes pagination so you can iterate without writing gateway-specific cursor logic.

### Can we build audit and compliance features on top of agent activity?

Yes. The agent activity logs endpoint returns action type, object ID, action reason, agent email, timestamp, and IP, and the subscription cancellations endpoint provides a dedicated churn ledger. Together they're enough to power refund-threshold alerts, policy audits, and agent-level revenue impact dashboards.

### How do we generate hosted payment links for a customer who doesn't have a stored card?

Call create gateway charge with the contact (email or phone) instead of a stored customer ID. ChargeDesk returns a hosted pay link your product can embed in chat, email, or SMS for the customer to complete payment asynchronously.
