← All action domains

Billing

30 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.

Accept Capture partnership upgrade

billing.accept_capture_partnerwriteconfirm

Immediately charges the saved card $247 monthly for White Label or $97 monthly for Partner, including Scale. Cancels the previous base renewal without refund or credit; renews until canceled.

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

FieldTypeRequiredDescription
subscriptionIdstringrequiredThe Stripe subscription id from your own Capture purchase. Ownership is verified against your user account.
tier"partner" | "reseller"requiredpartner is the $247/month White Label offer; reseller is the $97/month Partner offer. Only the current offered stage is accepted.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.accept_capture_partner \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "subscriptionId": "example",
    "tier": "partner"
  }'
Test with your API key

Over MCP the same operation is the tool billing_accept_capture_partner at https://app.chirply.io/api/mcp, same bearer token, same input.

Upgrade Capture to the Scale plan

billing.accept_capture_scalewriteconfirm

Immediately charges your saved card $47 monthly or $365 yearly for Scale and cancels the previous subscription renewal. Previous payments receive no refund or credit; the new subscription renews until canceled.

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

FieldTypeRequiredDescription
subscriptionIdstringrequiredThe Stripe subscription id from your own Capture purchase. Ownership is verified against your user account.
interval"month" | "year"requiredmonth charges $47 now and monthly; year charges $365 now and yearly.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.accept_capture_scale \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "subscriptionId": "example",
    "interval": "month"
  }'
Test with your API key

Over MCP the same operation is the tool billing_accept_capture_scale at https://app.chirply.io/api/mcp, same bearer token, same input.

Upgrade now

billing.accept_upgradewriteconfirm

CHARGES REAL MONEY NOW. Starts White-Label Partner or Reseller Partner on the caller's saved card at the server-calculated monthly price. The partner subscription includes the platform plan; after successful payment the previous plan subscription ends, so only the partner rate renews. Founder pricing applies only during the founder window. Already owning the tier is a no-op.

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

FieldTypeRequiredDescription
tier"partner" | "reseller"required'partner' = White-Label Partner, 'reseller' = Reseller Partner.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.accept_upgrade \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "tier": "partner"
  }'
Test with your API key

Over MCP the same operation is the tool billing_accept_upgrade at https://app.chirply.io/api/mcp, same bearer token, same input.

Cancel membership

billing.cancel_membershipwriteconfirm

Schedule the caller's Chirply membership to end at its paid-through date, or set all paid Chirply subscriptions including white-label and reseller add-ons to end with all_subscriptions. Existing access continues until each period ends; no refund is issued. Any prepaid renewal credit (billing.prepay_next_renewal) stays on the billing account for future invoices and is not refunded — billing.preview_prepay reports it as prepaid_credit_cents. Optional reason and feedback are saved on the Stripe subscriptions. A founder loses their locked rate after the membership lapses. Reversible with billing.resume_membership until each period ends.

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

FieldTypeRequiredDescription
subscription_idstringoptionalStripe subscription to cancel. Defaults to the base membership.
all_subscriptionsbooleanoptionalWhen true, stop every paid Chirply subscription owned by this sign-in, including white-label and reseller add-ons.
reasonstringoptionalOptional cancellation reason saved on each subscription.
feedbackstringoptionalOptional written feedback saved on each subscription.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.cancel_membership \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "subscription_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "all_subscriptions": true
  }'
Test with your API key

Over MCP the same operation is the tool billing_cancel_membership at https://app.chirply.io/api/mcp, same bearer token, same input.

Keep my current plan

billing.cancel_plan_changewriteconfirm

Calls off a plan change that was scheduled for the end of the current billing cycle and keeps the member on the plan they're on, renewing as normal. Nothing is charged or refunded — the scheduled plan never started. Only affects a booked-but-not-yet-started change; an upgrade that already took effect and was charged cannot be undone this way.

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

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.cancel_plan_change \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool billing_cancel_plan_change at https://app.chirply.io/api/mcp, same bearer token, same input.

