Part 6 of 7 · Chargeback responder series ~6 min read

What the chargeback responder costs

This is one of the cheapest systems in the series, and the reason is worth stating plainly: catching the dispute, gathering the evidence, watching the deadline, and filing the response are all but free — they’re plain Python, a few API calls, and some storage. The whole bill is one variable line, the Bedrock call that assembles each packet, sitting on top of two tiny fixed costs. This post breaks down exactly where the $2.40 a month goes, what changes at ten times the volume, and why the maths is lopsided in your favour.

Key takeaways

  • Around $2.40/month at typical SMB volume (about 25 disputes a month).
  • Fixed AWS cost is essentially zero. No always-on compute, no NAT Gateway, no API Gateway.
  • Catching, gathering, watching, and filing are all but free — plain code, a few API calls, a little storage.
  • The one real variable is the Bedrock call that assembles each packet; everything else rounds to pennies.
  • At 100 disputes it’s around $6; at 250 it’s around $13. One recovered order pays for a year of it.

Cost at three volumes

Monthly cost at three dispute volumes, broken out by component A vertical stacked-bar chart showing monthly cost in US dollars at three dispute volumes. The leftmost bar represents 25 disputes a month and shows a total around $2.40, dominated by the Bedrock slice (one packet-assembly call per dispute), with a small fixed slice for Secrets Manager and an everything-else slice. The middle bar represents 100 disputes and shows a total around $6, the same shape with the Bedrock slice grown roughly linearly while the fixed slice stays the same height. The rightmost bar represents 250 disputes and shows a total around $13, with Bedrock now the overwhelming majority of the bar because it is the only part that scales with dispute count. Below the chart is a legend explaining the three sections of each bar: Bedrock (one packet-assembly call per dispute), Secrets Manager (two small fixed secrets), and an everything-else bucket for Lambda runtime, DynamoDB on-demand, S3, EventBridge and Scheduler, SES, SQS, and CloudWatch. A note at the bottom: assembling the packet is the only cost that grows with volume — catching, gathering, watching, and filing are essentially free. $0 $5 $10 $15 25 disputes ~$2.40 100 disputes ~$6 250 disputes ~$13 Bedrock (one packet-assembly call per dispute) Secrets Manager (two fixed secrets) Everything else (Lambda, DDB, S3, EventBridge, Scheduler, SES, SQS, CloudWatch) Assembling the packet is the only cost that grows — catching, gathering, watching, and filing are essentially free.
Fig 6. Monthly cost at three dispute volumes. Only the Bedrock slice grows with the number of disputes; the fixed Secrets Manager cost stays flat and everything else rounds to pennies.

The breakdown at ~25 disputes a month

ComponentWhat it does~/month
Bedrock (Haiku 4.5)One packet-assembly call per dispute$0.95
Secrets ManagerTwo secrets — processor key, carrier key — at $0.40 each$0.80
Lambdawebhook, gather, assemble, file, guard, ack, summary$0.20
DynamoDB on-demanddisputes, evidence index, deadlines$0.10
S3Gathered evidence + packet PDFs$0.10
SES + SQS + EventBridgeOwner alerts, work queue, dispute events, Scheduler$0.10
CloudWatch + BudgetsLogs at 7-day retention, one cost alarm$0.15
Total~$2.40

Where the dollars actually go

Bedrock (the bulk). Each dispute gets one Haiku 4.5 call to assemble the rebuttal: the prompt carries the dispute, the reason-code playbook entry, and the gathered evidence — a few thousand input tokens — and returns the structured packet, a couple of thousand output tokens. At Haiku pricing that’s a few cents per dispute. Across 25 disputes it’s under a dollar. The monthly summary adds one larger call — a narrative of disputes received, value defended, and win rate by reason code — for a couple of cents. This is the only line that grows with volume, because it’s the only thing done once per dispute that isn’t plain arithmetic.

Secrets Manager (the fixed floor). Two secrets — the processor API key and the carrier API key — at $0.40 each. This is the largest fixed cost in the system, which tells you how cheap everything else is. It doesn’t grow with disputes; it’s the same $0.80 whether you handle five disputes or five hundred.

Lambda runtime. The webhook, gather, assemble, file, deadline-guard, ack-handler, and summary functions are all small and short. The webhook answers in well under a second; gather spends most of its time waiting on the carrier and the inbox; the guard runs at most once per dispute. The Lambda total lands around $0.20 at this volume — arm64 and tight memory sizing keep it there.

DynamoDB on-demand. Three small tables — cbr-disputes, cbr-evidence, cbr-deadlines. A handful of writes per dispute and a few reads. Pennies a month at any SMB volume.

S3 and storage. The raw gathered evidence and the packet PDFs — a few MB per dispute, a few hundred MB a year. Effectively free, even with versioning on and a multi-year lifecycle for the audit trail.

SES, SQS, EventBridge, CloudWatch. Outbound owner alerts at $0.10 per thousand; the work queue with its dead-letter queue; the dispute-event rule and the one-off Scheduler jobs; logs at 7-day retention. Each is cents a month here.

What doesn’t cost money

  • API Gateway. Replaced by two Lambda Function URLs — one for the webhook, one for the file/hold buttons.
  • NAT Gateway. Nothing is in a VPC. No NAT, no $32/month minimum.
  • Always-on compute. No EC2, no Fargate. Everything is event- or schedule-driven.
  • A scheduled poller. Disputes arrive by webhook, so there’s nothing to poll. The only schedule is the one-off deadline guard per dispute.
  • Models on the decisions. Whether to file and the deadline maths are plain code. Bedrock fires only to assemble the rebuttal and write the monthly summary.

How the cost scales — and why the maths is lopsided

Only Bedrock grows with dispute count, and it grows linearly: a few cents per dispute. So 100 disputes a month lands around $6, 250 around $13, and 1,000 around $40 — at which point you’d look at batching the summary and caching playbook entries, but the assembly call itself stays the cost. Everything else is flat or rounds to nothing.

Now weigh that against what a chargeback costs. A single disputed order is the amount itself — £85, £200, whatever it was — plus a non-refundable dispute fee of £15–20 that you pay win or lose. Recover one £85 order a month and the system has paid for itself roughly thirty times over. Set an AWS Budgets alarm at $25/month so anything unusual pages you, and the normal-volume bill sits comfortably underneath it. The cheapest part of this system is the system; the expensive part is the chargebacks you were already losing.

Last post in the series: the engineering reference. Same system, drawn for engineers — service names, Lambda inventory, IAM scopes, DynamoDB schemas, the SES setup, the EventBridge rule, and the Scheduler deadline-watch config.

All posts