Usage is counted hourly into one ledger. On the 1st, direct subscribers are invoiced through Stripe; AWS Marketplace subscribers are billed by AWS from hourly metering.
1 · METER EVERY SEND
2 · INVOICE ON THE 1ST
3 · ACCOUNTS AND SELF-SERVICE
Subscriber campaign stack Connect · SMS · SES · WhatsApp in each subscriber's AWS account
Usage collector Lambda, hourly · counts sends and carrier cost per subscriber
Usage ledger DynamoDB · one row per subscriber, channel and day
Marketplace metering Lambda, hourly · BatchMeterUsage to AWS
AWS Marketplace AWS bills the subscriber on their AWS invoice
Invoice run EventBridge Scheduler · 1st of the month, 6:00 AM
Stripe Billing Adds line items, emails the PDF, charges card or ACH
Subscriber Gets the invoice email; failed charges retry for 14 days
Billing webhooks Lambda · paid, failed, card updated, plan changed
Subscriber accounts DynamoDB · plan, status, Stripe or AWS customer ID
Portal and admin console S3 + CloudFront + API Gateway, Microsoft 365 or email sign-in
Sign-up Stripe Checkout, or Marketplace landing page (ResolveCustomer)
monthly totals
plans and status
new subscriber
One ledger, two ways to bill. Marketplace subscribers are metered to AWS hourly; direct subscribers get a Stripe invoice on the 1st. Both read the same ledger, so every invoice matches the Campaign Usage Costs report.