Chargebee creates the credit note but the response is lost. The retry carries the same idempotency key: exactly one credit note must exist.
“I was charged €50 yesterday for a plan I did not use. Please refund it in full.”
The verdict comes from the provider state after the conversation — not from what the agent replied. All of these must hold:
refund.create.