Delivery attempts
Twilio will charge you full termination fees for a message if delivery was attempted, i.e. the message status is "sent," "delivered," "undelivered," or "delivery unknown." For more details on possible message statuses, see
What are the Possible SMS and MMS Message Statuses, and What do They Mean?
In some cases, messages may be sent from Twilio to the carrier, but are not received at the end user's handset. Check out our SMS troubleshooting guide for detailed troubleshooting steps.
API-level errors (HTTP 400 response errors) and Failed messages
If you make an API request to Twilio to send a message, and Twilio returns an HTTP response error (for example, an HTTP 400), this means that Twilio was unable to process your request. Starting from September 30th, 2024, most "Failed" messages will be charged a "Failed message processing fee". See here for more details on this fee.
API requests to Twilio may fail for a variety of reasons, for example, due to something malformed or incorrect in your API request or restrictions on the types of messages that can be sent to a destination. These types of errors are typically in the 2XXXX error range (e.g. 21612). Check out the error and warning code reference page to learn more.
A note about WhatsApp and other non-SMS channels
Messaging channels other than SMS and MMS may have slightly different billing behavior. Refer to the pricing documentation for the messaging channel you are using for more information.