Two bills, and only one is ours
The other is Cloudflare’s, and what it costs is the page for it. Ours is your subscription on a plan, charged to a payment method.
Ours is the admin interface — the plan you are on.
Cloudflare’s is your own account: your D1 rows, your R2 bytes, your Worker requests, your Durable Object duration.
Where an invoice comes from
The rail that processed the payment, and it is the authoritative document.
The dashboard lists what it knows from the purchase record — the product, the rail, the transaction, the date, and what it granted.
What the record does not hold
No card details. No instrument you could charge with.
Reconciling
Every purchase carries the rail’s own transaction id, so a line on the rail’s invoice and a row in the record match on one value.
And a redelivered webhook does not create a second row — UNIQUE (rail, providerEventId) on the delivery, UNIQUE (rail, providerTransactionId) on the purchase.
Enterprise
A contract, and the compliance surfaces that go with it.