Change plan

billing.change_planwriteconfirm

DURING A FREE TRIAL no money moves in either direction: the trial keeps running to its original end date whichever plan is chosen, and the new plan simply decides what is charged on that day. Outside a trial: Moves the signed-in user's membership to another plan. UPGRADING (a bigger plan, or the same plan switched from monthly to yearly) CHARGES THE CARD ON FILE IN FULL IMMEDIATELY and switches them over on the spot; the plan they were on is not refunded or prorated, it simply stops renewing at the end of the cycle already paid for. DOWNGRADING (a smaller plan, or yearly to monthly) charges nothing today — the current plan and everything in it runs to the end of the billing cycle, then cancels, and the cheaper plan starts and takes its first payment that same day. Booking a new change replaces any change already scheduled. Founder and complimentary memberships cannot be switched this way. Check billing.list_plans first to see which direction a given plan is and what it costs.

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

FieldTypeRequiredDescription
plan"spark" | "build" | "launch" | "grow" | "scale"requiredThe plan to move to: 'spark' ($7) and 'build' ($27) are the entry rungs and include no calls, texts or marketing email; 'launch' ($47) is where telephony and the inbox start; then 'grow' ($77) and 'scale' ($97).
interval"month" | "year"optionalBill the new plan monthly or yearly. Yearly is ten months' price for twelve. Default: "month"

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.change_plan \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "plan": "spark"
  }'
Test with your API key

Over MCP the same operation is the tool billing_change_plan at https://app.chirply.io/api/mcp, same bearer token, same input.

Decline Capture upgrade offer

billing.decline_capture_offerwriteconfirm

Permanently skips the current private Capture offer without charging a card. Declining White Label opens Partner; declining Scale or Partner ends the offer journey.

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

FieldTypeRequiredDescription
subscriptionIdstringrequiredThe Stripe subscription id from your own Capture purchase. Ownership is verified against your user account.
stage"scale" | "white_label" | "reseller"requiredThe current upgrade stage being declined.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.decline_capture_offer \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "subscriptionId": "example",
    "stage": "scale"
  }'
Test with your API key

Over MCP the same operation is the tool billing_decline_capture_offer at https://app.chirply.io/api/mcp, same bearer token, same input.

Keep my current dollar-a-day plan

billing.decline_dollar_a_day_upgradewriteconfirm

Declines the buyer's current optional upgrade and permanently advances to the next offer step. White Label leads to the Partner Program downsell; declining that completes the purchase. Any unpaid Checkout for the skipped step is expired first so it cannot charge later. No money is charged or refunded, and the paid Scale subscription remains.

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

FieldTypeRequiredDescription
order_idstring (uuid)requiredThe base Scale order UUID returned when this buyer opened the dollar-a-day checkout. Ownership is checked on every call.
stage"white_label" | "reseller"requiredThe current step the buyer explicitly declines: white_label opens the Partner Program downsell; reseller ends the upgrade sequence.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.decline_dollar_a_day_upgrade \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "order_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "stage": "white_label"
  }'
Test with your API key

Over MCP the same operation is the tool billing_decline_dollar_a_day_upgrade at https://app.chirply.io/api/mcp, same bearer token, same input.

Confirm my dollar-a-day payment

billing.finalize_dollar_a_day_checkoutwriteconfirm

Verifies Checkout directly with Stripe before granting a saved-card free trial or paid monthly upgrade. It never initiates a charge. A confirmed new Scale signup emails its contact and signup details to Chirply's owner at jon@tier5.us through the platform Mailgun account. An upgrade starts monthly billing while the original Scale trial continues; future annual renewal stops only after the first Scale annual invoice is paid. Guarantee dates stay anchored to original trial signup, and this action does not issue refunds.

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

