Short answer
Open the SMS provider’s message log and read its error for the failed send. Fix the credentials or sender in Supabase Auth settings, send numbers in international format with the country code, and check that the provider account can send to that country. For testing, use test phone numbers with fixed codes.
Rather not fix it yourself? App Fix Ticket starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.
Why the SMS doesn’t send, and the fix
01
The provider credentials or sender are wrong
“Sending an SMS message failed. Check your SMS provider configuration.” Supabase docs, Auth error codes (sms_send_failed)
A typo in the account SID, auth token or messaging service, or a sender number the account doesn’t own, makes every send fail. Re-enter them in the Phone provider settings under Authentication in the dashboard.
02
The number isn’t in international format
Send the number with a plus sign and country code, the way the docs example does. A local number without the country code can be refused by the provider.
const { error } = await supabase.auth.signInWithOtp({ phone: '+13334445555', });03
The provider account can’t send there
Trial accounts, unverified numbers and blocked countries are common reasons. The provider’s message log shows which one. Upgrade the account, verify the destination for trials, or allow the country in the provider’s settings.
04
Tests burn real SMS
“To test phone sign-in without sending SMS, add test phone numbers with fixed codes.” Supabase docs, Phone login
Also check: repeated tests against real numbers hit provider limits and cost money. Add test phone numbers with fixed codes for development.
Checked against the vendor’s docs on : Supabase docs: Auth error codes; Supabase docs: Phone login.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
“Very responsive, attentive to fixing bugs, and completed the project as needed! Thank you!”
Related: Supabase email rate limit exceeded · Supabase over_request_rate_limit · Supabase identity_already_exists · Supabase db push failed