Skip to content

Last updated: 17 September 2026 | Change log

Swish

Swish is a popular mobile payment method in Sweden and is widely used for e-commerce transactions. It allows your customers to make real-time payments using the Swish mobile app and Swedish BankID mobile app.

Note

Make yourself familiar with our API principles to ensure a resilient integration.

Product overview

Feature summary

Payment typeCountryAcceptance currencyRecurringReversalsPartial reversalsAuth and settlement (sale)
Digital walletSwedenSEK❌
  • Refund - yes
  • Cancel - no
  • Partial refund - yes
  • Partial cancel - no
✅

Transaction value:

  • minimum transaction 0.01 SEK
  • maximum transaction 150,000 SEK

Customer journey

Prerequisite

Your customer must have both the Swish mobile app and the BankID app installed on their phone.

Payment flow

Your customers can invoke a payment in two ways:

With their phone number

Used in:

  • a web browser to Swish app flow
  1. Submit your payment request and receive a synchronous response with the order status "pending".
  2. The Swish app automatically pops up and your customer proceeds to pay.
  3. We send you an asynchronous notification of the payment outcome.

Without their phone number

Used in:

  • a web browser to Swish app or
  • a merchant mobile app to Swish app flow
  1. Submit your payment request and receive a synchronous response with the order status "pending".
  2. You also receive a transactionCode and a redirect Base64 code in your response. Add the value of the transactionCode in the token of the Swish app URL.
    • For web browser initiated payments - use the Base64 encrypted code to display a QR code. Your customer can scan this code on a separate device to prompt it to open their Swish app and complete the payment
      or
    • For merchant mobile app payments - add the value of the transactionCode in the token of the Swish app URL. This will prompt your customer's app to open where they can complete the payment.
  3. We send you an asynchronous notification of the payment outcome.

For more information on how to trigger the Swish app, please refer to Swish's developer guide.

Get started

Use our API reference and set your headers.


Request

POST https://try.access.worldpay-bsh.securedataplatform.co.uk/apmPayments

Apply APM payment details directly using our APMs API, or use our Components SDK to create a session.

Example request

Collect the APM details and send an API request with these details to create a payment.

{ "transactionReference": "Memory265-13/08/1876", "orderReference": "apm-order-12345", "merchant": { "entity": "default" }, "instruction": { "method": "ach", "narrative": { "line1": "MindPalace" }, "value": { "amount": 750, "currency": "USD" }, "paymentInstrument": { "type": "direct", "accountType": "checking", "accountNumber": "01234567890123456", "routingNumber": "012345678", "checkNumber": "012345678901234", "companyName": "Worldpay", "billingAddress": { "address1": "8500 Governors Hill Drive", "address2": "Symmes Township", "postalCode": "45249", "city": "Ohio", "state": "US-OH", "countryCode": "US" } }, "customer": { "firstName": "John", "lastName": "Johnson", "customerId": "43424", "email": "john@example.com" } } }

Parameters

