Skip to main content

TWINT Payment Integration

TWINT is the leading mobile payment app in Switzerland. Customers approve the payment in the TWINT app. This guide explains how to accept TWINT payments with the Netvalve Payment Gateway.

Availability
Customer countryCurrencypaymentOption
Switzerland (CH)CHFapm_twint

The order currency must be CHF for TWINT to be offered.

For the shared redirect flow, webhook handling, and Checkout SDK notes, see the European Payment Methods overview.


How to offer TWINT​

Contact the Netvalve team to enable TWINT on your account before going live.


Step 1 — Create the order​

Send a POST request to the Create Order endpoint with paymentOption set to "apm_twint" and the order currency set to CHF.

POST /order — request body
{
"amount": 49.90,
"currency": "CHF",
"siteId": "f76fb7ed-3312-4791-a216-45918f899271",
"clientOrderId": "{{clientOrderId}}",
"orderDesc": "Order #12345",
"successUrl": "https://merchantsite.com/success.html",
"cancelUrl": "https://merchantsite.com/cancel.html",
"failedUrl": "https://merchantsite.com/failed.html",
"pendingUrl": "https://merchantsite.com/pending.html",
"paymentOption": "apm_twint",
"customerDetails": {
"customerAddress": "1 Test Street",
"customerCity": "Zurich",
"customerCountryCode": "CH",
"customerEmail": "customer@example.com",
"customerIp": "123.123.123.123",
"customerName": "Luca",
"customerLastName": "Meier",
"customerPhone": "800-1234567",
"customerZipCode": "8001"
}
}
tip

paymentOption accepts a comma-separated list. For example, "card,apm_twint" shows both card and TWINT on the hosted page.


Step 2 — Redirect and handle the outcome​

On success the response contains a redirectUrl (verify responseCode === "GTW_1000" first). Send the customer there; Netvalve takes them to TWINT to authorise, then returns them to one of your URLs:

OutcomeRedirect target
Payment succeededsuccessUrl
Customer cancelledcancelUrl
Payment failedfailedUrl
Payment pendingpendingUrl

Treat the webhook or an Inquiry poll as the source of truth for the final result.


Sandbox testing​

TWINT has no shared, self-service test credentials. Contact the Netvalve team to request TWINT sandbox test credentials before you start testing.

Once you have them, the integration itself is unchanged — create the order against the Sandbox / UAT base URL, follow the redirectUrl, approve the payment in the TWINT test app, and confirm the customer lands on the matching return URL and your webhook records the same result.

See Testing in sandbox for the shared setup, amount limits, and how to test the pending path.


ResourceLink
European Payment Methods overviewOverview
Hosted Payment Page guideHosted Payment Page
Swagger API referenceAPI Reference
Webhook Message guideWebhook Message
Error Codes referenceError Codes