Introduction to v3.1
With our latest API version, v3.1, we have significantly improved the checkout experience for both merchants and payers. This version simplifies the integration process by reducing the size and complexity of response models, addressing gaps identified in v2. Instead of segregating integrations based on configurations or product packages, v3.1 provides a unified solution where features are controlled through parameters in your requests. This design promotes reusability and ease of integration without requiring major changes or concessions when adding new features, as the base API remains consistent.
Upgrade Process
If you have already integrated with our Checkout v2 API, transitioning to v3.1
is a straightforward process. The URI and request body remain unchanged from
Checkout v2, with the only required modification being the addition of
;version=3.1
in the HTTP request headers (see the request example below). This
adjustment ensures that your payment order requests generate the new response
scheme and functionality seamlessly.
The upgrade has backwards compatibility, allowing you to generate v3.1 responses for transactions conducted through your v2 implementation. Instead of making a new integration each time, this eliminates the need to maintain legacy code, streamlining your system for a seamless transition. Additionally, this approach establishes a foundation for future versions, enabling you - as the merchant - to designate the desired version and make adjustments to response processing as needed when newer versions are released.
Request Headers v3.1
New Request Headers
1
2
3
4
POST /psp/paymentorders HTTP/1.1
Host: api.payex.com
Authorization: Bearer
Content-Type: application/json;version=3.1
Order Items
Sending orderItems
is no longer mandatory for your requests. If you prefer not
to include this information in your transactions, feel free to omit them from
your requests.
However, if your selection of offering includes an invoice, it is highly
recommended to provide orderItems
. These fields are utilized to specify
details about the purchased products.
In the absence of this information, we will create the necessary order line
using the details provided in the description
parameter along with the value
in the amount
parameter.
Response Fields Changes
In Digital Payments v3.1, response fields have been restructured.
Fields removed since v2 include: currentPayment
,instrument
, payments
and
state
.
Response Fields Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
"paymentorder": {
"currentPayment": //Removed in Checkout v3.1
"instrument": //Removed in Checkout v3.1
"payments": //Removed in Checkout v3.1
"settings": //Removed in Checkout v3.1
"state": //Removed in Checkout v3.1
"nonPaymentToken": //Moved to `paid` resource in Checkout v3.1
"recurrenceToken": //Moved to `paid` resource in Checkout v3.1
"unscheduledToken": //Moved to `paid` resource in Checkout v3.1
"paymentToken": //Moved to `paid` resource in Checkout v3.1
"externalNonPaymentToken": //Moved to `paid` resource in Checkout v3.1
"transactionsOnFileToken": //Moved to `paid` resource in Checkout v3.1
Instead, new fields including history
, failed
, aborted
, paid
, and
others, have been introduced. An example of the complete array of selections is
provided below.
New Response Fields
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
{
"urls": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/urls"
},
"payeeInfo": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/payeeinfo"
},
"payer": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/payers"
},
"history": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/history"
},
"failed": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/failed"
},
"aborted": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/aborted"
},
"paid": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/paid"
},
"cancelled": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/cancelled"
},
"financialTransactions": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/financialtransactions"
},
"failedAttempts": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/failedattempts"
},
"postPurchaseFailedAttempts": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/failedattempts"
},
"metadata": {
"id": "/psp/paymentorders/09ccd29a-7c4f-4752-9396-12100cbfecce/metadata"
}
}
Endpoints
Name | Description |
---|---|
Urls | This will provide a report indicating the URLs you have supplied for this paymentOrder . |
PayeeInfo | This will provide a report detailing the account and Merchant references that were utilized. |
Payers | If you have provided us with Payer data, it will be attached and stored here. |
History | Here, you can track every aspect of the transaction lifecycle. This includes all actions initiated by the Payer within our UI and your management of the transaction (Capture, Cancel, Reversal, etc.), from its initiation to completion. |
Failed | MIT transactions, denoting “Merchant Initiated Transactions,” are exclusively presented here if they result in a Failed status, along with the corresponding failure reason. |
Aborted | If the transaction is aborted on your end, you can find the details submitted with the request in this section. |
Paid | In the event of a successful transaction, details about the utilized method, its associated references, and related information will be available here. As a point of reference, this serves as the replacement for currentPayment . |
Cancelled | Information will be available under this node exclusively when a PaymentOrder has been completely canceled and has received the status Canceled . |
FinancialTransactions | All post-purchase actions and their references, such as captures and reversals, can be accessed here. This section also serves as the replacement for currentPayment . |
FailedAttempts | All instances of PaymentOrder s marked as Failed will be in this section. Currently, this pertains specifically to transactions utilizing S2S (server-to-server) functionality, with subscriptions (Recur & Unscheduled Purchase) serving as an example. |
PostPurchaseFailedAttempts | All failed attempts made by the Payer at a third-party will be documented in this section. For instance, if the Payer is denied due to reasons like “Insufficient funds,” such instances will be recorded here. |
Metadata | If you provide us with information in this object, the details will be reported back to you in this section. |
Status Parameter
In v3.1, we have updated the parameter formerly named state
from v2 to
status
, also expanding the range of values that are given to reflect more
accurately what stage the transaction is in.
Initialized
This status is returned upon the initial creation of the paymentOrder
and
remains applicable throughout the active period when the paymentOrder
is open
for conversion into a payment by the payer.
Paid
The Paid
status is granted in response only when an actual amount has been
charged and processed. This information becomes visible in the subsequent GET
call on the paymentOrder
after receipt of either the CompleteUrl
or our
Callback, providing you with the opportunity to verify the transaction details.
Additionally, Paid
will be directly returned in the response when conducting
post-purchase actions and if there is an associated amount that has been paid.
Aborted
This value becomes accessible only following the execution of an abort
operation by either you, the merchant, or if the payer opts for “Cancel payment”
within our domain. The latter scenario is applicable solely if you have
implemented a redirect integration.
Failed
Currently, the value in this field will be returned exclusively for MIT (Merchant Initiated Transactions) transactions and other server-to-server requests. Please note that this condition may evolve in the future.
Reversed
When a paymentOrder
has been entirely refunded, the corresponding value will
be Reversed
. In the case of partial refunds, the returned value will persist
as Paid
.
Cancelled
If you initiate a cancellation for the entire authorized amount (reserved
funds), the returned value will be Cancelled
. However, if you have conducted
any captures on the authorized funds before releasing the remaining amount, the
returned value will be Paid
.
Cosmetic Response Changes
You will find the following fields present in your new response. They have been introduced to enhance our tracking and obtain more precise data regarding the integration types or implementation styles adopted by our customers. They do not directly affect your responsibilities as an integrator and can be disregarded.
Response Fields Excerpt
1
2
3
4
5
6
{
"implementation": "PaymentsOnly",
"integration": "",
"instrumentMode": false,
"guestMode": false,
}
Field | Description & Value |
---|---|
“implementation” |
PaymentsOnly will be the default returned value. |
“integration” | The value will be either Redirect or HostedView and will be revealed after the initial attempt. |
“instrumentMode” | The value displayed here will be either true or false , depending on whether the feature was utilized. It is important to note that this is a distinct feature from the regular menu, and in most cases, it will be returned as false . |
“guestMode” | By default, this value will be set to true . However, if you have implemented our “Payer Aware Menu” feature, the value will be returned as false for returning customers who have stored payment details with you. |
Events available in v3.1
Further reading available in the Events section.
Event | Description |
---|---|
onCheckoutLoaded |
This event will trigger the first time the Checkout is loaded. Subscribe to this event if you need total control over the height of Swedbank Pay’s payment frame. This is the initial height of the frame when loaded. |
onCheckoutResized |
This event will trigger every time a UI element changes size.Subscribe to this event if you need total control over the height of Swedbank Pay’s payment frame. The payment methods require individual heights when rendering their content. |
onError |
This event will be triggered during terminal errors or if the configuration fails validation. Subscribe to this event if you want some action to occur on your site when an error happens during the payment. |
onOutOfViewRedirect |
Triggered when a user is redirected to a separate web page, like 3-D Secure or BankID signing. Subscribe to this event if it is not possible to redirect the payer directly from within Swedbank Pay’s payment frame. |
onAborted |
This will be triggered when the payer clicks the “Abort” button. This is only present in the Redirect-implementation and if you have integrated Seamless View (menu embedded), you will need to supply this button/action. When the payer presses your cancel button, we recommend sending an API request aborting the payment so it can’t be completed at a later time. When we receive the request, an abort event will be raised the next time the UI fetches information from the server. Because of that, you should also refresh the script after aborting, as this will trigger the event. |
onPaymentAttemptAborted |
This event will trigger when an attempt has been aborted from an external party. One of these examples is from a card-issuers ACS service (3D-Secure verification). This does not mean the transaction in its entirety has failed. It is just the singular attempt that was aborted. More attempts are available to the payer. |
onPaymentAttemptStarted |
Triggered when the payer has selected a payment method and actively attempts to perform a payment. |
onPaid |
This event triggers when the payer successfully completes their interaction with us. Subscribe to this event if actions are needed on you side other than the default handling of redirecting the payer to your completeUrl . Call GET on the paymentOrder to receive the actual payment status and take appropriate actions according to the information displayed here. |
onPaymentAttemptFailed |
Triggered when a payment has failed, disabling further attempts to perform a payment. |
onInstrumentSelected |
Triggered when a user actively changes payment method in the Payment Menu. |
onTermsOfServiceRequested |
Triggered when the user clicks on the “Display terms and conditions” link. Subscribe to this event if you do not want the default handling of the termsOfServiceUrl . Swedbank Pay will open the termsOfServiceUrl in a new tab within the same browser by default. |
onEventNotification |
Triggered whenever any other public event is called. It does not prevent their handling. Subscribe to this event in order to log actions that are happening in the payment flow at Swedbank Pay. |
Events no longer needed and/or supported
-
onBillingDetailsAvailable
(Starter/Business) -
onShippingDetailsAvailable
(Starter/Business) -
Payer identification
(Checkin)
Checkin
is no longer supported in its previous form. Payer identification now
falls under the merchant’s responsibility and is executed through the Payer
Aware Payment Menu feature. While this feature retains the functionality of
storing payment details for various payment methods, the primary responsibility
for the identification process lies with you as the merchant.
This identification is accomplished by assigning a value within the
payerReference
parameter, serving as a pseudo-“profile” unique to your
account. It is crucial to ensure that each reference is distinct for every
consumer. Failure to correctly identify and provide the appropriate reference
for a consumer may lead to the display of another customer’s details or trigger
the creation of a new profile, activating guestMode
.
For more detailed information, see the payer aware payment menu section.
Post-Purchase Changes
Captures
, Reversals
, and Cancellations
will now be returned with the
intended response template provided by us. The information structure remains
identical to the initial PaymentOrder request you already receive when creating
the Purchase request. This means you are already familiar with the structure,
but the difference now is that it also applies to the response for post-purchase
actions.
The new response will not naturally include the same method data as it did
with v2. However, you can extend the information by adding
?$expand=financialtransactions
to the request path (URL). If you require even
more data in your responses, you can continue extending the output by adding a
,
followed by the node you desire to be included. As an example,
?$expand=financialtransactions,paid
would give you both the node for the
initial Purchase
and the node for the Capture/Reversal operation.
Response example from existing versions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"payment": "/psp/creditcard/payments/b2409f06-4944-4b2b-78d8-08dbf7d4b7e9",
"capture": {
"id": "/psp/creditcard/payments/b2409f06-4944-4b2b-78d8-08dbf7d4b7e9/captures/b15c1f9c-ad6b-4193-dabe-08dbf7d4b80a",
"transaction": {
"id": "/psp/creditcard/payments/b2409f06-4944-4b2b-78d8-08dbf7d4b7e9/transactions/b15c1f9c-ad6b-4193-dabe-08dbf7d4b80a",
"created": "2023-12-08T11:53:08.8102555Z",
"updated": "2023-12-08T11:53:08.8810258Z",
"type": "Capture",
"state": "Completed",
"number": 40128369639,
"amount": 100,
"vatAmount": 0,
"description": "Capturing the authorized payment",
"payeeReference": "1702036388",
"isOperational": false,
"operations": []
}
}
}
Response Example from v3.1 (Capture with no expansions)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
{
"paymentOrder": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c",
"created": "2023-12-08T13:42:08.1297502Z",
"updated": "2023-12-08T13:43:10.8951496Z",
"operation": "Purchase",
"status": "Paid",
"currency": "SEK",
"amount": 100,
"vatAmount": 0,
"remainingReversalAmount": 100,
"description": "Test Purchase",
"initiatingSystemUserAgent": "PostmanRuntime/7.35.0",
"language": "sv-SE",
"availableInstruments": [
"CreditCard",
"Invoice-PayExFinancingSe",
"Swish",
"CreditAccount-CreditAccountSe",
"Trustly",
"MobilePay",
"GooglePay",
"ClickToPay"
],
"implementation": "PaymentsOnly",
"integration": "Redirect",
"instrumentMode": false,
"guestMode": false,
"orderItems": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/orderitems"
},
"urls": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/urls"
},
"payeeInfo": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/payeeinfo"
},
"payer": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/payers"
},
"history": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/history"
},
"failed": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/failed"
},
"aborted": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/aborted"
},
"paid": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/paid"
},
"cancelled": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/cancelled"
},
"reversed": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/reversed"
},
"financialTransactions": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/financialtransactions"
},
"failedAttempts": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/failedattempts"
},
"postPurchaseFailedAttempts": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/postpurchasefailedattempts"
},
"metadata": {
"id": "/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/metadata"
}
},
"operations": [
{
"method": "POST",
"href": "https://api.externalintegration.payex.com/psp/paymentorders/a8d963ee-4749-4b3c-9f31-08dbf62d5f1c/reversals",
"rel": "reversal",
"contentType": "application/json"
},
{
"method": "GET",
"href": "https://ecom.externalintegration.payex.com/checkout/16e2b575fb662a7864d5fac28f9e9dd7e264fb8d934850c6dc38ea2be18cc973?_tc_tid=9401c5a368e04ffe9361a604eca15652",
"rel": "redirect-checkout",
"contentType": "text/html"
},
{
"method": "GET",
"href": "https://ecom.externalintegration.payex.com/checkout/client/16e2b575fb662a7864d5fac28f9e9dd7e264fb8d934850c6dc38ea2be18cc973?culture=sv-SE&_tc_tid=9401c5a368e04ffe9361a604eca15652",
"rel": "view-checkout",
"contentType": "application/javascript"
}
]
}
Response Example from v3.1 (Capture with Paid and FinancialTransactions expanded)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
{
"paymentOrder": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407",
"created": "2023-12-08T14:06:29.0250114Z",
"updated": "2023-12-08T14:07:48.9872240Z",
"operation": "Purchase",
"status": "Paid",
"currency": "SEK",
"amount": 100,
"vatAmount": 0,
"remainingReversalAmount": 100,
"description": "Test Purchase",
"initiatingSystemUserAgent": "PostmanRuntime/7.35.0",
"language": "sv-SE",
"availableInstruments": [
"CreditCard",
"Invoice-PayExFinancingSe",
"Swish",
"CreditAccount-CreditAccountSe",
"Trustly",
"MobilePay",
"GooglePay",
"ClickToPay"
],
"implementation": "PaymentsOnly",
"integration": "Redirect",
"instrumentMode": false,
"guestMode": false,
"orderItems": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/orderitems"
},
"urls": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/urls"
},
"payeeInfo": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/payeeinfo"
},
"payer": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/payers"
},
"history": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/history"
},
"failed": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/failed"
},
"aborted": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/aborted"
},
"paid": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/paid",
"number": 40128372054,
"instrument": "CreditCard",
"payeeReference": "1702044389",
"transactionType": "Authorization",
"amount": 100,
"submittedAmount": 100,
"feeAmount": 0,
"discountAmount": 0,
"details": {
"nonPaymentToken": "6e7f3a0b-3d4d-46a7-8d13-6b15180896a2",
"externalNonPaymentToken": "91dd1ea0eeafc2ac397d24e80abdc",
"cardBrand": "MasterCard",
"cardType": "Credit",
"maskedPan": "522661******3406",
"expiryDate": "12/2033",
"issuerAuthorizationApprovalCode": "L25647",
"acquirerTransactionType": "3DSECURE",
"acquirerStan": "25647",
"acquirerTerminalId": "40128372054",
"acquirerTransactionTime": "2023-12-08T14:06:46.536Z",
"transactionInitiator": "CARDHOLDER",
"bin": "522661"
}
},
"cancelled": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/cancelled"
},
"reversed": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/reversed"
},
"financialTransactions": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/financialtransactions",
"financialTransactionsList": [
{
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/financialtransactions/3477dfdc-097f-4a1f-de15-08dbf7d5c914",
"created": "2023-12-08T14:07:48.889224Z",
"updated": "2023-12-08T14:07:48.971819Z",
"type": "Capture",
"number": 40128372069,
"amount": 100,
"vatAmount": 0,
"description": "Capturing the authorized payment",
"payeeReference": "1702044467",
"orderItems": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/financialtransactions/3477dfdc-097f-4a1f-de15-08dbf7d5c914/orderitems"
}
}
]
},
"failedAttempts": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/failedattempts"
},
"postPurchaseFailedAttempts": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/postpurchasefailedattempts"
},
"metadata": {
"id": "/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/metadata"
}
},
"operations": [
{
"method": "POST",
"href": "https://api.externalintegration.payex.com/psp/paymentorders/d4c5684f-c2dc-4c18-680d-08dbf62de407/reversals",
"rel": "reversal",
"contentType": "application/json"
},
{
"method": "GET",
"href": "https://ecom.externalintegration.payex.com/checkout/8a18154cd0eb695537d871ab9936bd16f2a05cdaf42b84b4d027bdd843de4d09?_tc_tid=05f06eeeb05e4d188dc9a8a22bad1a3d",
"rel": "redirect-checkout",
"contentType": "text/html"
},
{
"method": "GET",
"href": "https://ecom.externalintegration.payex.com/checkout/client/8a18154cd0eb695537d871ab9936bd16f2a05cdaf42b84b4d027bdd843de4d09?culture=sv-SE&_tc_tid=05f06eeeb05e4d188dc9a8a22bad1a3d",
"rel": "view-checkout",
"contentType": "application/javascript"
}
]
}
Callback Information
Starting from v3.1 and in future API versions, we will no longer expose the
underlying URLs for individual API methods. Consequently, you will rely solely
on the paymentOrderId
provided. If information has been included in the
orderReference
field in the initial purchase request, this value will still be
reported, allowing you to easily identify the transaction associated with a
Callback. Note that the payment
and transaction
fields have been removed.
Callback Example v3.1
1
2
3
4
5
6
7
8
{
"orderReference":"PO-638423890947905216",
"paymentOrder":{
"id":"/psp/paymentorders/a9bd5ea2-d2b0-48d1-59c8-08dc230b04ba",
"instrument":"CreditCard",
"number":40129161258
}
}
Callback Example Previous Versions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"orderReference":"ABC123",
"paymentOrder": {
"id": "/psp/paymentorders/c3ac1392-35b0-43a6-8f27-08dbce43b47c",
"instrument": "paymentorders"
},
"payment": {
"id": "/psp/swish/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1",
"number": 222222222
},
"transaction": {
"id": "/psp/swish/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/sale/ec2a9b09-601a-42ae-8e33-a5737e1cf177",
"number": 333333333
}
}
Sources
For a more in-depth understanding of each specific instance, we have compiled relevant documentation below.
Callback (asynchronous update)