Developers · MCP
Connect GetPay to ChatGPT and Claude
GetPay runs a remote MCP server. Connect it to ChatGPT, Claude or any other MCP client, sign in to GetPay, choose one company, and ask about your invoices, customers, bills, bank transactions and reports in plain words. Money, legal and outbound steps are never done from the chat: they wait for approval in GetPay.
Server URL
https://getpay.cc/api/mcpStreamable HTTP. Sign-in is OAuth 2.1 with PKCE: the client registers itself, so you only paste the URL and approve the GetPay consent page. Leave any OAuth client ID and secret fields empty.
Plans
Any GetPay plan, including Free, can connect ChatGPT, Claude or another MCP client.
- Actions through a connected AI app use no AI automation credits.
- Your plan's normal document limits still apply.
- Free workspaces have a fair-use daily limit on actions through connected apps.
Plan details are on the pricing page.
Connect ChatGPT
We plan to list GetPay in the ChatGPT plugin directory, for Malaysia first. It is not listed yet. Until then, connect it yourself in developer mode:
- In ChatGPT, open Settings → Security and login and turn on Developer mode. On Business, Enterprise and Edu workspaces an admin may need to allow it first.
- Open Plugins, press +, name it GetPay and enter the server URL
https://getpay.cc/api/mcpunder Connection. - Create the connection. GetPay opens: sign in, choose the company and approve.
- In a chat, turn on GetPay and ask, for example, "show my overdue invoices".
Menu names are ChatGPT's and can change.
Connect Claude (claude.ai and Claude Desktop)
- Open Customize → Connectors → Add custom connector. On Team and Enterprise plans an owner first adds it under Organization settings → Connectors, then each member connects.
- Name it GetPay and enter
https://getpay.cc/api/mcp. - Click Connect, then sign in to GetPay, choose the company and approve.
A connector added on claude.ai also appears in Claude Desktop when you sign in with the same account. Menu names are Claude's and can change.
Connect Claude Code
claude mcp add --transport http getpay https://getpay.cc/api/mcpThen run /mcp and choose Authenticate for getpay. In a terminal or script, the getpay command line is often the better fit.
What the AI can do
- Read: the company profile (including whether it is registered for SST), invoices, customers, products, bills, bank transactions and reports such as the income statement, balance sheet, trial balance, sales and receivables aging.
- Prepare: create or update customers, products and vendors, and create draft invoices, quotations and draft bills, or edit a draft invoice. Nothing is sent and no money is involved.
- Ask for approval: issue, email or void an invoice, record a payment you have already received, or categorise a bank transaction. These return a link to GetPay Approvals and do nothing until an owner or admin approves it in GetPay within 24 hours.
| Tool | What it does | Access |
|---|---|---|
get_business_profileGet business profile | Use this when you need the connected company's basic settings: company name, base currency, fiscal-year start month and current fiscal year, GetPay plan, and whether it is SST-registered (yes/no, and whether a number is on file; the number itself is not returned). | Read |
search_invoicesSearch invoices | Use this when the user asks about invoices: finds them by invoice number (e.g. S2609002), customer name or line description, filtered by status, customer or fiscal year. | Read |
get_invoiceGet an invoice | Use this when one invoice is needed in full: lines, payments, credit notes and the outstanding balance. | Read |
search_customersSearch customers | Use this when a customer is needed: searches customers by name, email or registration, or lists them. | Read |
list_productsList products | Use this when the company's products and services are needed, with their product_id, prices and tax types (for example to fill invoice or quotation lines). | Read |
search_billsSearch supplier bills | Use this when the user asks about supplier bills (accounts payable): lists them, optionally by supplier or status. | Read |
get_financial_reportGet a financial report | Use this when the user asks for a financial statement: income-statement (profit and loss), balance-sheet, trial-balance, aging (receivables aging) or sales. | Read |
search_bank_transactionsSearch bank transactions | Use this when the user asks about bank activity: searches imported bank transactions by description, payee, category or date range. | Read |
list_bank_accountsList bank accounts | Use this when the company's bank accounts are needed: returns each account's bank_account_id, bank name, last 4 digits of the account number (the rest is never returned) and account type. record_invoice_payment takes the bank_account_id of the account a payment landed in. | Read |
get_confirmation_statusCheck an approval request | Use this when the user asks what happened to an approval request: takes the confirmation_id from an approval_required result and returns its status (pending, approved, executing, redeemed, failed, cancelled or expired) and outcome. | Read |
create_customerCreate a customer | Use this when the user wants to add a customer record (name required; email, address and notes optional). | Write |
update_customerUpdate a customer | Use this when the user wants to change a customer's details, by the customer_id from search_customers. | Write |
create_productCreate a product | Use this when the user wants to add a product or service to the catalog, with its unit price and tax type (service, sales or exempt). | Write |
update_productUpdate a product | Use this when the user wants to change a product's name, description, price, cost or tax type, by the product_id from list_products. | Write |
create_draft_invoiceCreate a draft invoice | Use this when the user wants a new sales invoice prepared. | Write |
update_draft_invoiceUpdate a draft invoice | Use this when the user wants to change a DRAFT invoice: notes, due date, tax type or line items. | Write |
create_quotationCreate a quotation | Use this when the user wants a quote for a customer. | Write |
create_vendorCreate a supplier | Use this when the user wants to add a supplier (vendor) record for bills. | Write |
create_draft_billCreate a draft supplier bill | Use this when the user wants a supplier bill recorded. | Write |
issue_invoiceRequest approval to issue an invoice | Use this when the user wants a DRAFT invoice issued (it becomes a real invoice and books revenue). | Needs approval |
record_invoice_paymentRequest approval to record a received payment | Use this when a customer has already paid and the user wants that payment recorded against the invoice. | Needs approval |
send_invoice_emailRequest approval to email an invoice | Use this when the user wants an issued invoice emailed to the customer. | Needs approval |
void_invoiceRequest approval to void an invoice | Use this when the user wants an invoice voided (cancelled). | Needs approval |
categorize_bank_transactionRequest approval to categorize a bank transaction | Use this when the user wants a bank transaction given a category, which sets its GL account and can change the profit and loss. category is one of the listed codes. | Needs approval |
find_product_by_codeFind a product by barcode or SKU | Use this when the user gives a scanned barcode or a SKU: returns the one active product it matches (barcode first, then SKU, case-insensitive) with its product_id, price and tax type, or product null. | Read |
list_counter_shiftsList counter shifts | Use this when the user asks about their in-store till (GetPay Counter): the open shift of each cash drawer and recent closed shifts with counted vs expected cash, variance and Z number. | Read |
get_counter_shift_reportGet a counter shift report | Use this when the user wants the X report of an open counter shift (owners and admins only) or the Z report of a closed one: sales by tender, cashier and tax, first and last receipt, refunds and the cash-up. | Read |
open_counter_shiftOpen a counter shift | Use this when the user starts a till session on a cash drawer with the float they counted into it. | Write |
get_shop_settingsGet shop page settings | Use this when the user asks how their shop page (getpay.cc/c/{handle}) and AI storekeeper are set up: on/off, handle, business name, tagline, greeting, tone, featured products, catalogue and stock display, ordering mode and loyalty programme. | Read |
list_shop_contentList shop FAQs, promos or updates | Use this when the user asks what their shop page shows: kind faqs (answers the storekeeper quotes), promos (banners and offers) or updates (posts on the Updates tab, with the weekly posting cap). | Read |
update_shop_settingsRequest approval to change shop page settings | Use this when the user wants to change their shop page or storekeeper: business name, greeting, tagline, tone, featured products, catalogue or stock display, the handle, contact or profile links, the website bubble, search listing or the alert email. | Needs approval |
save_shop_faqRequest approval to add or edit a shop FAQ | Use this when the user wants an FAQ or policy the storekeeper answers customers with: without faq_id it adds one (question and answer required); with faq_id (from list_shop_content) it changes only the fields given. | Needs approval |
delete_shop_faqDelete a shop FAQ | Use this when the user wants an FAQ removed from their shop (faq_id from list_shop_content). | Needs approval |
save_shop_promoRequest approval to add or edit a shop promo | Use this when the user wants a promo or offer on their shop page: without promo_id it adds one (title required); with promo_id (from list_shop_content) it changes only the fields given. | Needs approval |
delete_shop_promoDelete a shop promo | Use this when the user wants a promo removed from their shop (promo_id from list_shop_content). | Needs approval |
delete_shop_updateTake down a shop update | Use this when the user wants a post removed from their shop page's Updates tab and followers' feeds (post_id from list_shop_content kind updates). | Needs approval |
get_seller_listingGet the seller listing | Use this when the user asks about their GetPay Seller Showcase listing: the pending copy (name, tagline, description, location, contacts, shop links, categories), its review state and what is public now. | Read |
update_seller_listingEdit the seller listing draft | Use this when the user wants to change their Seller Showcase listing (listing_id from get_seller_listing). | Write |
list_order_importsList marketplace order imports | Use this when the user asks about marketplace order exports they imported (Shopee, Lazada, TikTok Shop and others): without batch_id the 20 newest imports and the stores they book into; with batch_id one import in full, including the orders that did not book and why. | Read |
preview_order_importPreview a marketplace order import | Use this when the user gives a marketplace order export (CSV or .xlsx, base64) to bring into GetPay. | Write |
continue_order_importContinue an approved order import | Use this when an import that an owner already approved still has orders remaining: books the next chunk (each order once, even across retries). | Write |
list_consolidated_einvoicesList consolidated e-invoices | Use this when the user asks about their monthly consolidated B2C e-invoices (LHDN MyInvois): number, month, source invoice count, totals, draft or issued, and LHDN status. | Read |
preview_consolidated_einvoicePreview a month's consolidated e-invoice | Use this when the user asks which sales go into one month's consolidated B2C e-invoice (period YYYY-MM): invoices to buyers without a TIN that were not filed individually, with the count and total. | Read |
draft_consolidated_einvoiceDraft a consolidated e-invoice | Use this when the user wants the consolidated B2C e-invoice of one month prepared (period_year, period_month). | Write |
record_counter_saleRequest approval to record a counter sale | Use this when the user wants an in-store sale recorded on an open counter shift: catalogue products and quantities, the tender (cash, duitnow_qr or card) and the total charged (expected_total). | Needs approval |
close_counter_shiftRequest approval to close a counter shift | Use this when the user has counted the cash drawer and wants the shift closed (the Z close): counted_cash is the cash counted. | Needs approval |
import_ordersRequest approval to book an order import | Use this when the user wants a previewed marketplace order import booked as sale invoices (batch_id and preview_fingerprint from preview_order_import, with the same sst_acknowledged / not_invoiced_by_hand). | Needs approval |
submit_consolidated_einvoiceRequest approval to file a consolidated e-invoice | Use this when the user wants a drafted consolidated B2C e-invoice (ci_id from list_consolidated_einvoices) filed with LHDN MyInvois. | Needs approval |
delete_consolidated_einvoice_draftRequest approval to delete a consolidated e-invoice draft | Use this when the user wants a DRAFT consolidated e-invoice deleted so the month can be drafted again (refused once it reached LHDN). | Needs approval |
That is the whole list: everything else stays in GetPay or the getpay command line. The AI acts with your own role in the company: it cannot see or do more than you can in GetPay.
Safety model
- Approval in GetPay. Money, legal and outbound actions (issuing, voiding, emailing, recording payments, categorising bank transactions and similar) never run from the chat. The AI gets a summary and a link; an owner or admin of the company approves or cancels it in GetPay under Approvals, within 24 hours, after which the request expires and nothing happens.
- Connected apps can never approve.No AI app can approve its own request, or anyone else's.
- No money movement. The connection cannot make transfers, take payments or create payment links. Recording a payment only records one that already happened.
- A fixed set of tools. The tools listed above are all a connected app is offered. Payroll and employee records, LHDN e-invoice submission, SST filing, payment vouchers and loans are not among them.
- One company per connection. The app acts only on the company you chose at sign-in. To use another company, disconnect and connect again.
- Revoke any time. Every connection is listed in GetPay under Settings → Connected apps; Disconnect ends it at once.
Your data
When you ask the AI something, the GetPay data needed to answer (for example invoice lines, customer names and contact details, amounts and report figures) is sent to the AI app you connected, such as OpenAI for ChatGPT or Anthropic for Claude. That provider handles it under your own agreement with them; GetPay does not control how they process it. Only connect apps you are allowed to share your company's data with.
GetPay keeps a record of each connection (the app's name, the company, permissions, when it was connected, last used and disconnected), records the changes made through a connection in the company's activity log (an approved action under the person who approved it), and keeps the details of actions waiting for approval. Full details are in the Privacy Policy and the Terms of Service.
Support
Questions or problems connecting: email support@getpay.cc. Please include the AI app you use and what you asked; never send passwords or tokens. More help, including how to disconnect, is on the support page.