26 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.
Cancel failed Tap to Pay attempt
stripe.cancel_mobile_terminal_paymentwriteconfirm
Cancel a failed or abandoned Tap to Pay PaymentIntent in the selected connected Stripe account. If the card was authorized, cancellation releases the authorization instead of collecting money; succeeded payments are never canceled by this action.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected Stripe account where the Tap to Pay attempt was created.
mode
"live" | "test"
optional
Whether the attempt used live money or Stripe test mode. Default: "test"
payment_intent_id
string
required
The Stripe PaymentIntent created by this mobile checkout attempt.
Over MCP the same operation is the tool stripe_cancel_mobile_terminal_payment at https://app.chirply.io/api/mcp, same bearer token, same input.
Connect a Stripe account
stripe.connect_accountwriteconfirmadmin only
Connect another Stripe account by its secret key. The key is verified against Stripe and stored encrypted, and an import of that account's customers, charges and subscriptions starts immediately — a large account continues in the background. Customers are matched to existing contacts by email address; new ones are added as contacts but are NOT subscribed to marketing unless subscribe_to_marketing is set. Handles credentials that can charge money.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
secret_key
string
required
The Stripe live secret key (sk_live_… or rk_live_…). Add the same account's test key separately in test_secret_key.
display_name
string
optional
What to call this account here. Defaults to the name Stripe reports.
publishable_key
string
required
This account's live publishable key (pk_live_…). Required because every connected account can be selected by invoices, products, funnels, and websites.
webhook_secret
string
optional
Signing secret (whsec_…) for a webhook endpoint you created yourself. Usually leave this blank: an endpoint is registered in the account automatically on connect (when the key can manage webhooks), so payments and refunds appear instantly. Provide one only to point at an endpoint you set up by hand instead.
test_secret_key
string
optional
This same account's Stripe test secret key (sk_test_… or rk_test_…).
test_publishable_key
string
optional
This same account's Stripe test publishable key (pk_test_…). Required for test checkout forms.
test_webhook_secret
string
optional
Optional signing secret for this account's test-mode webhook endpoint.
create_contacts
boolean
optional
Create a CRM contact for a payer who isn't already one. False means only enrich people already in the CRM. Default: true
subscribe_to_marketing
boolean
optional
Allow contacts created by this import to receive marketing email. Defaults to FALSE — someone who paid you has not consented to campaigns, and imported contacts are added to the email opt-out list unless this is true. Default: false
Over MCP the same operation is the tool stripe_connect_account at https://app.chirply.io/api/mcp, same bearer token, same input.
Connect with Stripe
stripe.connect_oauthwriteconfirmadmin only
Get a browser link to connect a Stripe business by signing in to Stripe and approving Chirply. An owner or admin must complete consent in their browser. Grants access to payments, invoices, subscriptions and CRM data; this action itself charges no money and sends no messages. Existing agency-managed Connect setups remain key-based.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
mode
"live" | "test"
optional
Live business authorization, or test mode for an already-connected Stripe business. Default: "live"
account_id
string (uuid)
optional
Existing Chirply Stripe connection to reconnect or add test mode to. Stripe must return the same business.
Over MCP the same operation is the tool stripe_connect_oauth at https://app.chirply.io/api/mcp, same bearer token, same input.
What this contact has paid
stripe.contact_revenueread
One contact's saved Stripe history across connected accounts: financials separated by currency and live/test connection, collected money, net after refunds, successful-payment counts, refunded-payment counts and amounts, disputed-charge counts and full charge values, subscriptions and recent charges. historyPending means an initial import is incomplete; totals can increase as older payments arrive. financialsError means currency totals could not be loaded. Amounts are minor units. Refund counts count charges with refunds, not individual refund events; disputed amounts are not confirmed losses. Legacy scalar totals may mix currencies; use financials for money. Read-only; sends no messages and charges no money.
Over MCP the same operation is the tool stripe_contact_revenue at https://app.chirply.io/api/mcp, same bearer token, same input.
Enter card securely
stripe.create_mobile_paymentwriteconfirm
Create a Stripe PaymentIntent in the selected connected account for secure in-person card entry. Confirming the Stripe payment form can charge the customer's real card in live mode and incurs that account's Stripe processing fees; the card number and security code are never received or stored here. Also CREATES A STRIPE CUSTOMER in that connected account when the payer has no Stripe customer record yet — a permanent record carrying their name, email and phone — and links it to the CRM contact for reuse on later payments.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected Stripe account that will receive this payment.
amount_cents
integer
required
The amount to collect in the currency's smallest unit, such as cents for USD.
currency
string
required
Three-letter ISO currency code, such as usd.
description
string
optional
Optional description shown with the payment in Stripe.
receipt_email
string (email)
optional
Optional customer email where Stripe may send a receipt.
contact_id
string (uuid)
optional
Optional CRM customer to associate with this payment and prefill the receipt email from.
stripe_customer_record_id
string (uuid)
optional
Optional imported Stripe customer record to charge or associate with the checkout in the selected Stripe account.
payer_name
string
optional
Optional payer name supplied at the point of sale when no saved customer is selected.
payer_phone
string
optional
Optional payer phone number supplied at the point of sale when no saved customer is selected.
mode
"live" | "test"
optional
Use live credentials to collect real money or test credentials for a simulated payment. Default: "test"
Over MCP the same operation is the tool stripe_create_mobile_payment at https://app.chirply.io/api/mcp, same bearer token, same input.
Create payment link
stripe.create_mobile_payment_linkwriteconfirm
Create a one-time Stripe-hosted checkout link in the selected connected account. Anyone with the link can complete the payment; a successful live checkout charges real money and incurs that account's Stripe processing fees.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected Stripe account that will receive this payment.
amount_cents
integer
required
The amount to collect in the currency's smallest unit, such as cents for USD.
currency
string
required
Three-letter ISO currency code, such as usd.
description
string
optional
Optional description shown with the payment in Stripe.
receipt_email
string (email)
optional
Optional customer email where Stripe may send a receipt.
contact_id
string (uuid)
optional
Optional CRM customer to associate with this payment and prefill the receipt email from.
stripe_customer_record_id
string (uuid)
optional
Optional imported Stripe customer record to charge or associate with the checkout in the selected Stripe account.
payer_name
string
optional
Optional payer name supplied at the point of sale when no saved customer is selected.
payer_phone
string
optional
Optional payer phone number supplied at the point of sale when no saved customer is selected.
mode
"live" | "test"
optional
Use live credentials to collect real money or test credentials for a simulated payment. Default: "test"
Over MCP the same operation is the tool stripe_create_mobile_payment_link at https://app.chirply.io/api/mcp, same bearer token, same input.
Disconnect a Stripe account
stripe.disconnect_accountwriteconfirmadmin only
Delete a connected Stripe account's stored keys and remove every customer, payment and subscription imported from it. Contacts are KEPT — they just lose the revenue that came from this account. Nothing changes inside Stripe itself. Irreversible short of reconnecting and re-importing.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected account's id (from stripe.list_accounts).
Over MCP the same operation is the tool stripe_disconnect_account at https://app.chirply.io/api/mcp, same bearer token, same input.
Turn on real-time sync
stripe.enable_realtime_syncwriteconfirmadmin only
Register the platform's webhook inside this connected Stripe account so payments, refunds and subscription changes land on the contact the instant they happen, instead of waiting up to an hour for the next scheduled import. Uses the account's stored secret key to create the endpoint — no dashboard steps for the user. If that key is a restricted one that can't manage webhooks, this reports why and the account stays on the hourly import (paste a signing secret by hand as the fallback). Safe to run repeatedly; it re-registers rather than duplicating.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected account's id (from stripe.list_accounts).
Over MCP the same operation is the tool stripe_enable_realtime_sync at https://app.chirply.io/api/mcp, same bearer token, same input.
Use in this account
stripe.link_existing_oauthwriteconfirmadmin only
Share an existing Stripe app installation from another Chirply account this same person administers. Starts importing that Stripe business's customers, payments, refunds and subscriptions into this account; its existing connection and data remain in the source account. No charge or message is sent.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
source_account_id
string (uuid)
required
Chirply Stripe account record ID returned by stripe.reusable_connections for another account you administer.
Over MCP the same operation is the tool stripe_link_existing_oauth at https://app.chirply.io/api/mcp, same bearer token, same input.
Stripe accounts
stripe.list_accountsreadadmin only
List every Stripe account this account has connected, with how many customers, payments and subscriptions have been imported from each, when it last synced, and which one collects money for invoices and funnels. Read-only; returns no keys.
Over MCP the same operation is the tool stripe_list_accounts at https://app.chirply.io/api/mcp, same bearer token, same input.
Stripe customers
stripe.list_customersread
List the Stripe customer records imported into this account, newest first. One human can own several of these — one per Stripe account they've bought from — and `contact_id` is the single CRM contact they were all matched onto. Filter by contact to see every Stripe identity behind one person.
Parameters
Field
Type
Required
Description
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
account_id
string (uuid)
optional
Only customers from this connected Stripe account.
contact_id
string (uuid)
optional
Only the Stripe customer records belonging to this CRM contact.
Over MCP the same operation is the tool stripe_list_customers at https://app.chirply.io/api/mcp, same bearer token, same input.
Recent payment links
stripe.list_mobile_payment_linksread
List durable one-time Stripe Checkout links created from the mobile POS, newest first, including their amount, selected Stripe account, optional CRM customer, mode and current saved status. Read-only and does not charge anyone.
Parameters
Field
Type
Required
Description
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
account_id
string (uuid)
optional
Only links created for this connected Stripe account.
Over MCP the same operation is the tool stripe_list_mobile_payment_links at https://app.chirply.io/api/mcp, same bearer token, same input.
Stripe payments
stripe.list_paymentsread
List charges imported from the connected Stripe accounts, newest first. Amounts are in minor units (cents) in the charge's own currency. `status` is the outcome of the ATTEMPT — a succeeded payment that was later refunded is still `succeeded`, with `amount_refunded_cents` set — so never total money without filtering to succeeded.
Parameters
Field
Type
Required
Description
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
account_id
string (uuid)
optional
Only payments taken by this connected Stripe account.
Over MCP the same operation is the tool stripe_list_payments at https://app.chirply.io/api/mcp, same bearer token, same input.
Stripe subscriptions
stripe.list_subscriptionsread
List subscriptions imported from the connected Stripe accounts, in every status so cancelled plans are still visible as history. Amounts are per interval, in minor units.
Parameters
Field
Type
Required
Description
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
account_id
string (uuid)
optional
Only subscriptions in this connected Stripe account.
contact_id
string (uuid)
optional
Only this CRM contact's subscriptions.
status
string
optional
Stripe status to filter on: active, trialing, past_due, canceled, unpaid, incomplete, paused.
Over MCP the same operation is the tool stripe_list_subscriptions at https://app.chirply.io/api/mcp, same bearer token, same input.
Stripe import history
stripe.list_sync_runsreadadmin only
Every import attempt against the connected Stripe accounts, newest first, with what it pulled, how many contacts it matched versus created, and the error if it failed. This is what answers “why isn't this customer here?”.
Over MCP the same operation is the tool stripe_list_sync_runs at https://app.chirply.io/api/mcp, same bearer token, same input.
Choose a Stripe account
stripe.payment_accountsread
List the connected Stripe accounts that an account member can select when taking a mobile payment. Returns display and availability fields only; no secret or publishable keys are exposed.
Over MCP the same operation is the tool stripe_payment_accounts at https://app.chirply.io/api/mcp, same bearer token, same input.
Open secure card form
stripe.prepare_mobile_card_entryread
Return the selected connected Stripe account's publishable configuration so the mobile app can display Stripe's encrypted card form. This does not create a PaymentIntent, charge anyone, or leave an incomplete transaction; the intent is created only after the customer enters a payment method and confirms Pay.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected Stripe account that will receive the eventual payment.
mode
"live" | "test"
optional
Use live configuration for real money or test configuration for a simulated payment. Default: "test"
Create a Stripe Customer for the selected CRM contact when needed — a permanent record in that connected account carrying their name, email and phone — then create the card-present PaymentIntent that the authenticated mobile app will collect. The later native confirmation can charge the customer's real card in live mode and incurs the connected account's Stripe Terminal fees; this preparation call alone does not collect a card.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected Stripe account that will receive this payment.
amount_cents
integer
required
The amount to collect in the currency's smallest unit, such as cents for USD.
currency
string
required
Three-letter ISO currency code, such as usd.
description
string
optional
Optional description shown with the payment in Stripe.
receipt_email
string (email)
optional
Optional customer email where Stripe may send a receipt.
contact_id
string (uuid)
optional
Optional CRM customer to associate with this payment and prefill the receipt email from.
stripe_customer_record_id
string (uuid)
optional
Optional imported Stripe customer record to charge or associate with the checkout in the selected Stripe account.
payer_name
string
optional
Optional payer name supplied at the point of sale when no saved customer is selected.
payer_phone
string
optional
Optional payer phone number supplied at the point of sale when no saved customer is selected.
mode
"live" | "test"
optional
Use live credentials to collect real money or test credentials for a simulated payment. Default: "test"
Over MCP the same operation is the tool stripe_prepare_mobile_terminal_payment at https://app.chirply.io/api/mcp, same bearer token, same input.
Start Tap to Pay
stripe.prepare_tap_to_paywriteconfirm
Create a short-lived Stripe Terminal connection token for the selected connected account and list that account's reader locations. If that account has no Terminal location yet, this also CREATES ONE in Stripe from the account's saved business address — a permanent Terminal Location record on the connected account, named after the account — or, when the address is incomplete, returns setup_required instead of creating anything. A later confirmation on a supported NFC phone can collect real money in live mode and incurs Stripe Terminal fees; this call alone does not charge anything.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected Stripe account that will receive Tap to Pay payments.
mode
"live" | "test"
optional
Use live credentials for real cards or test credentials for a simulated reader. Default: "test"
Over MCP the same operation is the tool stripe_prepare_tap_to_pay at https://app.chirply.io/api/mcp, same bearer token, same input.
Connections in my other accounts
stripe.reusable_connectionsreadadmin only
List Stripe app connections in other Chirply accounts that this signed-in person administers and can add here. Read-only; returns business names and IDs, never API tokens or financial records.
Over MCP the same operation is the tool stripe_reusable_connections at https://app.chirply.io/api/mcp, same bearer token, same input.
Search payment contacts
stripe.search_payment_recipientsread
Search every CRM contact by first name, last name, combined full name, business, email, or phone for the mobile point of sale, with matching imported Stripe customers included when available. Read-only; returns safe identifiers scoped to the selected account and Stripe account.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected Stripe account whose imported customers should be searched.
mode
"live" | "test"
optional
Search live or test Stripe customer records. Default: "test"
query
string
required
Name, business, email, phone number, or Stripe customer id to find.
Over MCP the same operation is the tool stripe_search_payment_recipients at https://app.chirply.io/api/mcp, same bearer token, same input.
Sync a Stripe account
stripe.sync_accountwriteadmin only
Import one connected Stripe account again, picking up where the last run left off. Reads only — nothing is created or charged in Stripe. May create CRM contacts for payers who aren't contacts yet (subject to the account's settings), and those contacts are excluded from marketing unless the account allows it. A large account may not finish in one call; check `done` in the result and call again.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected account's id (from stripe.list_accounts).
full
boolean
optional
Walk the whole account from the beginning instead of only what's changed since the last sync. Slow on a large account, and only needed if you think something was missed. Default: false
Over MCP the same operation is the tool stripe_sync_account at https://app.chirply.io/api/mcp, same bearer token, same input.
Sync all Stripe accounts
stripe.sync_all_accountswriteadmin only
Import every connected Stripe account that has syncing switched on. Same read-only behaviour as stripe.sync_account, run across all of them with the time budget shared between accounts.
Over MCP the same operation is the tool stripe_sync_all_accounts at https://app.chirply.io/api/mcp, same bearer token, same input.
Import progress
stripe.sync_progressreadadmin only
Read each connected Stripe account's import stage, running/queued/completed state, delayed-batch warning, saved customer/payment/subscription counts, last completed sync and tracked webhook activity. Financials separate currencies and live/test connections: successful collected amounts, net after refunds, net attributed to CRM contacts, refunded-payment counts/amounts and disputed-charge counts/full charge amounts. Counts describe charges, not individual refund events; disputed value is not confirmed losses. Totals remain partial during import. Read-only; sends no messages and charges no money.
Over MCP the same operation is the tool stripe_sync_progress at https://app.chirply.io/api/mcp, same bearer token, same input.
Change a Stripe account's settings
stripe.update_accountwriteconfirmadmin only
Rename a connected Stripe account, turn its import on or off, change whether it creates contacts or lets them receive marketing email, or replace or REMOVE its live/test keys. Every account remains available on invoices, products, funnels, and websites. Replacement keys are verified before they overwrite working ones. Removing a publishable key (send an empty string) stops card payments on that account until one is added back, and changes nothing else — the secret key, webhook and the other mode's credentials are untouched and importing carries on. Omitted fields are never touched.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected account's id (from stripe.list_accounts).
display_name
string
optional
New name for this account here.
sync_enabled
boolean
optional
Keep importing from this account.
create_contacts
boolean
optional
Create contacts for payers who aren't already contacts.
subscribe_to_marketing
boolean
optional
Allow contacts imported from this account to receive marketing email. Applies to future imports only.
secret_key
string
optional
Replacement Stripe secret key.
publishable_key
string
optional
Replacement LIVE publishable key (pk_live_…). An empty string removes the stored one, which turns off card payments on this account until a key is added back but leaves the connection, its secret key, its webhook and its test credentials working. Omit to leave it alone.
webhook_secret
string
optional
Replacement webhook signing secret.
test_secret_key
string
optional
Replacement Stripe test secret key.
test_publishable_key
string
optional
Replacement TEST publishable key (pk_test_…). An empty string removes the stored one, which turns off test-mode card entry only; live payments are unaffected. Omit to leave it alone.
Over MCP the same operation is the tool stripe_update_account at https://app.chirply.io/api/mcp, same bearer token, same input.
Verify mobile payment
stripe.verify_mobile_paymentread
Retrieve one mobile PaymentIntent directly from its connected Stripe account and return Stripe's authoritative current status, amount, customer and receipt details. This is read-only and does not create, capture, cancel, refund or otherwise change the payment.
Parameters
Field
Type
Required
Description
account_id
string (uuid)
required
The connected Stripe account that received the mobile payment.
mode
"live" | "test"
optional
Whether the payment used live money or Stripe test mode. Default: "test"
payment_intent_id
string
required
The Stripe PaymentIntent identifier returned to the mobile checkout.