FieldTypeRequiredDescription
session_idstringrequiredThe Stripe Checkout session ID returned to the buyer after payment. It must belong to their own dollar-a-day order.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.finalize_dollar_a_day_checkout \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "session_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool billing_finalize_dollar_a_day_checkout at https://app.chirply.io/api/mcp, same bearer token, same input.

Update payment method (finish)

billing.finish_card_updatewriteconfirm

Finish a card update: verifies the confirmed SetupIntent belongs to the caller, then makes its card the default for their billing account and every subscription on it. Nothing is charged now, but all FUTURE membership charges move to this 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

FieldTypeRequiredDescription
setup_intent_idstringrequiredThe id of the SetupIntent confirmed in the browser.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.finish_card_update \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "setup_intent_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool billing_finish_card_update at https://app.chirply.io/api/mcp, same bearer token, same input.

View Capture upgrade offer

billing.get_capture_offerread

Read the current private upgrade stage of your own Capture purchase. Does not charge your card or change your subscription.

Parameters

FieldTypeRequiredDescription
subscriptionIdstringrequiredThe Stripe subscription id from your own Capture purchase. Ownership is verified against your user account.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.get_capture_offer \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "subscriptionId": "example"
  }'
Test with your API key

Over MCP the same operation is the tool billing_get_capture_offer at https://app.chirply.io/api/mcp, same bearer token, same input.

View my dollar-a-day purchase

billing.get_dollar_a_day_journeyread

Reads the signed-in buyer's Scale trial or paid offer, original trial and guarantee dates, payment and annual renewal status, current optional upgrade step and activation link. It exposes only that person's signup and does not charge a card or change an offer step.

Parameters

FieldTypeRequiredDescription
order_idstring (uuid)requiredThe base Scale order UUID returned when this buyer opened the dollar-a-day checkout. Ownership is checked on every call.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.get_dollar_a_day_journey \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "order_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool billing_get_dollar_a_day_journey at https://app.chirply.io/api/mcp, same bearer token, same input.

View dollar-a-day offer

billing.get_dollar_a_day_offerread

Reads the availability and exact recurring prices of Chirply's standalone dollar-a-day Scale offer. It grants no access and charges no money. This offer and its optional upgrades are excluded from affiliate commissions.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.get_dollar_a_day_offer \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool billing_get_dollar_a_day_offer at https://app.chirply.io/api/mcp, same bearer token, same input.

My plan

billing.get_membershipread

The signed-in user's own platform membership: plan name, price and interval, live subscription status, next billing date, whether it's set to cancel, any paid add-ons, and the card on file as brand plus last four digits only. Read-only; nothing is charged. This is the person's personal subscription, not the account's invoicing.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.get_membership \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool billing_get_membership at https://app.chirply.io/api/mcp, same bearer token, same input.

Wallet balance

billing.get_walletread

Read the account's prepaid usage wallet: current balance, currency, and the auto-recharge settings. The balance pays for pay-as-you-go services the platform runs itself — today, Capture's managed live streaming. It does not pay plan subscriptions, which renew on the card on file, and it never pauses a send: email, SMS, calls and AI bill to the account's own connected providers. Read-only; nothing is charged.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.get_wallet \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool billing_get_wallet at https://app.chirply.io/api/mcp, same bearer token, same input.

Plans

billing.list_plansread

The plan ladder — Spark, Build, Launch, Grow and Scale — with monthly and yearly prices, which one the signed-in user is on, and, for every other rung, whether moving there counts as an upgrade or a downgrade and exactly what that would cost and when. Also reports any plan change already scheduled for the end of the current billing cycle. Read-only; nothing is charged. Use billing.change_plan to actually move.

Parameters

FieldTypeRequiredDescription
interval"month" | "year"optionalPrice and classify each move for this billing interval. Defaults to the interval the caller is billed on today, or monthly.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.list_plans \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "interval": "month"
  }'
Test with your API key

