Choose a language

Wholesale and resellers

Buy in volume. Sell under your brand.

Approved resellers get a fixed discount on every number and sell our numbers to their own customers under their own brand, through our API.

  • 2,250+services
  • 200+countries
  • 100%refund when no message arrives
Example of a reseller console: three orders from your customers, each tagged with its own customer reference

How the reseller program works

Three steps from your application to selling under your own brand.

  1. Apply

    Tell us about your business, how you sell and the spend you expect each month.

  2. Get approved

    A person reviews every application and sets your discount and limits. You follow the status in your account.

  3. Sell under your brand

    Buy through the API with your customer reference. Your discount applies to every number, and numbers without a code are refunded.

Paused for now

Everyone pays list prices for now

Volume tiers are switched off at the moment. When they return, your tier follows what you spent in the last 30 days on every channel.

Approved resellers get a fixed discount on every number in the meantime.

Volume tiers by spend in the last 30 days

  1. Standard Below $50 List prices
  2. Level 1 $50 and more 3% off
  3. Level 2 $250 and more 5% off
  4. Level 3 $1,000 and more 8% off
  5. Level 4 $5,000 and more 12% off

Sell numbers under your own brand

Run your own shop, bot or app and buy every number through our API. Your customers see your brand, your prices and your support.

  • Your brand only

    Numbers and codes reach your customers through your own product. We never contact them.

  • Reseller discount

    Approved resellers get a fixed discount on every number, whatever their monthly volume.

  • Per-customer tracking

    Tag each purchase with your own customer reference, then filter and report by it.

  • Monthly statement

    Charges, refunds and savings per day, customer and service, with a CSV export for your bookkeeping.

  • Limits that fit

    We set the number of active numbers and the daily spend limit to match your volume.

  • Automatic refunds

    No code, no charge. Unused numbers go back to your balance, so you can refund your customer the same way.

Built on the API you already know

REST with signed webhooks, or the sms-activate protocol for existing panels and bots. Add your customer reference to each purchase and you are done.

  • customer_ref on every purchase, in the REST API and the compatible endpoint
  • Statements in JSON and CSV, per day, customer and service
  • Your personal prices in every price list the API returns

curl

curl -s -X POST \
  https://smsgrab.com/api/dev/v1/activations \
  -H "Authorization: Bearer $SMSGRAB_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "service": "whatsapp",
    "country": "indonesia",
    "customer_ref": "shop-4821"
  }'

Python

activation = requests.post(
    "https://smsgrab.com/api/dev/v1/activations",
    headers={
        "Authorization": f"Bearer {key}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={
        "service": "whatsapp",
        "country": "indonesia",
        "customer_ref": customer.ref,
    },
    timeout=30,
).json()

Node.js

const url = 'https://smsgrab.com/api/dev/v1/activations';
const activation = await fetch(url, {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${key}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(),
  },
  body: JSON.stringify({
    service: 'whatsapp',
    country: 'indonesia',
    customer_ref: customer.ref,
  }),
}).then((response) => response.json());

PHP

$activation = json_decode((string) $client->post('activations', [
    'json' => [
        'service' => 'whatsapp',
        'country' => 'indonesia',
        'customer_ref' => $customer->ref,
    ],
    'headers' => ['Idempotency-Key' => bin2hex(random_bytes(16))],
])->getBody(), true);

Go

order := map[string]any{
	"service":      "whatsapp",
	"country":      "indonesia",
	"customer_ref": customer.Ref,
}
err := call("POST", "/activations", order, idempotencyKey(), &activation)
201 Created
{
  "id": "5c1d0c2e-9f3a-4b7e-8a61-2f0c9d4e7b10",
  "status": "WAITING_SMS",
  "phone_number": "+6281234567890",
  "price_minor": 17,
  "currency": "USD",
  "expires_at": "2026-09-27T10:25:00.000Z",
  "customer_ref": "shop-4821"
}

Apply to become a reseller

Tell us about your business. A person reviews every application, and you can follow its status in your account.

  • A verified email address on your SmsGrab account
  • Your company or project and how you sell
  • The spend you expect each month

Sign in to apply

Applications are linked to your SmsGrab account, so your discount lands where you buy. Signing in with a new email address creates your account.

Sign in or create an account

Wholesale questions

More answers are in the help center

Does every number get the full discount?

Almost always. A few very cheap numbers have a minimum price, so their discount can be smaller. The price you see before you buy is always the price you pay.

What is the difference between a tier and a reseller discount?

Tiers follow your volume and change with it. Approved resellers get a fixed discount agreed with us. You always get the larger of the two.

How do I track purchases per customer?

Send your own customer reference with each API purchase. Your statement then groups charges and refunds per customer, and the CSV export includes it.

Do my customers see SmsGrab?

No. They use your product, and the numbers and codes reach them through it. We never contact your customers.

Can I still use promo codes and referral credits?

Yes. Credits go to your balance as usual, and your discount applies to every number you pay for with it.

Ready to grow with SmsGrab?

Tell us about your business. Approved resellers get a fixed discount on every number and sell under their own brand.