Migration guide

How to migrate from Messente to Sinch

A developer-focused guide to migrating from Messente to Sinch, covering channel and compliance differences, request-format changes, a step-by-step checklist, and data-backed gotchas.

Messente is an Estonian omnichannel business messaging platform that exposes a single API for SMS, WhatsApp, and Viber (plus RCS in select markets). Sinch is a larger cloud communications platform covering messaging, voice, and email APIs. On the messaging.dev Score, Messente rates 54/100 and Sinch 92/100 — the sections below break down what that gap means in practice when you re-point your sending code.

What you gain and what you lose

Channels. You keep everything Messente offered — SMS, RCS, WhatsApp, and Viber — and add MMS, Facebook Messenger, Telegram, Apple Messages for Business, voice, and email. No channel is lost in the move.

Compliance. Both providers are GDPR and ISO 27001 aligned. Sinch additionally lists SOC 2 and HIPAA, which Messente does not.

Data residency. Messente stores data only in the EU (no US servers, no region choice). Sinch runs both EU and US servers, lets you choose your data-residency region, and also offers APAC, Australia, and Brazil.

Pricing. Messente uses quote-based commitment plans (Essential/Professional/Enterprise) plus an SMS-only pay-as-you-go option with a €500 minimum monthly spend, and does not publish a per-message price. Sinch is pay-as-you-go per message with volume and committed-use tiers, publishing an indicative ~$0.0075 per US SMS segment. Both include free developer credit on signup.

Tooling. Docs quality is rated high for both. Sinch adds a sandbox test environment (Messente has none) and an SMTP interface alongside REST and SMPP. SDK coverage is close — both ship Python, Node.js, PHP, Java, and C# — but Messente also ships a Ruby SDK that Sinch does not.

How the request format differs

Messente (source):

curl -X POST 'https://api.messente.com/v1/omnimessage' \
  -u YOUR_MESSENTE_API_USERNAME:YOUR_MESSENTE_API_PASSWORD \
  -H 'Content-Type: application/json' \
  -d '{"to": "+37251000000", "messages": [{"channel": "sms", "text": "hello sms"}]}'

Sinch (target):

curl -X POST 'https://us.sms.api.sinch.com/xms/v1/YOUR_SERVICE_PLAN_ID/batches' \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"from":"+15005550006","to":["+15551234567"],"body":"Hello from Sinch"}'

Three things change:

  • Endpoint. Messente posts to one omnichannel URL. Sinch’s SMS endpoint is region-scoped and embeds your service_plan_id in the path (.../xms/v1/{service_plan_id}/batches); the channel is implied by the endpoint rather than named in the body.
  • Auth. Messente uses HTTP Basic auth (an API username and password via -u). Sinch uses a Bearer token in the Authorization header.
  • Payload. to changes from a single string to an array of strings. Sinch requires an explicit from sender field that Messente’s SMS body omits. The message text moves out of the messages[].text array into a flat top-level body string, and Messente’s per-message channel field disappears.

Migration checklist

  1. Create a Sinch account, then generate an API token and note your service_plan_id from the dashboard.
  2. Map each request field: to → array, add from, and messages[].textbody.
  3. Swap auth from HTTP Basic to a Bearer token header.
  4. Re-point your base URL to the region-scoped .../xms/v1/{service_plan_id}/batches endpoint, choosing your data-residency region here.
  5. Re-test against Sinch’s sandbox before sending live traffic.
  6. Update delivery-report and webhook callbacks to consume Sinch’s payloads.
  7. Run both integrations in parallel, compare delivery, then cut over.

See how to start with Sinch for the full first-message walkthrough, and the Messente vs Sinch comparison for the side-by-side dataset.

Watch out for

  • Country coverage drops from 197 (Messente) to 150 (Sinch) — verify your key markets are still reachable.
  • No official Ruby SDK. If your Messente integration used the Ruby SDK, you will call Sinch’s REST API directly or switch languages.
  • The default endpoint is US-hosted. Messente kept data in the EU only; Sinch offers EU residency, but the quickstart URL points at us. — select the EU region explicitly if EU-only storage matters.