tailthemesbuy this theme · $39
Skip to content

Zendesk ZD-4821 · Coilbook · Unrecognised charge on my card

Every step one ticket took

It arrived at 09:14, closed at 09:38, and left this trail.

Escalated

Priya Raghunathan

Email

There is a $70.97 charge on my card from 12 March. I pay $39 a month. What is this?

Relay

stripe.subscriptions.retrieve212 ms
customer
cus_QMx7Rb4t
expand
latest_invoice.lines

sub_1P7dK2 · Studio · $149.00/mo

stripe.invoices.retrieve184 ms
invoice
in_9QtL4M

$96.13 Studio, less $25.16 unused Solo

That charge is the switch to Studio on 12 March. Stripe bills the new plan for the twenty days left in the period and credits the same twenty days you had already paid on Solo, so the invoice is $96.13 minus $25.16.

From 1 April it settles at $149.00 a month on the normal date. Your $39 payments were the old plan and have stopped.

SourceBilling policy §3 · Mid-cycle plan changes

Priya Raghunathan

Email

That makes sense, thank you. Can I have the $70.97 back and go to Solo? We are not using the extra seats.

Relay

Escalated
policy.check14 ms
action
refund
amount
$70.97

blocked · above the $50 ceiling

A refund of this size needs a person. I have passed the thread to Dana Okonjo with the invoice, the plan history and a reply drafted, and told Priya someone will answer today.

Dana Okonjo

Sent by a person

Refund approved and the plan moves back to Solo on 1 April. Priya sees $70.97 returned within five working days.

Closed in 24m6 tool calls1 citation1 handoff

The run log

Every call, timed

What Relay touched, in what order, and what came back, with nothing hidden behind a spinner.

  1. +0.00sticket.receivedZendesk ZD-4821 · billing intent 0.94
  2. +0.41sstripe.subscriptions.retrieve212 mssub_1P7dK2 · Studio · $149.00/mo
  3. +0.68sstripe.invoices.retrieve184 msin_9QtL4M · $70.97 · 2 lines
  4. +1.09sdocs.search96 msBilling policy §3 · match 0.91
  5. +1.44spolicy.check12 mssend allowed · no money moves
  6. +1.61szendesk.reply.send340 msposted to ZD-4821 · 148 words
  7. +17m02spolicy.check14 msblocked · refund $70.97 over $50
  8. +17m04shandoff.assign88 msescalatedDana Okonjo · billing on-call

The decision

Where the run forks

One check decides whether a billing ticket ends with Relay or with a person.

  • trigger

    Ticket arrives

    A billing question lands in the queue with the customer's account id attached.

    • lookup

      Read the account

      Four reads before a word is drafted: Stripe, the accounts replica, the help center, and the ticket's own thread.

      • check

        Does it clear policy?

        Two tests in the tool layer, run before every send: the help center match scores 0.8 or better, and no money moves past $50.

        • clears · 65%

          • step

            Relay answers

            ZD-4821 cleared here at +1.44s. The reply cites the policy section it came from, and a credit up to $50 can go with it.

            • step

              Ticket closes

              The run keeps every call, input and rule that allowed it for 13 months.

              • trigger

                The customer asks again

                ZD-4821 came back at 09:31 wanting the charge refunded, so the same loop ran a second time and met the same check.

                returns to Read the account

        • blocks · 35%

          • handoff

            A person takes it

            The second check stopped ZD-4821: a $70.97 refund against a $50 ceiling.

            • handoff

              Dana gets the brief

              Four facts and a drafted reply: the account, the charge, the payment history, and the rule that stopped it.

One ticket, two checks, and the two endings it chooses between.
Read as text
  1. Ticket arrives

    trigger · starts the run

    A billing question lands in the queue with the customer's account id attached.

  2. Read the account

    lookup · after Ticket arrives · also after The customer asks again

    Four reads before a word is drafted: Stripe, the accounts replica, the help center, and the ticket's own thread.

  3. Does it clear policy?

    check · after Read the account

    Two tests in the tool layer, run before every send: the help center match scores 0.8 or better, and no money moves past $50.

  4. Relay answers

    step · after Does it clear policy? · branch clears (65%)

    ZD-4821 cleared here at +1.44s. The reply cites the policy section it came from, and a credit up to $50 can go with it.

  5. Ticket closes

    step · after Relay answers

    The run keeps every call, input and rule that allowed it for 13 months.

  6. The customer asks again

    trigger · after Ticket closes

    ZD-4821 came back at 09:31 wanting the charge refunded, so the same loop ran a second time and met the same check.

  7. A person takes it

    handoff · after Does it clear policy? · branch blocks (35%)

    The second check stopped ZD-4821: a $70.97 refund against a $50 ceiling.

  8. Dana gets the brief

    handoff · after A person takes it

    Four facts and a drafted reply: the account, the charge, the payment history, and the rule that stopped it.

The handoff

What the person receives

The account, the charge, the rule that stopped it, and a reply ready to send.

Handed to Dana Okonjo

billing on-call · 09:31

What Relay gathered

Account
Coilbook · Studio · customer since 4 Jan 2024
Charge
in_9QtL4M · $70.97 · 12 Mar
History
$1,085 paid · 0 disputes · 0 late invoices
Rule hit
Refund ceiling $50 · exceeded by $20.97

Drafted reply

Hi Priya, I have approved the $70.97 back to your card and moved you to Solo from 1 April. The refund lands within five working days.

Stopped by refund.ceiling, not by a hunch.

Guardrails

Four rules, enforced in code

Your security review will ask these four questions, so here are the answers first.

refund.ceiling

It cannot move money over $50

The ceiling is a number in your config, checked in the tool layer before the call is made. A prompt cannot argue with it.

policy.threshold

It cannot send an uncited answer

Below 0.8 match against your help center, Relay drafts and escalates instead of sending. The threshold is yours to move.

db.readonly

It holds no write credential

Account data comes from a read replica. There is no path from Relay to a row in your primary database.

audit.retain

Every action keeps its cause

Each call is logged with the ticket, the inputs and the rule that allowed it, kept 13 months and exportable as CSV.

Put Relay on the billing queue

Connect Stripe and one helpdesk, approve its first 50 replies, then let it send.

  • No card to start
  • You approve its first 50 replies
  • Cancel any month