transactionReferencestring, [ 1 .. 64 ] characters^[a-zA-Z0-9\-_/!@#$%()*=.:;?\[\]{}~+]*$required

For Bizum transactions, please follow this extra regex [a-zA-Z0-9]{4,12}

orderReferencestring, [ 1 .. 64 ] characters^[a-zA-Z0-9\-_/!@#$%()*=.:;?\[\]{}~+]*$

A reference that you can apply to one or more payments according to your business needs. You may reuse the same reference across multiple payments, for example where:

  • the total amount for a single order is split across multiple payments
  • you use a single reference for each payment in a recurring agreement or split shipment scenario
merchantobject(MerchantV2)required
instructionobject(InstructionV2)required

Response

Example response

{
  "paymentInstrument": {
    "method": "swish",
    "type": "direct"
  },
  "paymentId": "eyJrIjoiYXBtLXNlcnZpY2UtZGVmYXVsdCIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.BnnxxcMle38OazhwbF8J+4rtJi8CAq:Y3zUOn1dw6VWfvx:PHL5L0S+5ara5vz6ouV5yBmVUQCiSwQjs+1x5qJIJxAKWMWc2Mlb1doricEYlzsZIRIGCflvnYu1Ns8g1S0+66n6wCELiB9OHfX7cdKgIbll24WbW4bjxcOFkvbpJNnd51Q+QyfiGaiRe9nbKem66NOYspir3PJsMwGsI7G2Bf+rspiXLfF0Zn4xovsnjKIKWBW6p+Rdq:C8bzvzksHpCpFZQGSv0Xc:8EsM3P954rfT6hMMjSKiEe6HkFm97Tdqnh0cTWck:wh0Mvah:KtGknckWds:wrjcUMQshbQQ6sGi9VYvEB5k55y2sensiXY0Yl+:o+DhIRXOVuFuodpucFGzoapJG7KB6E+glKvLwdJZEx5MYoCT6G5d8JewNuyzINJ9Ct0Fd1CqhIA8jMh:ad9A+8L5w0NQE0YQtKA==",
  "lastEvent": "pending",
  "_links": {
    "self": {
      "href": "https://try.access.worldpay-bsh.securedataplatform.co.uk/apmPayments/eyJrIjoiYXBtLXNlcnZpY2UtZGVmYXVsdCIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.BnnxxcMle38OazhwbF8J+4rtJi8CAq:Y3zUOn1dw6VWfvx:PHL5L0S+5ara5vz6ouV5yBmVUQCiSwQjs+1x5qJIJxAKWMWc2Mlb1doricEYlzsZIRIGCflvnYu1Ns8g1S0+66n6wCELiB9OHfX7cdKgIbll24WbW4bjxcOFkvbpJNnd51Q+QyfiGaiRe9nbKem66NOYspir3PJsMwGsI7G2Bf+rspiXLfF0Zn4xovsnjKIKWBW6p+Rdq:C8bzvzksHpCpFZQGSv0Xc:8EsM3P954rfT6hMMjSKiEe6HkFm97Tdqnh0cTWck:wh0Mvah:KtGknckWds:wrjcUMQshbQQ6sGi9VYvEB5k55y2sensiXY0Yl+:o+DhIRXOVuFuodpucFGzoapJG7KB6E+glKvLwdJZEx5MYoCT6G5d8JewNuyzINJ9Ct0Fd1CqhIA8jMh:ad9A+8L5w0NQE0YQtKA=="
    }
  },
  "_actions": {},
  "redirect": "",
  "commandId": "cmdzKbxhkiOS0VzNtzZ4XPKd0",
  "transactionCode": "BCD2ABDD76D934A093D679B39305F4CC"
}

Schema

paymentIdstring

The identifier of the payment resource.

lastEventstring
Enum:"authorized""cancelFailed""cancelled""cancelRequested""sentForSettlement""sentForAuthorization""settlementFailed""chargebackReversed""chargedBack""disputeExpired"
_linksobject(Links)

Links to resources related to the request.

_actionsobject(ActionsV2)
redirectstring

The URL to redirect your customer to, or a QR code in Base64 to show to your customer, in order to complete the transaction.

commandIdstring

An action ID generated by us, identifying a single merchant interaction.

Example:"cmdYNdIHBPJwbkjLiykzTx0"
paymentInstrumentAll others (object) or PayPal (object) or SEPA DD (object) or Klarna (recurring) token (object)(PaymentInstrument)
One of:

Payment instrument for: ACH, Alipay China, Alipay Hong Kong, Alipay Plus, BANCOMAT Pay, Bancontact, Bizum, BLIK, EFT, Euteller, iDEAL guest, iDEAL recurring, Klarna, Klarna (recurring), Konbini, Multibanco, MyBank, Open Banking, PaysafeCard, Pix, Przelewy24, SafetyPay, Satispay, Swish, Trustly, China UnionPay, WeChat Pay.

transactionCodestring

For Pix payments - display to your customer for them to copy and paste in the Pix app.

For Swish payments - use this value as the {token} in the custom URL scheme: swish://paymentrequest?token={token}&callbackurl={callbackURL}. This will prompt the app to open, allowing your customer to complete their payment.

Example:"IZQ3iUfePwiWiwldJlipl8NGVA7w5IUg"

Errors

Check out our API reference for more responses or error codes.

Simulation

To simulate payment outcomes and trigger webhooks in our Try environment you can send a request prompting our simulator.

Request example

  {
    "transactionReference": "apm-order-12345686564",
    "orderReference": "apm-order-12345",
    "merchant": {
      "entity": "default"
    },
    "instruction": {
      "method": "swish",
      "value": {
        "amount": 250,
        "currency": "SEK"
      },
      "narrative": {
        "line1": "Mind Palace"
      },
      "paymentInstrument": {
        "type": "direct",
        "country": "SE"
      },
      "customer": {
        "phone": "46761985401"
      },
      "resultUrls": {
        "cancel": "https://worldpay-bsh.securedataplatform.co.uk/cancel",
        "failure": "https://worldpay-bsh.securedataplatform.co.uk/failure",
        "pending": "https://worldpay-bsh.securedataplatform.co.uk/pending",
        "success": "https://worldpay-bsh.securedataplatform.co.uk/success"
      }
    }
  }

You receive a redirect link to our simulator where you can choose different payment outcomes:

Simulator outcome optionPayment statusDescription
AuthorisedauthorizedPayment authorized successfully.
Authorised and CapturedsentForSettlementYour customer’s payment is in the process of being settled.
RefusedrefusedUnsuccessful payment - failure response from the provider.
ErrorerrorError in processing the payment or the session timed out.
Shopper CancelledcancelledYour customer cancelled the transaction.

Response example

{
  "paymentInstrument": {
    "method": "swish",
    "type": "direct"
  },
  "paymentId": "eyJrIjoiYXBtLXNlcnZpY2UtZGVmYXVsdCIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.dz5mM2S9wOJFy0F+xZ63pJoY4MvCJmVKVX5RXy1cWGhFcthsPs91vvKMH5zN1RgFR8SWBDRoQFA4GRUVGjxZCWsfqOLqZzb6KliNHM8rs0EMWSqklWHSogj5rZUH5kI3mebsBdksBOwHzOsi0K3NiY8wPy4CC+yuF2EzgrSjuKziwMRCCwsuKTgtCsDJY8do1hSDGeuhROmq+2BRwnDNvqxYcKtB1glrP9vZvweaGUYlVmX:rRtVY6:28WjlC8gvMDOsjoSlYnakcWAuIzwPZHPJkiyF:wEF3YiNB5b3aCTlge8GFB1uN1hkZLUOvvRtC7:ixYgCBrgJwbIOdFEcyfZWmiQjryMZfDVJr2F9Q97OAXA8tipQVZMxWYn0h5J+jtJi8kjOjGi5o7hGAwVfQixoV05C3nz0vYVPKJXVqmM=",
  "lastEvent": "pending",
  "_links": {
    "self": {
      "href": "https://try.access.worldpay-bsh.securedataplatform.co.uk/apmPayments/eyJrIjoiYXBtLXNlcnZpY2UtZGVmYXVsdCIsImxpbmtWZXJzaW9uIjoiNi4wLjAifQ==.dz5mM2S9wOJFy0F+xZ63pJoY4MvCJmVKVX5RXy1cWGhFcthsPs91vvKMH5zN1RgFR8SWBDRoQFA4GRUVGjxZCWsfqOLqZzb6KliNHM8rs0EMWSqklWHSogj5rZUH5kI3mebsBdksBOwHzOsi0K3NiY8wPy4CC+yuF2EzgrSjuKziwMRCCwsuKTgtCsDJY8do1hSDGeuhROmq+2BRwnDNvqxYcKtB1glrP9vZvweaGUYlVmX:rRtVY6:28WjlC8gvMDOsjoSlYnakcWAuIzwPZHPJkiyF:wEF3YiNB5b3aCTlge8GFB1uN1hkZLUOvvRtC7:ixYgCBrgJwbIOdFEcyfZWmiQjryMZfDVJr2F9Q97OAXA8tipQVZMxWYn0h5J+jtJi8kjOjGi5o7hGAwVfQixoV05C3nz0vYVPKJXVqmM="
    }
  },
  "_actions": {},
  "redirect": "https://secure-test.worldpay-bsh.securedataplatform.co.uk/jsp/test/shopper/APMSTSimulator.jsp?customerRef=3494243302&paymentMethod=SWISH",
  "commandId": "cmdFhJbQqGcS5PbZO-gv26qP0",
  "transactionCode": ""
}

Next steps

Manage your Swish payment