Over MCP the same operation is the tool billing_list_plans at https://app.chirply.io/api/mcp, same bearer token, same input.

Available upgrades

billing.list_upgrade_offerswriteconfirm

List White-Label Partner and Reseller Partner upgrades with the exact current monthly price. Each includes the platform plan and replaces its subscription after payment. Founder pricing applies only during the founder window; reading this for a founder can anchor that window, so obtain approval before calling it for someone else.

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

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.list_upgrade_offers \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool billing_list_upgrade_offers at https://app.chirply.io/api/mcp, same bearer token, same input.

Wallet activity

billing.list_wallet_transactionsread

List the account wallet's ledger entries, newest first — top-ups (positive cents), usage debits (negative cents), adjustments and refunds. This is the same activity the Billing page shows. Read-only; nothing is charged.

Parameters

FieldTypeRequiredDescription
limitintegeroptionalMax rows to return (1–100). Default: 25
offsetintegeroptionalRows to skip. Default: 0
kind"topup" | "usage" | "adjustment" | "refund"optionalOnly entries of this kind.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.list_wallet_transactions \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "limit": 25,
    "offset": 0
  }'
Test with your API key

Over MCP the same operation is the tool billing_list_wallet_transactions at https://app.chirply.io/api/mcp, same bearer token, same input.

Billing details & invoices

billing.open_details_portalread

Create a secure Stripe portal link for the signed-in person to update their Chirply billing email, address or payment method and view invoices. Opening the portal charges nothing; any saved changes affect future invoices for that Stripe customer.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.open_details_portal \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool billing_open_details_portal at https://app.chirply.io/api/mcp, same bearer token, same input.

Pay next renewal now

billing.prepay_next_renewalwriteconfirm

CHARGES REAL MONEY NOW: immediately charges the signed-in person's saved card (off-session, on the platform's Stripe) for their NEXT subscription renewal — the amount billing.preview_prepay returns, which is the previewed renewal total minus any credit already on their account — and holds it as credit on their billing account. Stripe applies that credit automatically to the renewal invoices on the renewal date, so nothing more is charged that day; if the renewal ends up costing more, only the difference is charged then. Covers every subscription renewing within a day of the next renewal (for example White-Label and the App reseller licence bought together); one renewal ahead at most — when the next renewal is already covered, nothing is charged. Pass the amount you were shown as expected_amount_cents: if it has changed, nothing is charged. Fails WITHOUT charging when the card's bank requires the cardholder to approve the payment (they can approve it with the same button on the Billing page), when a payment is overdue, when another subscription would use the credit first, or inside a client account billed by its agency. Not the Usage wallet. The payment becomes NON-REFUNDABLE account credit: it stays on the billing account until invoices use it, including after a cancellation — say so to the person before they agree.

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

FieldTypeRequiredDescription
expected_amount_centsintegerrequiredThe amount, in integer cents, that billing.preview_prepay returned as due_cents and the person agreed to (e.g. 49700 = $497.00). If the server's amount differs, nothing is charged.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.prepay_next_renewal \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "expected_amount_cents": 1
  }'
Test with your API key

Over MCP the same operation is the tool billing_prepay_next_renewal at https://app.chirply.io/api/mcp, same bearer token, same input.

Preview: Pay next renewal now

billing.preview_prepayread

Read-only; nothing is charged. Shows what the Billing page's 'Pay next renewal now' would do for the signed-in person: the date of their next platform subscription renewal, which subscriptions renew then and what each will cost (Stripe's own preview of the renewal invoice, including tax and discounts), the credit already on their account, the exact amount that would be charged now, the saved card it would charge (brand and last four only), any subscriptions renewing later that are not included, and — when it can't be paid early — the reason (already covered by credit, a payment overdue, a trial not yet converted, another subscription that would use the credit first, no card on file). Also reports the prepaid credit still on the account. Prepaid credit is non-refundable: it stays on the account until invoices use it, including after a cancellation. Refused inside a client account, whose plan its agency bills.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.preview_prepay \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool billing_preview_prepay at https://app.chirply.io/api/mcp, same bearer token, same input.

