Payment Gateway
ChargeDesk
API integration
Ship Payment Gateway features without building the integration. Full ChargeDesk API access via Proxy and 30+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Talk to usUse Cases
Why integrate with ChargeDesk
Common scenarios for SaaS companies building ChargeDesk integrations for their customers.
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
Ship these features with Truto + ChargeDesk
Concrete product features your team can ship faster by leveraging Truto’s ChargeDesk integration instead of building from scratch.
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.
SuperAI
ChargeDesk AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
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.
Why Truto
Why use Truto’s MCP server for ChargeDesk
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 800+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with ChargeDesk in under an hour. No boilerplate, no maintenance burden.
Link your customer’s ChargeDesk account
Use Truto’s frontend SDK to connect your customer’s ChargeDesk account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call ChargeDesk
Truto’s Proxy API is a 1-to-1 mapping of the ChargeDesk API. You call us, we call ChargeDesk, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate ChargeDesk’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about ChargeDesk on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
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.
ChargeDesk
Get ChargeDesk integrated into your app
Our team understands what it takes to make a ChargeDesk integration successful. A short, crisp 30 minute call with folks who understand the problem.