Built on Meta's official WhatsApp Cloud API

Verification codes that land on WhatsApp.

Wasl sends one-time passcodes over Meta's official WhatsApp Cloud API, from your own business number or from the Wasl number with nothing to set up. A code WhatsApp rejects or reports as failed goes out once by SMS instead.

Our team reviews every account before its first message.

Your app

Wasl

queue · route · track

DELIVERED

Your user

WaslBusiness account WhatsApp

482 913 is your verification code. For your security, do not share this code.

This code expires in 5 minutes.

One SMS, only if WhatsApp fails it

  • Meta's official Cloud API
  • Your number or ours
  • Delivery tracked by webhook
  • One SMS fallback, never two
  • Prepaid, per message
  • Numbered invoices and receipts
  • Excel and CSV reports
  • Encrypted tokens and codes

How it works

From sign-up to the first code.

Wasl is a thin layer over Meta's WhatsApp Business Platform. It handles the onboarding, the template, the tokens and the webhooks, so your code only has to say who gets which code.

  1. 01

    Apply

    Create an account with your company details and confirm your email. Our team reviews the application and turns the account on.

  2. 02

    Choose who sends

    Connect your own WhatsApp Business number in a few clicks, or send from the Wasl number with nothing to connect.

  3. 03

    Add credit

    Request a top-up from the dashboard. Once we approve it you receive a numbered invoice, and the credit lands when it is paid.

  4. 04

    Send

    Create an API key and call one endpoint. Every message is tracked until it is delivered.

Sending channels

Your number, or ours.

Choose for your account and change it at any time from the dashboard. Every message records which channel sent it, and each channel has its own price on your plan.

The Wasl number is enabled for each account by our team.

Yours, then Wasl

Automatic

Your own number while it is ready to send. When it is not, for example while you reconnect it, the Wasl number takes over on its own.

  • Switches without a code change
  • Each message shows its channel
  • The same API call

Your own number

Your brand

Codes come from your WhatsApp Business Account, under your name and your verified number. Connect it with Facebook Login for Business; Wasl keeps the token encrypted and submits Meta's authentication template for you.

  • Your business name in the chat
  • Several numbers, one default
  • Pick the number per request

The Wasl number

Fastest start

Codes come from Wasl's own verified WhatsApp number. Nothing to connect and no Meta paperwork: once it is enabled for your account, you can send.

  • Nothing to connect
  • Ready as soon as it is enabled
  • Priced separately on your plan
Sending channel synced from Meta
  • Preference Own, then Wasl own_then_wasl
  • Your number +964 770 ··· 41 ACTIVE · default
  • Wasl number ENABLED quality HIGH
  • Authentication template APPROVED expires 5 min

Utility & marketing templates

Write your own messages, not only codes.

An order on its way, a booking confirmed, an offer this week. Write the message in the dashboard, send it to WhatsApp for review, then call it by name from your API. The fields, the examples the review reads and the call itself are written for you.

The authentication template is still created for you. These are the ones you write.

Your message

Hello {{customer}}, order {{order_id}} is on its way.

Examples WhatsApp reviews

customer
Ali
order_id
A-1024

What your customer sees

Ali+964 770 ··· 41

Hello Ali, order A-1024 is on its way.12:00

The preview follows every letter you type, with your examples already in place.

Fields by name

no numbering

Write {{order_id}} in the message and your API sends order_id. WhatsApp wants {{1}} and {{2}}: keeping the two in step is our job, not yours.

Examples that write themselves

Name a field and it gets a row. WhatsApp reads the message with those values in place, so a field left without an example is never submitted.

WhatsApp answers in the dashboard

In review Approved

Meta tells us the verdict instead of making us ask for it. An approved template can be sent at once; a rejected one arrives with WhatsApp's own reason, and your team is notified either way.

A call made for each template

Open an approved template and its page holds the exact request: its name, its fields, your examples as the values. Copy it into your code and send.

API

Call one endpoint

Create an API key in the dashboard, then send the phone number and the code you generated. Wasl answers at once with a request ID and the channel it will use, and queues the message. The code is never shown in any interface after that.

202
queued; request_id and channel returned
422
whatsapp_not_ready, unknown_phone_number, no_active_plan
402
insufficient_credit, with the balance and the amount required
POST /api/v1/send Bearer <api key>
$ curl -X POST https://wasl.creativeadvtech.ml/api/v1/send \
    -H "Authorization: Bearer wsl_live_…" \
    -H "Content-Type: application/json" \
    -d '{ "phone": "+9647701234541", "code": "482913" }'
HTTP/1.1 202 Accepted
{
  "request_id": "01J8Z9W6R3M2P0QK7T5V4XN1YB",
  "status": "QUEUED",
  "channel": "own"
}

Watch it land

Meta reports back at every step. Each message moves from queued to sent to delivered, or to failed with Meta's reason, and the dashboard shows exactly that. A code WhatsApp rejects or reports as failed is sent once by SMS, never twice.

request_id 01J8Z9W6R3… 2.784 s
  1. QUEUED 14:32:04.118 worker picked up
  2. SENT 14:32:04.611 wamid.HBgM…
  3. DELIVERED 14:32:06.902 webhook from Meta

Reports you can hand to finance

Filter messages by date, status, channel and API key, and export them to Excel or CSV.

XLSXCSV

Billing

Prepaid credit, proper paperwork.

You pay per message from a balance you can see, and every charge matches a message in your reports.

  1. TOP-UP 01

    Request a top-up

    Choose an amount in the dashboard.

  2. INV-2026-000128 02

    Receive an invoice

    Our team approves the request and issues a numbered PDF invoice, by email and in the dashboard.

  3. RCT-2026-000094 03

    Pay it

    Settle the invoice and receive a numbered receipt.

  4. + balance 04

    Credit lands

    The amount is on your balance the moment the payment is recorded.

402 When your balance, plus any overdraft on your plan, cannot cover the next message, the API refuses with a clear 402 instead of failing silently.

What you are trusting

Wasl talks to Meta on your behalf and stays out of the way.

Rails
Meta's official WhatsApp Cloud API.
Sender
Your own WhatsApp Business Account and numbers, or the Wasl number if you choose it.
Tokens
Encrypted at rest. Sending stops the moment you disconnect.
Codes
Generated by you, stored encrypted, never shown in any interface.
Fallback
One SMS attempt when WhatsApp rejects a code or reports it failed. Never a duplicate code.
Accounts
Every account is reviewed by our team before it can send.
Billing
Per message and per channel, from a prepaid balance, with numbered invoices and receipts.

Wasl means connect.

Apply in a few minutes. Our team reviews every account before its first message.