Introduction to v3.1
With v3.1, we have made it much easier for merchants to accept payments online.
This version gives you a single, unified way to handle all payment types, so you don’t need to worry about different integrations for different products or features. The setup is simpler, and you get all the latest improvements, like support for new payment methods and a more consistent experience for both you and your costumers.
Key Benefits
Easier integration: You only need to connect to one API, no matter which payment methods you want to offer.
Consistent experience: All payment responses look the same, making it easier to manage payments and handle updates.
Future-proof: New features and payment options are added to v3.1, so you’re always up to date.
Flexible: You can enable or disable features just by changing parameters, without major changes to your integration. This means less time spent on technical details and more focus on your business.
v2.0 vs v3.1
| Feature/Area | v2.0 (Legacy) | v3.1 (Current) |
|---|---|---|
| Response model | Instrument-specific, varies by payment type | Unified PaymentOrder for all operations |
| Callback Handling | Callback at instrument level | Callbacks only at PaymentOrder level |
| Version management | Implicit, less predictable | Explicit version headers, more control |
| Supported instruments | Cards, Swish, Vipps, Buy Now Pay Later | All from v2.0 + Apple Pay, Click to Pay and Google Pay |
| HATEOAS support | Partial or none | Full HATEOAS: all available actions in response |
Migration Checklist
Use this checklist when planning and validating a migration from v2.0 to v3.1.
Update API usage and contracts
- Update all Payment Orders calls to use v3.1 endpoints and contract expectations.
- Replace any reliance on
?$expand=currentpaymentand?$expand=payments. - If needed for UI flows, switch to
?$expand=ongoingpaymentattempt(Payment UI token scope).
Remove instrument-specific response parsing
- Remove parsing of instrument-specific
JObjectresponses from post-purchase flows. - Parse
PaymentOrderResponsefor POST/{id}/cancellationsand POST/{id}/reversals. - Ensure your domain model stores PaymentOrder-level identifiers and status transitions.
Verify callback and status handling
- Validate callback handling against PaymentOrder-level resources and identifiers.
- Ensure your completion logic uses top-level
paymentOrder.statusonly. - Confirm terminal-state handling for
Paid,Failed,Aborted,Cancelled.
Add v3.1-only capabilities where relevant
- If you support wallets, implement POST
/authorizationsfor Apple Pay and Google Pay. - If you support one-click, add paymentToken support in
PaymentAttemptStarted. - Re-test HATEOAS-driven operation handling via the operations array.
Regression and rollout validation
- Run end-to-end tests for purchase, callback, capture, cancel, and reversal.
- Validate error handling for
400,403,404, and409responses. - Run a staged rollout with monitoring before full production cutover.
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 Online 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 PaymentOrders 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)