Product

Your AI agent and Paddle refunds: “requested” is not “refunded”

Paddle reviews refunds before paying out, and its API has no idempotency keys. Two reasons an AI agent on Paddle can tell a customer the wrong thing — or refund twice.

·2 min read·COLVO team
Your AI agent and Paddle refunds: “requested” is not “refunded”

Your support agent can now refund on Paddle Billing, not just Stripe. Paddle is a merchant of record, and that changes two things an AI agent gets wrong easily.

1. A Paddle refund is a request, not a payout

On Paddle a refund is an adjustment. When it is created it usually waits for Paddle's review — status pending_approval — and only later becomes approved (or rejected). No money has moved yet.

An agent that says “Done, your €29 is refunded” the moment the API answers is telling the customer something that is not true yet — and may never be.

FieldExpectedObserved
refund statusapprovedpending_approval
customer told“requested”“refunded”

With COLVO the operation shows Waiting for Paddle. It turns VERIFIED only when Paddle approves the refund — on Paddle's signed notification or COLVO's hourly check. If Paddle rejects it, the operation fails, the budget is released and an incident tells you to let the customer know. Our SDKs already phrase it: messageFor(op) says the refund is requested while Paddle reviews it.

2. A retry can become a second refund

Paddle's API has no idempotency keys. If the response to a refund is lost — a timeout, a dropped connection — a naive retry creates a second refund.

COLVO tags every refund it creates with its operation id and looks for that tag before any retry. A lost response is found, not repeated. The scenario retry after a lost response proves it on every run: exactly one refund must exist at the end.

Test it before a customer does

COLVO now runs 12 Paddle scenarios against a simulated Paddle: Paddle-shaped ids (ctm_, sub_, txn_), refunds that wait for review, no idempotency keys. Pick Paddle in Choose scenarios… — your agent's tools don't change.

See it happen in 30 secondsClick through a real FAIL from a buggy cancellation agent — no signup.
Open the demo →

Plan changes and discounts are on Stripe only for now; on Paddle, COLVO refunds, cancels, pauses, resumes and undoes a scheduled cancel.

COLVO team
We build tests and guardrails for AI agents that touch money.
≠

Stop trusting the reply.

Test your agent before it ships — and guard every real action once it’s live. In a safe copy of your world first.