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.

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.
| Field | Expected | Observed |
|---|---|---|
| refund status | approved | pending_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.
Plan changes and discounts are on Stripe only for now; on Paddle, COLVO refunds, cancels, pauses, resumes and undoes a scheduled cancel.