Reopen the founder window

billing.reset_upgrade_windowwriteconfirm

CHARGES REAL MONEY NOW — a one-time payment to the card on the caller's founder subscription that reopens their 24-hour founder-pricing window, putting the White-Label and Reseller upgrades back at their founding prices. The price is computed on the server and climbs the longer the window has been closed, so pass the price the user was shown as `expected_price_dollars`; if it has moved, nothing is charged. It stops climbing at a $497 ceiling, and 24 hours after it tops out the reopen is withdrawn permanently — calling it then fails and no later call can bring founder pricing back. If the window is still open this is a no-op.

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

FieldTypeRequiredDescription
expected_price_dollarsintegeroptionalThe reset price the user was quoted, in whole dollars. Guards against a price step.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.reset_upgrade_window \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "expected_price_dollars": 1
  }'
Test with your API key

Over MCP the same operation is the tool billing_reset_upgrade_window at https://app.chirply.io/api/mcp, same bearer token, same input.

Resume membership

billing.resume_membershipwrite

Undo a scheduled cancellation so the membership keeps renewing at its existing rate. Nothing is charged now — the next renewal bills as normal.

Parameters

FieldTypeRequiredDescription
subscription_idstringoptionalStripe subscription to resume. Defaults to the base membership.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.resume_membership \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "subscription_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool billing_resume_membership at https://app.chirply.io/api/mcp, same bearer token, same input.

Save auto-recharge

billing.set_wallet_auto_rechargewriteconfirmadmin only

Turn the account wallet's auto-recharge on or off and set its rules — the same settings as the Billing page's auto-recharge form. While on, whenever platform-billed usage (SMS, calls, AI) drops the wallet balance under the threshold, the card saved on the account's own billing profile is automatically charged the recharge amount — unattended, real-money, off-session Stripe charges nobody clicks on, at most one attempt every 15 minutes. If no card is saved yet, the settings still save but every recharge attempt fails until a person adds funds once from the Billing page (which saves a card). Turning it off clears the threshold and amount. Confirm-gated because enabling it arms future recurring charges.

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

FieldTypeRequiredDescription
enabledbooleanrequiredtrue arms auto-recharge; false disarms it (the threshold and amount are cleared).
threshold_centsintegeroptionalRecharge when the wallet balance falls below this many integer cents (e.g. 1000 = $10). Required when enabling; ignored when disabling.
amount_centsintegeroptionalHow much each automatic recharge charges and credits, in integer cents (e.g. 5000 = $50). Required when enabling; ignored when disabling. At charge time the executor clamps it to the platform top-up bounds — 1000 ($10) to 500000 ($5,000).

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.set_wallet_auto_recharge \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true
  }'
Test with your API key

Over MCP the same operation is the tool billing_set_wallet_auto_recharge at https://app.chirply.io/api/mcp, same bearer token, same input.

Update payment method (start)

billing.start_card_updatewrite

Begin replacing the card on the caller's membership. Creates a Stripe SetupIntent on their billing account and returns its client secret, which a browser Payment Element uses to collect the new card. Card details are never sent through this platform and nothing is charged. Finish with billing.finish_card_update.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.start_card_update \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool billing_start_card_update at https://app.chirply.io/api/mcp, same bearer token, same input.

Start my 7-day free trial

billing.start_dollar_a_day_checkoutwriteconfirm

Creates a card-backed Stripe Checkout for the signed-in person's own 7-day Scale trial: $0 today, then $365/year unless canceled. The buyer must complete card verification at Stripe. The first Scale payment has a 30-day money-back request window starting at trial signup. Existing memberships are refused; provider usage and optional upgrades are separate, and no affiliate commission is earned.

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

