Summary

  • Twilio’s standard Verify fee is $0.05 for an approved code. Failed, expired and unfinished checks avoid that platform fee, while SMS attempts can still incur delivery charges.
  • One verification can generate several message attempts. Twilio’s attempt records expose their channel prices separately, with final price data sometimes arriving up to 24 hours after delivery.

A failed login has two receipts

Picture a user asking for a code, waiting, asking again and leaving. The product dashboard records no successful authentication. The SMS route has handled two attempts. Twilio’s pricing page draws the accounting boundary plainly: the standard $0.05 Verify fee is charged when the correct code is approved; SMS message attempts carry their own fees. A zero in the successful-check column therefore says little about the delivery column.

Twilio gives $0.0083 per US SMS as its public example, alongside the $0.05 successful-verification charge. At that example rate, 100 SMS attempts and no approved checks would mean $0 in standard platform verification fees and $0.83 in SMS attempt fees, before any other applicable charges. This is arithmetic on Twilio’s published US example, not a customer invoice. Destination, carrier, message segments, channel and contract terms move the actual price. If a customer generates and validates its own passcodes, Twilio says the verification fee is charged per created attempt rather than per successful approval.

That change in implementation changes the first receipt as well.

The Verification Attempts API is the more useful counter for the second receipt. Twilio defines an attempt as a communication with the user carrying a code; a single verification may create more than one. The public-beta endpoint can list attempts from the last 30 days, including channel, conversion status and an attempt price. That price records channel cost and excludes the successful-verification fee. It can move as the message progresses and may take up to 24 hours after delivery to settle. For some countries or carriers, Twilio says status and price data may be unavailable. A nightly snapshot taken immediately after sending can therefore understate what the later attempt record says.

Twilio’s Fraud Guard documentation adds another ledger: allowed attempts, blocked attempts and estimated savings. The savings number applies standard SMS pricing to blocked sends. It is a model of avoided spend, while the attempt price is a charge record. The two should not be added or subtracted as though they were entries on the same invoice.

The practical purchase is an authentication outcome plus the traffic spent trying to get it. The operator who budgets only for successful logins will discover the missing line when retries rise, codes go unanswered or geography shifts. The bill arrives at the attempt boundary, long before the user has proved anything.

Sources