Part 6 of 7 · Booking deposit collector series ~6 min read

What the booking deposit collector costs

A system that costs more than the no-shows it prevents is a toy. This post is the cost breakdown: every AWS service this design touches, what each adds up to at around 120 bookings a month, why the total lands near $2.40 — and why the deposit processing fee lives on the payment provider’s invoice, not this one.

Key takeaways

  • About $2.40/month at roughly 120 bookings, and the fixed cost is almost nothing — nothing runs while the calendar is quiet.
  • The two biggest lines are the deposit-request and reminder texts and the small Bedrock calls that phrase them. Everything else is cents.
  • The only real fixed cost is Secrets Manager: two secrets — the payment signing key and the SMS key — at $0.40 each.
  • The deposit processing fee isn’t on this bill at all — it’s a percentage the payment provider takes on their own invoice.
  • At ten times the volume (around 1,200 bookings) the AWS bill lands near $15 — it scales with use, not with idle time.

Where the money goes

The system is serverless end to end, so there’s no instance ticking over when the business is shut and no idle bill. You pay for a booking only when one happens. At a typical volume — call it 120 bookings a month, each getting a deposit request, most getting a reminder or a confirmation, a few settling as no-shows — here’s the whole AWS bill, line by line.

AWS serviceWhat it does hereMonthly
Secrets ManagerTwo secrets — payment webhook signing key, SMS/provider API key ($0.40 each)$0.80
SNS (SMS)Deposit request, one reminder, and confirmation/settlement texts (~2 per booking)$0.75
Bedrock (Claude Haiku 4.5)One compose call per message — request, reminder, confirmation, forfeit note$0.50
DynamoDB (on-demand)Bookings, slots, payments, opt-out, audit — small conditional reads and writes$0.12
CloudWatch LogsFunction logs, 7-day retention$0.10
SESHandover and dispute email to your team$0.05
Lambda (Python 3.14, arm64)Intake, payment webhook, composer, release sweep, settlement sweep$0.05
SQS + DLQBuffering between the webhooks and the slower model and SMS calls$0.02
EventBridge SchedulerThe release sweep and the settlement sweep$0.01
AWS BudgetsCost alarm (first two budgets are free)$0.00
Total~120 bookings/month$2.40

The shape of that bill is the point. The only line that costs money while the system sleeps is Secrets Manager — two secrets at $0.40 each, $0.80 a month no matter what, which is a third of the total at this volume. Everything else is genuinely usage-priced and rounds to zero at idle. The two lines that move with volume are the ones that actually reach the customer: the messages themselves and the small Haiku calls that phrase them. All the machinery doing the real work — holding slots, confirming payments, releasing unpaid holds, settling on the day — is plain Lambda and DynamoDB, and together it costs less than the SMS line alone.

The line that isn’t on this bill

Two caveats belong on the SMS and payment lines. First, AWS prices outbound SMS per message, and the exact rate depends on the destination country and carrier — a UK mobile is a few pence, other countries differ, and some routes add surcharges. The $0.75 here is a UK-leaning estimate; your real number will track your country and provider, and if your booking or telephony tool sends the texts instead of SNS, that cost moves onto their invoice and off this table. Second, and more importantly for this system: the deposit processing fee is not an AWS cost at all. When a customer pays a £30 deposit, the payment provider takes their cut — typically a small percentage plus a fixed few pence — on their statement, not here. That fee is the genuine cost of collecting a deposit, and it’s the same handful of pence per transaction whether or not this system exists. What this system adds on top is the near-nothing you see above.

What ten times the volume costs

Push this to a busy business — 1,200 bookings a month, ten times the volume — and the AWS bill lands near $15, not $24. It’s sub-linear because the fixed lines don’t move: Secrets Manager stays at $0.80, the schedules stay at a cent, and AWS Budgets stays free. What scales is the genuinely usage-priced work — roughly $7 of SMS for ten times the texts, about $5 of Bedrock, and a few dollars more spread across DynamoDB, logs, SES, and Lambda. Even then, the two things that reach the customer dominate, and all the machinery in between stays close to free. (The payment provider’s fee scales too, of course — but it always sits on their invoice, and it’s dwarfed by the deposits it’s protecting.)

Monthly AWS cost split at about 1,200 bookings A single horizontal bar divided into proportional segments showing a roughly $15 monthly AWS total at ten times the base volume. From left: SMS is the largest segment at about $7.00; Bedrock about $5.00; DynamoDB about $1.00; Secrets Manager a fixed $0.80; and a final combined segment for CloudWatch Logs, SES, Lambda, SQS and EventBridge at about $1.20. Labels sit above or below each segment. A note reads: the fixed lines do not move with volume, so the bill grows sub-linearly — and the payment provider’s processing fee is never on this bill at all. SMS ~$7.00 Bedrock ~$5.00 DDB ~$1.00 Secrets $0.80 rest ~$1.20 Monthly AWS cost — ~1,200 bookings — total ~$15 Fixed lines don’t move with volume; the SMS and model calls scale — and the provider’s deposit fee is never on this bill.
Fig 6. The monthly AWS bill at ten times the base volume, about 1,200 bookings. SMS and Bedrock are the bulk of it; the fixed lines stay put, so the total grows sub-linearly — near $15, not ten times $2.40 — and the payment processing fee lives on the provider’s invoice, not here.

The honest way to read this: the AWS bill is rounding error against what a no-show is worth. A single empty table on a Saturday night, a missed two-hour tattoo sitting, a blocked grooming slot — any one of those is worth far more than $2.40, and this design protects them by the dozen. Even at $15 a month for a busy business, the system pays for itself the first time it turns a would-be no-show into a paid, confirmed booking — or frees a dead slot early enough to sell it to someone from the waiting list.

Design rules that shaped the cost

  • Pay per booking, not per hour. No always-on compute means no idle bill.
  • Spend the model sparingly. One Haiku call per message, and only to phrase — never to decide, confirm, or settle.
  • Cheap work stays cheap. Holding, confirming, releasing, and settling are plain Lambda and DynamoDB, cents at this scale.
  • Know your one fixed cost. Secrets Manager is the only line that bills while the system sleeps.
  • The deposit fee isn’t yours to host. Processing sits on the provider’s invoice; the Budgets alarm watches the AWS side, with SMS the line to watch.
All posts