Skip to content

    TWINT

    Overview - TWINT

    TWINT is the most frequently used mobile wallet in Switzerland. TWINT can be used both in brick-and-mortar and in online stores. A customer needs a Swiss bank account or a credit card to pay with TWINT. This innovative payment method is supported by most Swiss banks. Customers can complete payments quickly and securely with TWINT. E-commerce payments are verified via a single-use QR Code or token.

    Merchant Advantages:

    • digitally advanced and well-to-do target groups
    • easy implementation via Payengine Widget and API
    • introduction of loyalty programs and coupons via TWINT

    Customer Advantages:

    • fast, easy and secure payments via a mobile app
    • used both for POS and for eCommerce transactions
    • transfer and request money from friends and family
    • take advantage of coupons and promotions
    • store loyalty cards in a digital wallet
    • track and analyze payments

    Activation - TWINT

    To activate TWINT as a payment method and to add it to your PayEngine Merchant Center, you need to complete the onboarding journey .

    Please provide our support with the following information:

    • TWINT Merchant UUID

    If you do not yet have a TWINT account, please contact TWINT directly.

    Step 1: Create a merchant account via TWINT.

    Step 2: Add one or more stores.

    Step 3: Choose Payengine-Concardis GmbH as PSP (payment service provider).

    Customer Experience - TWINT

    Customer Flow in the Payenegine Widget

    StepDescriptionImage
    1Choose TWINT
    2A screen with the one-time.
    QR-code and/or token will be displayed.
    3Open the TWINT app. Choose QR Code.
    4AOption 1: Complete payment via QR-code: Choose QR Scanner and proceed with the scanning.
    4BOption 2: Complete payment via token: Choose Code and proceed with token entry.
    5Click OK to confirm the payment.
    6You will receive notification for successful payment in the app and in the widget.

    Note: This customer experience represents a live environment and may look different in a test environment.

    PayEngine Details - TWINT

    General

    NameDetails
    ProductTWINT
    Payment Options (for Customer)
    • direct debit
    • credit card
    ChannelsECOM
    CurrenciesCHF
    CountriesCH
    Technical FlowAsynchronous
    RecurringNo
    ChargebacksYes
    B2B applicableYes

    Supported Features and Services

    NameDetails
    DebitYes
    PreauthorizationNo
    CancelationNo
    CaptureNo
    RefundsYes (full and partial)
    NotificationsYes (webhook and email)
    Settlement ReportingNo

    Integration Types

    NameDetails
    APIYes
    WidgetYes
    BridgeNo
    Shop PluginNo
    PaylinkNo

    Integration via API - TWINT

    Technical Flow

    Twint-tech-flow

    Webhook and email notifications

    At the time of the redirect, it is still uncertain whether a transaction will be completed successfully or not. Therefore, Payengine awaits for the final asynchronous notification before the status of a DEBIT transaction is changed from PENDING to SUCCESS or FAILURE.

    A merchant should register for Payengine's notifications to receive this final status update.

    Alternatively, a GET request on the order or DEBIT transaction would also work, but it is not ensured that the final status will be available immediately after the redirect and a merchant might have to query the GET multiple times.

    Therefore, it is strongly recommended that Payengine's asynchronous notifications are used instead.

    Merchants could receive notifications via URL (webhook) or email.

    The notifications could be subscribed:

    Specifications - TWINT

    Prerequisites for Debit Transactions

    ParameterMandatory/Optional (M/O)Description
    CustomerOPOST /customers
    PersonaOPOST /customers/{{customerId}}/personas
    Billing AddressOPOST /customers/{{customerId}}/addresses
    Shipping AddressOPOST /customers/{{customerId}}/addresses

    Specific Input Parameters for Debit Transactions

    ParameterMandatory/Optional (M/O)DescriptionTypeExample
    async.cancelUrlMRedirect URL when payment is canceledstringhttp://my.shop.com/cancel
    async.failureUrlMRedirect URL for unsuccessful paymentstringhttp://my.shop.com/fail
    async.successUrlMRedirect URL for successful paymentstringhttp://my.shop.com/success
    currencyMThe currency of the transaction. The only possible value is CHF.stringCHF
    channelMThe channel of the transaction. The only possible value is ECOM.stringECOM
    basketOBasket data object with attributesobject-

    Specific Response Parameters for Debit Transactions

    Payengine sends the following specific response parameters, which are used by the merchant to display QR Code and/or Token to the customer:

    ParameterMandatory/Optional (M/O)DescriptionTypeExample
    meta.qrCodeMThe base-64 encrypted image of the one-time QR Code to display to the customer.stringSee [Pub Doc] TWINT - Draft#Samples
    meta.tokenMThe one-time token to display to the customer.integer80531

    Samples

    Debit transaction

    POST/{{publicApiUrl}}/v1/orders/debit

    Create Debit Request

    {
    		"product": "twint",
    		"terms": 1468590412476,
    		"privacy": 1468590412476,

    Create Debit Response

    {
    		"createdAt": 1586780167142,
    		"modifiedAt": 1586780167142,
    		"merchantId": "merchant_at9ugmpywt",

    Refund transaction

    POST/{{publicApiUrl}}/{{apiVersion}}/orders/{{orderId}}/transactions/{{transactionId}}/refund

    Create Refund Request

    {
    		"description": "Twint refund transaction",
    		"initialAmount": 2000,
    		"currency": "CHF"

    Create Refund Response

    {
    		"createdAt": 1586780665258,
    		"modifiedAt": 1586780665258,
    		"type": "REFUND",

    Testing

    TWINT can be tested via the Payengine Simulator.

    The testing amounts for the success and failure scenarios are shown below:

    ParameterDescription
    SuccessAny applicable amount (excluding failure amounts listed below). The transaction's status changes from OK to SUCCESS
    FailureEach of the amounts listed below:
    • 11111 (€111,11)
    • 111 (€1,11)
    The transaction's status changes from "OK" to "FAILURE".

    Was this helpful?

    What was your feeling about it?