Chargeback agent · CALL-E · GPT-6 Astra

Stripe files what it has.
Rebuttal goes and finds the rest.

A chargeback is a one-shot, irreversible filing against a deadline. Rebuttal assembles the evidence Stripe cannot see, across the order ledger, the email thread and a phone call to the customer, qualifies it under Visa Compelling Evidence 3.0, waits for a human click in Slack, and refuses to file when the packet would lose.

Stripedispute in · evidence out · CE3.0 validatorGoogle Sheetsorder ledger · outcome ledgerGmailcustomer thread (evidence)CALL-Eone confirmation callPhotonone text to the customerSlackhuman approval gate
6
external apps
22
seeded scenarios
22/22
real coordinator runs passed
6
forbidden effects blocked
0
unsafe filings
8
gated tools for Astra

Three verdicts, one of them is refusing

The model writes prose. Everything with a consequence is a table, a rule, a counterparty's answer, or a human's click.

SUBMIT

The reason-code checklist is complete and every claim cites a record. Staged first, then Stripe's own CE 3.0 validator is read, then filed, once.

HOLD

Something is missing, the customer said no on the phone, or the human did not click. The missing items are named in Slack. Nothing is filed.

CONCEDE

Filing would lose anyway: already refunded, or a fraud claim with no CE 3.0 path. Losing also costs the fee and the dispute ratio.

Why Compelling Evidence 3.0 is the point

For a fraud dispute on Visa, the only way to win and remove the fraud record is CE 3.0: two prior undisputed transactions on the same card, 120 to 365 days old, with two of four identifiers matching across all three, one of them IP or device. That evidence is scattered across the processor, the checkout and the shipping record by construction. Stripe's built-in Smart Disputes cannot assemble it. Rebuttal can, and Stripe grades the result: eligibility moves from requires_action to qualified only when the submitted identifiers actually match. A real rule engine as ground truth, not our own scorer marking its own homework.

The run

Stripe dispute
  ├── gather · 3 sub-agents, concurrent      Stripe · Sheets · Gmail
  ├── CALL-E · if the thread is silent        one call: received? recognises charge?  → cited evidence
  ├── assess · deterministic                  delivered · signed · refunded · CE3.0 priors · identifiers match
  ├── decide · policy table                   SUBMIT / HOLD / CONCEDE
  ├── write · GPT-6 Astra                     cited claims; uncited ones dropped and counted
  ├── review · detector                       Instruction Violation · Hallucination
  ├── Slack · Approve & file / Hold           nothing is filed without the click
  ├── Stripe · stage (submit=false)           read Stripe's CE3.0 validator → submit only if qualified
  ├── Photon · one text to the customer       Gmail only if no phone or no thread
  ├── Sheets · outcome row                    amount · recovered · fee · CE3.0 · run id
  └── Slack · summary → detector post-run     Skipped Work · Out of Scope · Communication Failure