Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Zuora in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Zuora Billing REST API for one tenant: customer accounts, subscriptions and orders with preview, renew, suspend and resume, invoices with items and PDFs, payments, refunds and credit memos, the product catalog with rate plans, usage, and ZOQL, Object Query and Data Query reads. OAuth2 client credentials, no browser sign-in. Cancellations, payments and refunds install switched off.
Try asking
Example prompts for Zuora
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Zuora, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Zuora + Microsoft Copilot
Zuora Billing REST API for one tenant: customer accounts, subscriptions and orders with preview, renew, suspend and resume, invoices with items and PDFs, payments, refunds and credit memos, the product catalog with rate plans, usage, and ZOQL, Object Query and Data Query reads. OAuth2 client credentials, no browser sign-in. Cancellations, payments and refunds install switched off.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
ZUORA_CLIENT_ID, ZUORA_CLIENT_SECRET, ZUORA_API_URL
Step 1 — Get credentials
Setting up takes about 5 minutes. You need a Zuora tenant and access to its user administration.
- In Zuora open Settings, Administration, Manage Users and pick or create an API user whose role has the permissions the tools need: API access and the read permissions for Billing and Payments, plus write permissions for the tools that change data.
- Open that user and create a client under OAuth Clients. Copy the client id into
ZUORA_CLIENT_IDand the client secret intoZUORA_CLIENT_SECRET. The secret is shown only once; if it is lost, create a new client. - Set
ZUORA_API_URLto the REST host of your tenant, without a path or trailing slash:https://rest.zuora.com(US Cloud 2),https://rest.na.zuora.com(US Cloud 1),https://rest.eu.zuora.com(EU),https://rest.ap.zuora.com(APAC), or a sandbox host:https://rest.apisandbox.zuora.com,https://rest.sandbox.na.zuora.com,https://rest.sandbox.eu.zuora.com,https://rest.test.zuora.com,https://rest.test.eu.zuora.comorhttps://rest.test.ap.zuora.com. Zuora shows the host under your tenant info and in the address of the API docs for your data center. - Install the connector and run
zuora_list_products: it lists the product catalog and confirms the setup.
There is no browser sign-in. AnythingMCP fetches an access token at /oauth/token on that host with the OAuth2 client-credentials grant and renews it before it expires. A sandbox client only works on its sandbox host. On a Multi-entity tenant, the OAuth client must belong to the entity you want to read.
What it reads: customer accounts with zuora_list_accounts (Object Query filters such as ["status.EQ:Active", "balance.GT:0"]), zuora_get_account, zuora_get_account_summary (contacts, subscriptions, recent invoices, payments and usage in one call) and zuora_list_account_payment_methods (masked numbers); subscriptions with zuora_list_subscriptions, zuora_list_account_subscriptions and zuora_get_subscription; orders with zuora_list_orders and zuora_get_order; invoices with zuora_list_invoices (overdue ones e.g. with ["status.EQ:Posted", "balance.GT:0", "duedate.LT:2026-10-01"]), zuora_get_invoice, zuora_list_invoice_items and zuora_list_invoice_files (PDF download links); payments with zuora_list_payments and zuora_get_payment, refunds with zuora_list_refunds and zuora_get_refund, credit memos with zuora_list_credit_memos, zuora_get_credit_memo and zuora_list_credit_memo_items; the product catalog with zuora_list_products, zuora_get_product, zuora_list_product_rate_plans and zuora_get_product_rate_plan (the rate plan ids go into orders as productRatePlanId); usage records with zuora_list_usages.
Queries: zuora_query runs ZOQL on one object, e.g. SELECT Id, Name, Balance FROM Account WHERE Status = 'Active', and zuora_query_more fetches the next batch. For SQL across objects with joins and totals, zuora_create_data_query starts a Data Query job and the AI calls zuora_get_data_query until queryStatus is completed; the result is a temporary download link in dataFile. zuora_list_data_queries shows earlier jobs, and zuora_describe_object lists the fields of an object (as XML). All query tools are read-only.
What it writes: zuora_create_account and zuora_update_account. Subscription changes go through orders: zuora_preview_order shows the invoice items and amounts without saving anything, then zuora_create_order creates a new subscription, adds or removes a product, or changes quantity, price or terms. zuora_renew_subscription renews a termed subscription without billing, zuora_suspend_subscription stops billing until zuora_resume_subscription restarts it. zuora_email_invoice emails a posted invoice as PDF, zuora_create_credit_memo_from_invoice creates a credit memo for all or some items of an invoice (Draft unless auto_post is true), and zuora_create_usage uploads one usage record. These change what customers are billed, so the AI previews the order, shows you the amounts and waits for your yes. zuora_create_order with processing_options (runBilling, collectPayment) also invoices and charges the customer.
Switched off at install: zuora_cancel_subscription, zuora_create_payment and zuora_refund_payment. They move money or cannot be undone, so a workspace admin switches them on when the team needs them.
Data formats: most keys (account_key, subscription_key, invoice_key) take either the number (A00000001, A-S00000001, INV00000001) or the 32-character id; filters such as accountId need the id. Amounts are decimal numbers in the account's currency. Dates are YYYY-MM-DD; timestamps are in the tenant time zone unless they end with Z. v1 answers carry success: true, or success: false with reasons (code and message); Object Query answers carry data.
Paging: the Object Query lists (zuora_list_accounts, zuora_list_subscriptions, zuora_list_invoices, zuora_list_usages) return up to page_size records (10 by default, at most 99) and nextPage, which the AI passes back as cursor until it is missing. Other lists take page and page_size and return a nextPage link while more exist. ZOQL returns up to 2,000 records and done: false with a queryLocator for the rest.
Common errors: 400 at the token step means Zuora did not issue a token: check the client id and secret and that ZUORA_API_URL is your tenant's data center. 401 means a wrong client id or secret or the wrong host. 403 means the API user lacks a permission. 404 means a wrong number or id. Errors in v1 answers may also come with HTTP 200 and success: false; the AI reads reasons. 429 means Zuora's limit on concurrent requests per tenant or requests per hour per user was reached: wait and try again.
With the tools on at install, the connector does not cancel subscriptions, take payments or issue refunds. It reads the product catalog but does not create or change products, rate plans or prices, it does not add payment methods, and it deletes nothing.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Microsoft Copilot
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
Zuoratools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
Available tools
| Tool | What it does |
|---|---|
zuora_list_accounts | List customer accounts with Object Query: filter (e.g. status.EQ:Active, name.SW:Acme, balance.GT:0), choose fields, expand bill-to contact… |
zuora_get_account | Get one customer account by number or id: basic info, billing and payment settings, bill-to and sold-to contacts, balance and metrics |
zuora_get_account_summary | Get an account summary in one call: basic info, contacts, subscriptions, recent invoices, payments and usage, with balance and last payment |
zuora_list_account_payment_methods | List the payment methods of an account (cards, bank accounts, PayPal) with type, masked number, expiry, default flag and status |
zuora_create_account | Create a customer account with name, currency and bill-to contact, plus billing settings (bill cycle day, payment term, batch, auto-pay)… |
zuora_update_account | Update an account: name, notes, contacts, billing settings, auto-pay, default payment method, CRM id or custom fields |
zuora_list_subscriptions | List subscriptions with Object Query: filter by account, status (Active, Cancelled, Suspended, Expired, Draft), term dates or latest… |
zuora_list_account_subscriptions | List the subscriptions of one account with rate plans, charges, prices, quantities, terms and status, as Zuora shows them on the account |
zuora_get_subscription | Get one subscription by number or id with term, renewal settings, status, rate plans, charges (price, quantity, billing period) and owner… |
zuora_list_orders | List orders (the records of subscription changes: new subscription, add product, update, renew, cancel) by status and date range, with… |
zuora_get_order | Get one order by order number with its order actions, the subscriptions it created or changed, and the order metrics |
zuora_preview_order | Preview an order without saving it: the invoice items, charge metrics and amounts a new subscription or a change would produce |
zuora_create_order | Create an order: new subscription, add or remove a product, change quantity or price, renew or change terms |
zuora_renew_subscription | Renew a termed subscription for another renewal term now, without billing |
zuora_suspend_subscription | Suspend an active subscription: billing stops from the suspend date until it is resumed |
zuora_resume_subscription | Resume a suspended subscription today, on a date or after a number of periods; billing restarts from the resume date |
zuora_cancel_subscription | Cancel a subscription at the end of the term, at the end of the last invoiced period or on a date |
zuora_list_invoices | List invoices with Object Query: filter by account, status (Draft, Posted, Canceled), balance, invoice or due date, expand invoice items or… |
zuora_get_invoice | Get one invoice by number or id with account, dates, amounts, tax, balance, status and payment and credit applications |
zuora_list_invoice_items | List the items of an invoice: charge name, subscription, service period, quantity, unit price, amount and tax per line |
zuora_list_invoice_files | List the PDF files generated for an invoice with their download URLs (the newest first) |
zuora_email_invoice | Email a posted invoice as PDF to the bill-to contact, to the extra addresses of the account or to given addresses |
zuora_list_payments | List payments with amount, applied and unapplied amount, status, type, effective date and account |
zuora_get_payment | Get one payment by number or id with amount, applied, unapplied and refunded amounts, gateway state, payment method and dates |
zuora_create_payment | Create a payment: an External payment records money received, an Electronic one charges the payment method through the gateway |
zuora_refund_payment | Refund a payment: Electronic sends money back through the gateway, External records a refund made elsewhere |
zuora_list_refunds | List refunds with amount, status, type, method, refund date, account and the payment or credit memo they come from |
zuora_get_refund | Get one refund by number or id with amount, status, method, gateway state, reason code and source payment or credit memo |
zuora_list_credit_memos | List credit memos with amount, applied, refunded and unapplied amounts, status, date, account and the invoice they refer to |
zuora_get_credit_memo | Get one credit memo by number or id with amounts, status, reason code, dates and the invoice it refers to |
zuora_list_credit_memo_items | List the items of a credit memo: charge, service period, amount, applied and refunded amount and tax per line |
zuora_create_credit_memo_from_invoice | Create a credit memo from a posted invoice, for all or some of its items |
zuora_list_products | List the product catalog: products with their rate plans and charges (model, billing period, prices per currency and tiers) |
zuora_get_product | Get one catalog product by SKU or id with its rate plans and charges, prices per currency and tiers |
zuora_list_product_rate_plans | List the rate plans of one product with effective dates, status and, with charge definitions, the charges and prices |
zuora_get_product_rate_plan | Get one product rate plan by id or number with its charges, prices, billing periods and effective dates |
zuora_list_usages | List usage records with Object Query: filter by account, unit of measure, start date or rating status, page with a cursor |
zuora_create_usage | Upload one usage record for usage-based charges: account, unit of measure, quantity and start time, optionally tied to a subscription or… |
zuora_query | Run a ZOQL query (SELECT fields FROM object WHERE ...), e.g |
zuora_query_more | Get the next batch of a ZOQL query: pass the queryLocator of the previous answer while done is false |
zuora_create_data_query | Start a Data Query job: SQL across objects with joins and aggregates, e.g |
zuora_get_data_query | Get a Data Query job: queryStatus (accepted, in_progress, completed, failed) and, when completed, dataFile (a temporary download link) and… |
zuora_list_data_queries | List recent Data Query jobs with their query, status, row count and result link, newest first |
zuora_describe_object | Describe a Zuora object for ZOQL and Data Query: its fields with type, label, whether they are filterable, and related objects |
Example prompts
- "Which accounts have posted invoices that were due before October 1 and still carry a balance? Show account, invoice number and open amount."
- "Give me a summary of account A00001234: active subscriptions, the last invoices and the last payments."
- "Preview adding 5 seats of the Pro plan to subscription A-S00000120 from the first of next month and show me the amounts before placing the order."
- "With a Data Query, add up the open invoice balance per customer and list the 10 largest."
- "Email invoice INV00004567 as PDF to [email protected] again."
FAQ
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?