Swish
Swish is a smart and secure payment app that allows consumers to pay online, in store and exchange money with friends.The app is easily usable by consumers , where they simply join using their mobile numbers and connect their bank accounts for payments. Named Sweden's strongest brand for three consecutive years with a share of checkout of over 39%, Swish is the preferred way to pay for Swedish consumers.
Payment Method Properties
Markets | SE |
Processing currencies | SEK |
Consumer currencies | SEK |
Settlement currencies | Global |
Minimum payment amount | 01 SEK |
Maximum payment amount | 999999999999.99 SEK |
Recurring Payment Support | No , to be launched ~ Q1 2025 |
Separate Capture Support | No |
Refund | - Full - Partial - Multiple Partial |
Refund validity | 13 months |
Chargeback | No |
Sandbox availability | SWISH |
Transaction and Fund Flow
PPRO Offers Swish integrations across M-Commerce, In-Store and E-Commerce channel.
M-Commerce
There are two integration methods for the m-commerce journey: direct and indirect redirection. Each option has its own benefits, and the choice should depend on your specific needs and available resources.
Direct redirection
This approach enables direct navigation between merchant app or website and the Swish app, providing a seamless and native user experience.
Indirect redirection
This method redirects users merchant website to the Swish app and then back to merchant website, with a brief transition through the browser.
Summarised view is as follows:
Dimension | Direct redirection | Indirect redirection |
---|---|---|
Suitable for | Large business | Small to medium sized business |
User Experience | Superior and seamless | Not Smooth |
Consumer Experience | Excellent | Good |
Development effort | Significant | Minimal |
Transaction Status update | Polled by Merchant | Published by PPRO |
Our Recommendation
While both methods have their advantages, we recommend the direct redirection approach for merchants with the resources to implement it. This method offers a superior user experience, which can result in higher conversion rates and increased consumer satisfaction. However, if you are a small to medium-sized merchant seeking a quicker implementation with minimal development effort on your end, indirect redirection is a suitable choice.
Ultimately, the decision should be based on your specific business needs and development capabilities.
E-Commerce and In-Store
There are two main methods to generate the QR code for E-Commerce and In-Store journey:
- PPRO-rendered : PPRO's QR code generation simplifies the process by providing either a base64 encoded string for decoding or a ready to display QR image.
- Customer rendered through QR Payload : QR Payload to generate QR image , swish design specifications to be followed while generation.
Swish Design Specification for QR Payload Method
The QR code should be created in black and white. The Swish symbol is placed in the centre, on a white circular background. The symbol width should be 25% of the QR code width.
The Swish symbol can be downloaded from the Swish marketing toolbox and should follow the Swish trademark guidelines.
We strongly recommend using the PPRO rendered QR code generation, as it simplifies the process by removing the need to follow Swish design specifications on your end.
For reference, PPRO rendered QR code generation is demonstrated below, providing both a ready to display QR image and a Base64 encoded string.
Make a SWISH Payment
One-time Swish payments follow our standard authentication methods, ensuring quick and easy integration for any journey—whether M-Commerce, In-Store, or E-Commerce.
Simply add Swish to your integration in seconds, with the details for each channel summarised below for your convenience
Journey | Consumer Entry Point | Authentication setting in Request | Authentication method in Response |
---|---|---|---|
M-Commerce | Merchant App-direct redirection | APP_INTENT | App_INTENT |
M-Commerce | Merchant App-indirect redirection | APP_INTENT | REDIRECT |
M-Commerce | Merchant Website-direct redirection | REDIRECT | App_INTENT |
M-Commerce | Merchant Website-indirect redirection | REDIRECT | REDIRECT |
E-Commerce (QR) | Desktop-PPRO Hosted | REDIRECT | REDIRECT |
E-Commerce (QR) | Desktop-Merchant Checkout | REDIRECT | SCAN_CODE <codeImage, codePayLoad> |
In-Store (QR) | Till Machine | Not Applicable | SCAN_CODE <codeImage, codePayLoad> |
To make a SWISH payment, you'll need to provide the following data at minimum when calling our /v1/payment-charges API:
Data Field | Required | Description |
---|---|---|
paymentMethod | Y | SWISH |
amount.value | Y | The amount to be paid in the smallest units of the currency used. |
amount.currency | Y | SEK |
consumer.name | Y | Full name of the consumer |
consumer.country | Y | The country where the consumer is shopping |
authenticationSettings: REDIRECT settings.returnUrl | Y | Add the url where the consumer should be redirected to after they complete the payment. |
merchantPaymentChargeReference | Y | (Recommended) add your internal reference id for the payment in this field. |
webhooksUrl | If you want to override your pre-configured webhooks endpoint, you can receive webhooks for this payment here. |
Request
POST /v1/payment-charges
{
"paymentMethod": "SWISH",
"amount": {
"value": 1400,
"currency": "SEK"
},
"consumer": {
"name": "ReemijjjKKK ",
"email": "[email protected]",
"country": "SE"
},
"order": {
"orderItems": [
{
"name": "product name2",
"quantity": 14,
"amount": 5000
}
]
},
"authenticationSettings": [
{
"type": "APP_INTENT",
"settings": {
"mobileIntentUri": "flipkart://search?q=laptop"
}
}
{
"type": "REDIRECT",
"settings": {
"returnUrl": "https://amazon.com"
}
}
],
"paymentDescriptor": "for demo",
"webhooksUrl": "https://paydrive-dev.giroops.com/sinkhole.php"
}
Response
You'll receive one of our standard payment charge responses (see potential responses in the API Reference)
{
"id": "charge_hnTj1DoZlwBwACU0Y0XGw",
"paymentMethod": "SWISH",
"paymentMedium": "ECOMMERCE",
"scheduleType": "UNSCHEDULED",
"instrumentId": "instr_auij0FJYiBiYDFPe5gpzv",
"currency": "SEK",
"country": "SE",
"paymentDescriptor": "for demo",
"status": "AUTHENTICATION_PENDING",
"consumer": {
"name": "ReemijjjKKK ",
"email": "[email protected]",
"country": "SE"
},
"order": {
"orderItems": [
{
"name": "product name2",
"quantity": 14,
"amount": 5000
}
],
"industryData": []
},
"authenticationMethods": [
{
"details": {
"requestUrl": "https://authman.qa.lp-pl.ppro.com/v0/pages/?redirection_token=eyJhbGciOiJIUzUxMiJ9.eyJzZXNzaW9uIjp7InIiOiJjaGFyZ2VfaG5UajFEb1psd0J3QUNVMFkwWEd3IiwicyI6Imh0dHBzOi8vYW1hem9uLmNvbSIsImYiOiJodHRwczovL2FtYXpvbi5jb20_aXNGYWlsdXJlPXRydWUiLCJtIjoiMTIzMDQ3NDE5NyJ9fQ.w3EKJ6hbR-MzYMRYJBOL62PxOO5y4ionuroADOFV9jhXFAfdLkcuNFvRVdtlkijzWU4iHUXx175YHoZEw29KEA",
"requestMethod": "GET"
},
"type": "REDIRECT"
},
{
"details": {
"mobileIntentUri": "swish://paymentrequest?token=AAAAAAAAAAAAABYAAEUlGHvm1-2gXEH-&callbackurl=https%3A%2F%2Famazon.com"
},
"type": "APP_INTENT"
},
{
"details": {
"codeType": "QR",
"codeImage": "<BASE-64 encoded QR String>",
"codePayload": "DAAAAAAAAAAAAABYAAEUlGHvm1-2gXEH-"
},
"type": "SCAN_CODE"
}
],
"authorizations": [
{
"id": "authz_eCWJ4r6xg9fbmxP2zMU18",
"amount": 1000,
"status": "AUTHENTICATION_PENDING",
"createdAt": "2024-11-07T08:40:01.428Z",
"updatedAt": "2024-11-07T08:40:01.428Z"
}
],
"captures": [],
"refunds": [],
"voids": [],
"createdAt": "2024-11-07T08:40:00.796Z",
"updatedAt": "2024-11-07T08:40:01.428Z",
"_links": {
"authorizations": {
"href": "/v1/payment-charges/charge_hnTj1DoZlwBwACU0Y0XGw/authorizations"
},
"captures": {
"href": "/v1/payment-charges/charge_hnTj1DoZlwBwACU0Y0XGw/captures"
},
"refunds": {
"href": "/v1/payment-charges/charge_hnTj1DoZlwBwACU0Y0XGw/refunds"
},
"voids": {
"href": "/v1/payment-charges/charge_hnTj1DoZlwBwACU0Y0XGw/voids"
}
}
Consumer Authentication
SWISH requires a consumer authentication step before the payment is authorized and captured.
In your response to your charge creation request, you will receive the authenticationMethods
list with type as APP_INTENT
,REDIRECREDIRECT
,SCAN_CODE
. Depending on the intended consumer channel and experience, the consumer will either be redirected to the Merchant App or presented with a QR code. These processes are outlined in the table above (see Consumer Journey Mapping for Request and Response) . The consumer will navigate to their SWISH app and confirm the payment.
The payment charge will remain in the AUTHENTICATION_PENDING
state until the consumer confirms the payment in their app. After this, the charge will transition to the CAPTURED
state.
Handling the Payment Result
Depending on the intended consumer channel and experience, the consumer will either be redirected to the Merchant App or presented with a QR code. These processes are outlined in the table above (see Consumer Journey Mapping for Request and Response). The response flow varies based on whether the authorization is successful, fails, or if the user cancels or aborts the flow.
If the consumer fails to authenticate the payment within the timeout window, the charge will transition to the DISCARDED state.
You can receive webhooks for all changes to the payment charge state and use these to build business logic such as delivering the goods when the charge is CAPTURED.
Recurring Payments
Not Supported by Swish , expected to be launched by Q1 2025
Updated 22 days ago