Bulk SMS for businesses: send to thousands
How companies in Germany and Austria send bulk SMS: CSV campaigns or the API, consent under § 7 UWG, opt-out, timing and what 5,000 SMS cost.
Upload a CSV and send a campaign from the dashboard, or send up to 500 recipients per request to /api/sms/send-bulk. Advertising SMS in Germany and Austria need prior consent and an opt-out in every message. With TopSMS, 5,000 SMS to Germany cost €420.
Two ways: dashboard campaign or API
| Campaign in the dashboard | Bulk API | |
|---|---|---|
| For whom | Marketing, office, associations, practices | Developers, shops, CRMs |
| Recipients | CSV import or contact groups | Up to 500 per request, any number of requests |
| Personalisation | Variables from CSV columns | Individual text per recipient |
| Scheduling | Date and time in the campaign | send_at |
| Results | Delivery and click statistics | Webhook or job status |
Campaign without code
- Import contacts as CSV (phone, name and any other columns) or pick a contact group. Contacts marked as opted out are skipped automatically.
- Write the text and personalise it with variables from your columns. The editor shows characters and segments as you type.
- Shorten links with the built-in link shortener to see who clicked.
- Send a test SMS to your own phone, then send immediately or schedule the campaign.
The price is shown before sending, and messages rejected by the network are credited back automatically.
Bulk sending via API
One request to /api/sms/send-bulk takes up to 500 recipients, either with the same text (to as a list) or with individual texts (messages):
curl -X POST https://www.topsms.cz/api/sms/send-bulk \
-H "Authorization: Bearer CLIENT_ID:SECRET" \
-H "Content-Type: application/json" \
-d '{
"from": "MyShop",
"messages": [
{ "to": "+4915112345678", "text": "Hi Anna, your 10% voucher SPRING10 is valid until Sunday. Opt out: myshop.de/stop" },
{ "to": "+436641234567", "text": "Hi Lukas, your 10% voucher SPRING10 is valid until Sunday. Opt out: myshop.de/stop" }
],
"send_at": "2026-11-12T10:00:00+01:00"
}'With more than 50 recipients the API answers immediately with 202 Accepted and a jobId; the queue sends within seconds to minutes. You follow the progress via GET /api/sms/jobs/{jobId} or receive delivery reports by webhook. A scheduled job can be cancelled with DELETE until it starts, and the price is credited back. Details in the API documentation.
The legal side in Germany and Austria
The distinction that matters is transactional versus advertising:
- Transactional and service messages (order status, appointment change, closure notice to existing customers) need no advertising consent, but still a legal basis under the GDPR, usually the contract.
- Advertising SMS need the recipient's prior express consent. In Germany that follows from § 7 UWG, in Austria from § 174 TKG 2021. Keep a record of when and how consent was given; double opt-in is the safe standard.
- Every advertising SMS must identify the sender and offer a simple way to object. Mark those who object as opted out; campaigns then skip them.
More in our guide SMS, GDPR and § 7 UWG. It is not legal advice; for a specific campaign, ask your lawyer.
Timing and text
- Send advertising on working days between about 9 am and 7 pm; nobody wants a voucher at 11 pm.
- Put the sender and the point first: “MyShop: 10% on everything until Sunday” beats a greeting.
- Stay within 160 characters. One emoji switches to Unicode and halves the limit to 70, which doubles the price.
- Use your company name as sender (up to 11 characters); in Germany and Austria it works without registration.
What does bulk SMS cost?
| Recipients in DE/AT | Cost (1 segment each) |
|---|---|
| 500 | €42.00 |
| 5,000 | €420.00 |
| 20,000 at the volume price from 10,000 per month | €1580.00 |
€0.084 per SMS to Germany, Austria and the rest of the EU, no monthly fee, prepaid credit that does not expire. Volume prices from 10,000 SMS per month on request; all prices on the pricing page.