What the gift card ledger costs
A ledger that holds other people’s money should not cost much to run, and this one does not. This post breaks the bill down line by line at a realistic small-business volume — around 300 cards issued and 800 redemptions a month — and shows where every cent of the roughly $2.10 monthly total goes. The headline is that the centrepiece, the atomic redemption, costs a fraction of a cent each; the bill is dominated by one Secrets Manager secret and keeping a continuous backup of the ledger. We finish with the bill at ten times the volume.
Key takeaways
- About $2.10/month at a realistic volume of roughly 300 cards issued and 800 redemptions.
- The centrepiece, the atomic redemption, is a single conditional write — a fraction of a cent each, a few cents for the whole month.
- The bill is dominated by fixed costs: one Secrets Manager secret and a continuous backup of the ledger.
- EventBridge Scheduler, SQS, and AWS Budgets all sit inside their free tiers and add nothing.
- At ten times the volume the bill lands around $9/month, because most of it scales with writes and email, not with a server.
The volume we’re pricing
Costs only mean something against a volume, so here is the one we’re pricing: a small business that issues about 300 gift cards a month and takes about 800 redemptions against the live pool. The nightly expiry sweep runs once a day; the reconciliation report runs once a month. Receipts go out on issue and on redemption, so SES sends on the order of 1,100 emails a month plus the one report. Everything lives in a single region, eu-west-2, with no always-on compute anywhere.
The line-by-line bill
| Service | What it does here | Monthly |
|---|---|---|
| Secrets Manager | One secret — the SES / config credentials | $0.40 |
| DynamoDB (on-demand) | Writes & reads: ~300 issues, ~800 redemptions, sweep + report scans | $0.45 |
| DynamoDB backup (PITR) | Continuous point-in-time recovery on the cards & ledger tables | $0.30 |
| CloudWatch Logs | Function logs at 7-day retention | $0.25 |
| SES | ~1,100 issue & redemption receipts + the monthly report | $0.20 |
| Data transfer & misc | Small request and egress overheads | $0.20 |
| S3 (versioned) | Monthly reports, CSV exports, ledger snapshots | $0.15 |
| Lambda (Python 3.14, arm64) | Issue, redeem, expiry, report invocations | $0.10 |
| Bedrock (Claude Haiku 4.5) | One report-narrative call a month | $0.05 |
| EventBridge Scheduler | Nightly sweep + monthly report (free tier) | $0.00 |
| SQS + dead-letter queue | Receipt / alert buffering (free tier) | $0.00 |
| AWS Budgets | Two budgets and an alert (free tier) | $0.00 |
| Total | $2.10 |
Where the money actually goes
The striking thing about this bill is that the part everyone worries about — getting redemptions right under load — is the cheapest line on it. Each redemption is one DynamoDB conditional write; 800 of them, plus the issues and the scheduled scans, come to well under half a dollar for the month. The expensive lines are fixed and have nothing to do with how busy the shop is: one Secrets Manager secret at $0.40, and continuous backup of the cards and ledger tables at $0.30. For a system holding other people’s money, paying $0.30 a month to be able to rewind the ledger to any second is the easiest line item to justify on the whole list.
What ten times the volume costs
Now run the same shape at ten times the traffic: about 3,000 cards issued and 8,000 redemptions a month. The fixed lines do not move — the secret is still $0.40, the report still fires one Bedrock call — while the usage-based lines scale roughly with the work. DynamoDB writes and reads grow toward $3.50–$4.00, SES toward $1.50, logs and data transfer up in step, and continuous backup edges up with the ledger’s size. The total lands around $9 a month. Even at ten times the customers, there is no server to grow, no cluster to size, and no idle capacity billed overnight — the bill tracks the number of cards and emails, and almost nothing else.
Why the bill stays small
- No always-on compute. Lambda bills per invocation; between sales the system costs nothing to run.
- The atomic redemption — the hard part — is one conditional write, the cheapest line on the bill.
- On-demand DynamoDB means you pay per request, not for provisioned throughput sitting idle.
- The fixed floor is small and honest: one secret and a continuous ledger backup.
- Scheduler, SQS, and Budgets stay inside the free tier at this volume and add nothing.