TWINT is the most popular mobile payment solution in Switzerland, with over 5 million users. Customers pay online or in-store by linking their bank account or credit card to the TWINT app, authenticating each transaction directly on their device by scanning a QR code (web) or via an app-to-app hand-off (mobile).
PRESENTATION
| Brand | TWINT |
|---|---|
| Payment Flow | Redirection to TWINT Hosted Checkout Page (Web / QR code & Mobile app-to-app) |
| Integration | Order API |
| Product Code | twint |
| Available country codes | CH 🇨🇭 |
| Currency | CHF |
| Minimum amount | 0.01 |
| Maximum amount | Defined by the customer’s bank (in most cases CHF 5,000/month) |
| 3DS | No |
| Authentication | Via the customer's TWINT app |
| Session timeout | 15 min on the TWINT Hosted Checkout Page (3 min if the QR code is scanned but the payment is not confirmed in the TWINT app) |
| Refund |
|
| Dispute / Chargeback |
|
ESSENTIAL INFORMATION
POPULARITY AND AVAILABILITY
TWINT is the leading mobile payment solution in Switzerland, with more than 5 million users. It is widely adopted for online, mobile and in-store transactions, and lets customers pay by linking their Swiss bank account or credit card to the TWINT app.
PAYMENT PROCESS
The payment is made via redirection to the TWINT Hosted Checkout Page. Once the customer selects TWINT, they are securely redirected to authenticate and validate the transaction directly in their TWINT app — by scanning a QR code or entering a token on desktop, or via an app-to-app hand-off on mobile.
SECURITY AND COMPATIBILITY
Transactions are authenticated within the TWINT app, complying with security standards without storing sensitive data. Compatible across browsers and mobile devices.
CONFIGURATION AND COMPLIANCE
Ensure HiPay account is correctly configured. Only CHF transactions are supported. Use Redirect Pages Requirements.
USE CASES
Ideal for instant and secure payments, TWINT is perfectly suited for merchant sites targeting a Swiss customer base. The dual web (QR code / token) and mobile app-to-app experience provides a frictionless checkout and boosts conversion rates across both desktop and mobile devices.
INTEGRATION
INTEGRATION METHODS
| Method | Description |
|---|---|
| Order API | Enables direct creation and management of transactions. |
WEB VS MOBILE FLOWS
TWINT always relies on a redirection to the TWINT Hosted Checkout Page. Two customer experiences are supported depending on the device, determined by the browser_info object you send in the order request:
- Web Flow (QR code / token): On desktop, the customer is redirected to the TWINT Hosted Checkout Page displaying a QR code and a token. They scan the QR code with their TWINT app, or enter the token in the app, to authenticate.
- Mobile Flow (app-to-app): On mobile, the customer is redirected to the TWINT Hosted Checkout Page and handed off (app-to-app) to their TWINT app to confirm and validate the payment.
In both cases, the API response includes a forward_url field. You must redirect the customer to this URL to complete the payment.
USER EXPERIENCE
⚠️ The customer must have an active TWINT account (bank account or credit card linked) and the TWINT app installed.
- Customer selects TWINT on the merchant site.
- HiPay prepares the transaction.
- Customer is redirected to the TWINT Hosted Checkout Page.
Web Flow: Customer scans the displayed QR code (or enters the token) with their TWINT app.
Mobile Flow: Customer is handed off (app-to-app) to their TWINT app. - Customer confirms the amount and validates the payment in the app (session max: 15 min; 3 min after scanning the QR code without confirmation).
- Bank sends the status to HiPay.
- HiPay notifies the merchant and confirms transaction to the customer.
ORDER API INTEGRATION
MANDATORY PARAMETERS
| Parameter | Description / Example |
|---|---|
payment_product | twint |
orderid | Unique identifier (e.g., ORDER_1583157211) |
description | Brief description (e.g., Summer Sale) |
amount | Total amount (e.g., 99.99) |
currency | ISO 4217 code (CHF) |
firstname | Customer's first name |
lastname | Customer's last name |
country | Customer's country (CH) |
SPECIFIC INPUT PARAMETERS (OPTIONAL BUT RECOMMENDED)
| Parameter | Description |
|---|---|
browser_info |
Object describing the customer's device/browser (user agent, screen, language, etc.). Used to route the customer to the appropriate experience (Web / QR code on desktop, Mobile app-to-app on mobile). See browser_info specification. |
email |
Customer's email address |
streetaddress |
Postal address |
city |
Customer's city |
zipcode |
Postal code |
SPECIFIC OUTPUT PARAMETERS
| Parameter | Description |
|---|---|
forward_url |
Url to redirect the consumer to the TWINT Hosted Checkout Page (Web / QR code & Mobile app-to-app) |
ENDPOINTS
| Environment | URL |
|---|---|
| Stage | https://stage-secure-gateway.hipay-tpp.com/rest/v1/order |
| Production | https://secure-gateway.hipay-tpp.com/rest/v1/order |
NOTE: Ensure that your HiPay account and redirection URLs are correctly configured to guarantee proper integration.
TWINT SAMPLE REQUEST
curl --location 'https://stage-secure-gateway.hipay-tpp.com/rest/v1/order' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --header 'Authorization:*****'\ --data-urlencode 'payment_product=twint' \ --data-urlencode 'orderid=1769530975' \ --data-urlencode 'amount=1.50' \ --data-urlencode 'currency=CHF' \ --data-urlencode 'description=description TWINT' \ --data-urlencode 'firstname=John' \ --data-urlencode 'lastname=Doe' \ --data-urlencode 'country=CH'
Best practices
- Send the
browser_infoobject so the customer is routed to the right experience (Web / QR code or Mobile app-to-app) - Set a client-side timeout corresponding to the maximum session duration (15 min, and 3 min after the QR code is scanned)
- Use server-to-server notifications to track status changes in real time
- Test in the Stage environment before production
- Handle refunds (full, partial and multiple partial)
- Ensure the customer has an active TWINT account and the TWINT app installed
- Check error codes and technical messages (general): HiPay Error Messages