FieldTypeRequiredDescription
offer_window_tokenstringrequiredThe signed token returned by billing.start_dollar_a_day_offer_window. Required for the same fixed 24-hour claim deadline used by the website; repeated visits do not renew it.
phonestringrequiredThe buyer's phone number, with country code outside the US. Stored with the order and Stripe customer for account contact, not marketing SMS consent.
terms_acceptedtruerequiredThe buyer accepts the Terms, $0 during the 7-day trial, then $365 annual billing unless canceled, and the guarantee ending 30 days after trial signup.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.start_dollar_a_day_checkout \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "offer_window_token": "example",
    "phone": "+15551234567",
    "terms_accepted": true
  }'
Test with your API key

Over MCP the same operation is the tool billing_start_dollar_a_day_checkout at https://app.chirply.io/api/mcp, same bearer token, same input.

Check my 24-hour offer

billing.start_dollar_a_day_offer_windowwriteconfirm

Records the signed-in buyer's first visit to the dollar-a-day offer and returns their fixed 24-hour claim deadline and signed checkout proof. Later calls return the original window, including after expiry. It creates no order, sends no message and charges no money. Opening secure Checkout before expiry reserves that offer for the Checkout session.

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

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.start_dollar_a_day_offer_window \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool billing_start_dollar_a_day_offer_window at https://app.chirply.io/api/mcp, same bearer token, same input.

Add my dollar-a-day upgrade

billing.start_dollar_a_day_upgradewriteconfirm

Creates the current optional upgrade Checkout: White Label at $247/month, or the Partner Program at $97/month after declining White Label. The buyer must pay at Stripe. Only the monthly upgrade is charged now; the original Scale trial and $365 charge at its end remain unchanged. Future annual renewal stops after that first annual payment. The Scale guarantee excludes monthly upgrade payments and no affiliate commission is earned.

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

FieldTypeRequiredDescription
order_idstring (uuid)requiredThe base Scale order UUID returned when this buyer opened the dollar-a-day checkout. Ownership is checked on every call.
tier"partner" | "reseller"requiredpartner selects White Label ($247/month); reseller selects the Partner Program downsell ($97/month). The server permits only the current offer step.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.start_dollar_a_day_upgrade \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "order_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "tier": "partner"
  }'
Test with your API key

Over MCP the same operation is the tool billing_start_dollar_a_day_upgrade at https://app.chirply.io/api/mcp, same bearer token, same input.

Add wallet funds

billing.topup_walletwriteconfirmadmin only

CHARGES REAL MONEY: immediately bills the card saved on its own billing account (off-session, via Stripe) for the given amount and credits the wallet once the charge settles. There is no undo — reversing it means a refund. Fails without charging if the account has no saved card yet; a person must add funds once from the Billing page first, which saves one. Also fails without charging on an account provided by an agency: those buy usage credits from that agency on the agency's own Stripe, not from Chirply.

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

FieldTypeRequiredDescription
amount_centsintegerrequiredHow much to charge and credit, in integer cents (e.g. 5000 = $50). Between 1000 ($10) and 500000 ($5000) per top-up.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.topup_wallet \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "amount_cents": 1000
  }'
Test with your API key

Over MCP the same operation is the tool billing_topup_wallet at https://app.chirply.io/api/mcp, same bearer token, same input.

Switch to yearly

billing.upgrade_to_yearlywriteconfirm

CHARGES REAL MONEY NOW. Moves a monthly founder membership to the yearly plan at today's yearly ladder price. The switch is immediate: Stripe credits the unused part of the month and invoices the full annual term against the card on file straight away. There is no refund path back to monthly.

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

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/billing.upgrade_to_yearly \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool billing_upgrade_to_yearly at https://app.chirply.io/api/mcp, same bearer token, same input.

The machine-readable version of this page is GET https://app.chirply.io/api/v1/actions?domain=billing — same operations, with full JSON Schemas. Authentication, errors and rate limits are covered in the API documentation home.