Unscheduled Purchase
This feature is only available for merchants who have a specific agreement with Swedbank Pay.
An unscheduled purchase, also called a Merchant Initiated Transaction (MIT),
is a payment which uses a paymentToken generated through a previous payment in
order to charge the same card at a later time. They are done by the merchant
without the cardholder being present.
Unscheduled purchases can be used in cases where you have an agreement with
your customer which handles both recurring orders and/or singular transactions.
Observe - it’s important that the Terms of Service clearly and understandably
states how the payment will be done towards your customer. Example use cases are
car rental companies charging the payer’s card for toll road expenses after the
rental period, or different subscription services and recurring orders where the
periodicity and/or amount varies.
Please note that you need to do a capture after sending the unscheduled request. We have added a capture section at the end of this page for that reason.
Generating The Token
First, you need an initial transaction where the unscheduledToken is generated
and connected. You do that by adding the field generateUnscheduledToken in the
request and set the value to true. The payer must complete the
purchase to activate the token. You can also use Verify to activate
tokens.
(Read more about deleting the unscheduled token here.)
Initial Request
The initial request should look like this:
Request
1
2
3
POST /psp/creditcard/payments HTTP/1.1
Authorization: Bearer <AccessToken>
Content-Type: application/json
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
{
"payment": {
"operation": "Purchase",
"intent": "Authorization",
"currency": "SEK",
"prices": [{
"type": "CreditCard",
"amount": 1500,
"vatAmount": 0
}
],
"description": "Test Purchase",
"generatePaymentToken": true,
"userAgent": "Mozilla/5.0...",
"language": "nb-NO",
"urls": {
"completeUrl": "https://example.com/payment-completed",
"cancelUrl": "https://example.com/payment-cancelled",
"callbackUrl": "https://example.com/payment-callback",
"logoUrl": "https://example.com/payment-logo.png",
"termsOfServiceUrl": "https://example.com/payment-terms.pdf",
},
"payeeInfo": {
"payeeId": "5cabf558-5283-482f-b252-4d58e06f6f3b",
"payeeReference": "CD1234",
"payeeName": "Merchant1",
"productCategory": "A123",
"orderReference": "or123",
"subsite": "mySubsite"
},
"payer": {
"payerReference": "AB1234",
},
"cardholder": {
"firstName": "Olivia",
"lastName": "Nyhuus",
"email": "olivia.nyhuus@swedbankpay.com",
"msisdn": "+4798765432",
"homePhoneNumber": "+4787654321",
"workPhoneNumber": "+4776543210",
"shippingAddress": {
"firstName": "Olivia",
"lastName": "Nyhuus",
"email": "olivia.nyhuus@swedbankpay.com",
"msisdn": "+4798765432",
"streetAddress": "Saltnestoppen 43",
"coAddress": "",
"city": "Saltnes",
"zipCode": "1642",
"countryCode": "NO"
},
},
"riskIndicator": {
"deliveryEmailAddress": "olivia.nyhuus@swedbankpay.com",
"deliveryTimeFrameIndicator": "01",
"preOrderDate": "19801231",
"preOrderPurchaseIndicator": "01",
"shipIndicator": "01",
"giftCardPurchase": false,
"reOrderPurchaseIndicator": "01",
"pickUpAddress": {
"name": "Olivia Nyhuus",
"streetAddress": "Saltnestoppen 43",
"coAddress": "",
"city": "Saltnes",
"zipCode": "1642",
"countryCode": "NO"
}
}
}
}
| Required | Field | Type | Description |
| :————–: | :——————————– | :———— | :—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————- |
| check | payment | object | The payment object |
| check | operation | string | Determines the initial operation, defining the type of payment order created. Possible options are Purchase, Abort Verify, UnscheduledPurchase, Recur and Payout. |
| check | intent | string | Authorization. Reserves the amount, and is followed by a Cancel or Capture of funds.
AutoCapture. A one phase option that enables the Capture of funds automatically after authorization. |
| check | currency | string | NOK, SEK, DKK, USD or EUR. |
| check | prices | array | The prices resource lists the prices related to a specific payment. |
| check | type | string | Use the value ``.See the prices resource for more information. |
| check | amount | integer | The transaction amount (including VAT, if any) entered in the lowest monetary unit of the selected currency. E.g.: 10000 = 100.00 SEK, 5000 = 50.00 SEK. |
| check | vatAmount | integer | The payment’s VAT (Value Added Tax) amount, entered in the lowest monetary unit of the selected currency. E.g.: 10000 = 100.00 SEK, 5000 = 50.00 SEK. The vatAmount entered will not affect the amount shown on the payment page, which only shows the total amount. This field is used to specify how much of the total amount the VAT will be. Set to 0 (zero) if there is no VAT amount charged. |
| check | description | string(40) | A textual description of the purchase. Maximum length is 40 characters. |
| | generatePaymentToken| boolean | true or false. Set to true if you want to generate a paymentToken for future unscheduled purchases (Merchant Initiated Transactions). |
| check | userAgent | string | The user agent of the payer. Should typically be set to the value of the User-Agent header sent by the payer’s web browser. |
| check | language | string | sv-SE, nb-NO, da-DK, de-DE, ee-EE, en-US, es-ES, fr-FR, lv-LV, lt-LT, ru-RU or fi-FI. |
| check︎ | urls | object | The object containing URLs relevant for the payment. |
| check | completeUrl | string | The URL that Swedbank Pay will redirect back to when the payer has completed their interactions with the payment. This does not indicate a successful payment, only that it has reached a final (complete) state. A GET request needs to be performed on the payment to inspect it further. See completeUrl for details. |
| check | cancelUrl | string | The URL to redirect the payer to if the payment is cancelled. Only used in redirect scenarios. Can not be used simultaneously with paymentUrl; only cancelUrl or paymentUrl can be used, not both. |
| | paymentUrl | string | The paymentUrl represents the URL that Swedbank Pay will redirect back to when the view-operation needs to be loaded, to inspect and act on the current status of the payment, such as when the payer is redirected out of the Seamless View (the <iframe>) and sent back after completing the payment. paymentUrl is only used in Seamless Views and should point to the page of where the Payment Order Seamless View is hosted. If both cancelUrl and paymentUrl is sent, the paymentUrl will used. |
| | callbackUrl | string | The URL that Swedbank Pay will perform an HTTP POST against every time a transaction is created on the payment. See callback for details. |
| | logoUrl | string | The URL that will be used for showing the customer logo. It must be a picture with maximum 50px height and 400px width. HTTPS is required. |
| | termsOfServiceUrl | string | The URL to the terms of service document which the payer must accept in order to complete the payment. HTTPS is a requirement. |
| check | payeeInfo | object | The payeeInfo object, containing information about the payee (the recipient of the money). See payeeInfo for details. |
| check | payeeId | string | This is the unique id that identifies this payee (like merchant) set by Swedbank Pay. |
| check | payeeReference | string(30) | A unique reference from the merchant system. Set per operation to ensure an exactly-once delivery of a transactional operation. Length and content validation depends on whether the transaction.number or the payeeReference is sent to the acquirer. If Swedbank Pay handles the settlement, the transaction.number is sent to the acquirer and the payeeReference must be in the format of A-Za-z0-9 and string(50). If you handle the settlement, Swedbank Pay will send the payeeReference and it will be limited to the format of string(12). All characters must be digits. |
| | payeeName | string | The payee name (like merchant name) that will be displayed when redirected to Swedbank Pay. |
| | productCategory | string(50) | A product category or number sent in from the payee/merchant. This is not validated by Swedbank Pay, but will be passed through the payment process and may be used in the settlement process. |
| | orderReference | string(50) | The order reference should reflect the order reference found in the merchant’s systems. |
| | subsite | string(40) | The subsite field can be used to perform a split settlement on the payment. The different subsite values must be resolved with Swedbank Pay reconciliation before being used. If you send in an unknown subsite value, it will be ignored and the payment will be settled using the merchant’s default settlement account. Must be in the format of A-Za-z0-9. |
| | payer | string | The payer object, containing information about the payer. |
| | payerReference | string | The reference to the payer from the merchant system, like e-mail address, mobile number, customer number etc. Mandatory if generateRecurrenceToken, RecurrenceToken, generatePaymentToken or paymentToken is true. |
| | metadata | object | A unique reference from the merchant system. Set per operation to ensure an exactly-once delivery of a transactional operation. Length and content validation depends on whether the transaction.number or the payeeReference is sent to the acquirer. If Swedbank Pay handles the settlement, the transaction.number is sent to the acquirer and the payeeReference must be in the format of A-Za-z0-9 and string(50). If you handle the settlement, Swedbank Pay will send the payeeReference and it will be limited to the format of string(12). All characters must be digits. |
| | cardholder | object | Optional. Cardholder object that can hold information about a buyer (private or company). The information added increases the chance for frictionless flow and is related to 3-D Secure 2.0.. |
| | firstName | string | Optional (increased chance for frictionless flow if set). If buyer is a company, use only firstName. |
| | lastName | string | Optional (increased chance for frictionless flow if set). If buyer is a company, use only firstName. |
| | email | string | Optional (increased chance for frictionless flow if set) |
| | msisdn | string | Optional (increased chance for frictionless flow if set) |
| | homePhoneNumber | string | Optional (increased chance for frictionless flow if set) |
| | workPhoneNumber | string | Optional (increased chance for frictionless flow if set) |
| | shippingAddress | object | Optional (increased chance for frictionless flow if set) |
| | firstName | string | Optional (increased chance for frictionless flow if set) |
| | lastName | string | Optional (increased chance for frictionless flow if set) |
| | email | string | Optional (increased chance for frictionless flow if set) |
| | msisdn | string | Optional (increased chance for frictionless flow if set) |
| | streetAddress | string | Optional (increased chance for frictionless flow if set) |
| | coAddress | string | Optional (increased chance for frictionless flow if set) |
| | city | string | Optional (increased chance for frictionless flow if set) |
| | zipCode | string | Optional (increased chance for frictionless flow if set) |
| | countryCode | string | Optional (increased chance for frictionless flow if set) |
| | billingAddress | object | Optional (increased chance for frictionless flow if set) |
| | firstName | string | Optional (increased chance for frictionless flow if set). If buyer is a company, use only firstName. |
| | lastName | string | Optional (increased chance for frictionless flow if set). If buyer is a company, use only firstName. |
| | email | string | Optional (increased chance for frictionless flow if set) |
| | msisdn | string | Optional (increased chance for frictionless flow if set) |
| | streetAddress | string | Optional (increased chance for frictionless flow if set) |
| | coAddress | string | Optional (increased chance for frictionless flow if set) |
| | city | string | Optional (increased chance for frictionless flow if set) |
| | zipCode | string | Optional (increased chance for frictionless flow if set) |
| | countryCode | string | Optional (increased chance for frictionless flow if set) |
riskIndicator
array
deliveryEmailAdress
string
deliveryTimeFrameIndicator
string
`01` (Electronic Delivery)
`02` (Same day shipping)
`03` (Overnight shipping)
`04` (Two-day or more shipping)
preOrderDate
string
preOrderPurchaseIndicator
string
`01` (Merchandise available)
`02` (Future availability)
shipIndicator
string
`01` (Ship to cardholder's billing address)
`02` (Ship to another verified address on file with merchant)
`03` (Ship to address that is different than cardholder's billing address)
`04` (Ship to Store / Pick-up at local store. Store address shall be populated in shipping address fields)
`05` (Digital goods, includes online services, electronic giftcards and redemption codes)
`06` (Travel and Event tickets, not shipped)
`07` (Other, e.g. gaming, digital service)
giftCardPurchase
bool
reOrderPurchaseIndicator
string
`01` (First time ordered)
`02` (Reordered).
pickUpAddress
object
name
string
streetAddress
string
coAddress
string
city
string
zipCode
string
countryCode
string
Initial Response
Response
1
2
HTTP/1.1 200 OK
Content-Type: application/json
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
{
"payment": {
"id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1",
"number": 1234567890,
"instrument": "CreditCard",
"created": "2016-09-14T13:21:29.3182115Z",
"updated": "2016-09-14T13:21:57.6627579Z",
"state": "Ready",
"operation": "Purchase",
"intent": "Authorization",
"currency": "SEK",
"amount": 0,
"remainingCaptureAmount": 1500,
"remainingCancellationAmount": 1500,
"remainingReversalAmount": 0,
"description": "Test Purchase",
"initiatingSystemUserAgent": "swedbankpay-sdk-dotnet/3.0.1",
"userAgent": "Mozilla/5.0...",
"language": "sv-SE",
"paymentToken": "7e6cdfc3-1276-44e9-9992-7cf4419750e1",
"prices": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/prices" },
"transactions": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/transactions" },
"authorizations": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/authorizations" },
"captures": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/captures" },
"reversals": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/reversals" },
"cancellations": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/cancellations" },
"urls": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/urls" },
"payeeInfo": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/payeeInfo" },
"payers": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/payers" },
"settings": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/settings" }
},
"operations": [
{
"rel": "update-payment-abort",
"href": "https://api.externalintegration.payex.com/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1",
"method": "PATCH",
"contentType": "application/json"
},
{
"rel": "redirect-authorization",
"href": "https://ecom.externalintegration.payex.com/creditcard/payments/authorize/5a17c24e-d459-4567-bbad-aa0f17a76119",
"method": "GET",
"contentType": "text/html"
},
{
"rel": "view-authorization",
"href": "https://ecom.externalintegration.payex.com/creditcard/core/scripts/client/px.creditcard.client.js?token=5a17c24e-d459-4567-bbad-aa0f17a76119",
"method": "GET",
"contentType": "application/javascript"
},
{
"rel": "view-payment",
"href": "https://ecom.externalintegration.payex.com/creditcard/core/scripts/client/px.creditcard.client.js?token=5a17c24e-d459-4567-bbad-aa0f17a76119",
"method": "GET",
"contentType": "application/javascript"
},
{
"rel": "direct-authorization",
"href": "https://api.externalintegration.payex.com/psp/creditcard/confined/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/authorizations",
"method": "POST",
"contentType": "application/json"
}
]
}
| Field | Type | Description |
|---|---|---|
payment |
object |
The payment object contains information about the specific payment. |
id |
string |
The relative URL and unique identifier of the payment resource . Please read about URL Usage to understand how this and other URLs should be used in your solution. |
number |
integer |
The payment number, useful when there’s need to reference the payment in human communication. Not usable for programmatic identification of the payment, where id should be used instead. |
instrument |
string |
The payment method used in the payment. |
created |
string |
The ISO-8601 date of when the payment was created. |
updated |
string |
The ISO-8601 date of when the payment was updated. |
state |
string |
Ready, Pending, Failed or Aborted. Indicates the state of the payment, not the state of any transactions performed on the payment. To find the state of the payment’s transactions (such as a successful authorization), see the transactions resource or the different specialized type-specific resources such as authorizations or sales. |
operation |
string |
Determines the initial operation, defining the type of payment order created. Possible options are Purchase, Abort Verify, UnscheduledPurchase, Recur and Payout. |
intent |
string |
Authorization |
currency |
string |
NOK, SEK, DKK, USD or EUR. |
amount |
integer |
The transaction amount (including VAT, if any) entered in the lowest monetary unit of the selected currency. E.g.: 10000 = 100.00 SEK, 5000 = 50.00 SEK. |
remainingCaptureAmount |
integer |
The available amount to capture. |
remainingCancelAmount |
integer |
The available amount to cancel. |
remainingReversalAmount |
integer |
The available amount to reverse. |
description |
string(40) |
A textual description of the purchase. Maximum length is 40 characters. |
userAgent |
string |
The user agent of the payer. Should typically be set to the value of the User-Agent header sent by the payer’s web browser. |
language |
string |
sv-SE, nb-NO, da-DK, de-DE, ee-EE, en-US, es-ES, fr-FR, lv-LV, lt-LT, ru-RU or fi-FI. |
paymentToken |
string |
The generated payment token, if operation: Verify, operation: UnscheduledPurchase or generatePaymentToken: true was used. |
prices |
id |
The URL to the prices resource where all URLs related to the payment can be retrieved. |
transactions |
id |
The URL to the transactions resource where the information about the payer can be retrieved. |
authorizations |
id |
The URL to the authorizations resource where the information about the payer can be retrieved. |
captures |
id |
The URL to the captures resource where the information about the payer can be retrieved. |
reversals |
id |
The URL to the reversals resource where the information about the payer can be retrieved. |
cancellations |
id |
The URL to the cancellations resource where the information about the payer can be retrieved. |
urls |
id |
The URL to the urls resource where all URLs related to the payment can be retrieved. |
payeeInfo |
id |
The URL to the payeeInfo resource where information related to the payee can be retrieved. |
payers |
id |
The URL to the payer resource where the information about the payer can be retrieved. |
settings |
id |
The URL to the settings resource where the information about the payer can be retrieved. |
operations |
array |
The array of operations that are possible to perform on the payment in its current state. |
GET The Token
You can retrieve the token by using the expand option when you GET your
payment. The GET request should look like the one below, with a
?$expand=paid after the paymentOrderId. The response should match the
initial payment response, but with an expanded paid field.
Request
1
2
3
4
GET /psp/creditcard/payments/09ccd29a-7c4f-4752-9396-12100cbfecce/?$expand=paid HTTP/1.1
Host: api.externalintegration.payex.com
Authorization: Bearer <AccessToken>
Content-Type: application/json
Performing The Unscheduled Purchase
When you are ready to perform the unscheduled purchase, simply add the
unscheduledToken field and use the token as the value. Your request should
look like this:
Unscheduled Request
Request
1
2
3
4
POST /psp/creditcard/payments HTTP/1.1
Host: api.externalintegration.payex.com
Authorization: Bearer <AccessToken>
Content-Type: application/json
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
{
"payment": {
"operation": "UnscheduledPurchase",
"intent": "Authorization",
"paymentToken": "7e6cdfc3-1276-44e9-9992-7cf4419750e1",
"currency": "NOK",
"amount": 1500,
"vatAmount": 0,
"description": "Test Unscheduled",
"userAgent": "Mozilla/5.0...",
"language": "nb-NO",
"urls": {
"completeUrl": "https://example.com/payment-completed",
"cancelUrl": "https://example.com/payment-cancelled",
"callbackUrl": "https://example.com/payment-callback",
"logoUrl": "https://example.com/payment-logo.png",
"termsOfServiceUrl": "https://example.com/payment-terms.pdf",
},
"payeeInfo": {
"payeeId": "5cabf558-5283-482f-b252-4d58e06f6f3b",
"payeeReference": "CD1234",
"payeeName": "Merchant1",
"productCategory": "A123",
"orderReference": "or-12456",
"subsite": "MySubsite"
},
"payer": {
"payerReference": "AB1234",
}
}
}
| Required | Field | Type | Description |
|---|---|---|---|
| check | payment |
object |
The payment object |
| check | operation |
string |
Determines the initial operation, defining the type of payment order created. Possible options are Purchase, Abort Verify, UnscheduledPurchase, Recur and Payout. Must be unscheduledPurchase. |
| check | intent |
string |
Authorization. |
| check | paymentToken |
string |
The paymentToken generated in the initial purchase, if operation: Verify or generatePaymentToken: true was used. |
| check | currency |
string |
NOK, SEK, DKK, USD or EUR. |
| check | amount |
integer |
The transaction amount (including VAT, if any) entered in the lowest monetary unit of the selected currency. E.g.: 10000 = 100.00 SEK, 5000 = 50.00 SEK. |
| check | vatAmount |
integer |
The payment’s VAT (Value Added Tax) amount, entered in the lowest monetary unit of the selected currency. E.g.: 10000 = 100.00 SEK, 5000 = 50.00 SEK. The vatAmount entered will not affect the amount shown on the payment page, which only shows the total amount. This field is used to specify how much of the total amount the VAT will be. Set to 0 (zero) if there is no VAT amount charged. |
| check | description |
string(40) |
A textual description of the purchase. Maximum length is 40 characters. |
| check | userAgent |
string |
The user agent of the payer. Should typically be set to the value of the User-Agent header sent by the payer’s web browser. |
| check | language |
string |
sv-SE, nb-NO, da-DK, de-DE, ee-EE, en-US, es-ES, fr-FR, lv-LV, lt-LT, ru-RU or fi-FI. |
| check︎ | urls |
object |
The object containing URLs relevant for the payment. |
| check | completeUrl |
string |
The URL that Swedbank Pay will redirect back to when the payer has completed their interactions with the payment. This does not indicate a successful payment, only that it has reached a final (complete) state. A GET request needs to be performed on the payment to inspect it further. See completeUrl for details. |
| check | cancelUrl |
string |
The URL to redirect the payer to if the payment is cancelled. Only used in redirect scenarios. Can not be used simultaneously with paymentUrl; only cancelUrl or paymentUrl can be used, not both. |
paymentUrl |
string |
The paymentUrl represents the URL that Swedbank Pay will redirect back to when the view-operation needs to be loaded, to inspect and act on the current status of the payment, such as when the payer is redirected out of the Seamless View (the <iframe>) and sent back after completing the payment. paymentUrl is only used in Seamless Views and should point to the page of where the Payment Order Seamless View is hosted. If both cancelUrl and paymentUrl is sent, the paymentUrl will used. |
|
callbackUrl |
string |
The URL that Swedbank Pay will perform an HTTP POST against every time a transaction is created on the payment. See callback for details. |
|
logoUrl |
string |
The URL that will be used for showing the customer logo. It must be a picture with maximum 50px height and 400px width. HTTPS is required. | |
termsOfServiceUrl |
string |
The URL to the terms of service document which the payer must accept in order to complete the payment. HTTPS is a requirement. | |
| check | payeeInfo |
object |
The payeeInfo object, containing information about the payee (the recipient of the money). See payeeInfo for details. |
| check | payeeId |
string |
This is the unique id that identifies this payee (like merchant) set by Swedbank Pay. |
| check | payeeReference |
string(30) |
A unique reference from the merchant system. Set per operation to ensure an exactly-once delivery of a transactional operation. Length and content validation depends on whether the transaction.number or the payeeReference is sent to the acquirer. If Swedbank Pay handles the settlement, the transaction.number is sent to the acquirer and the payeeReference must be in the format of A-Za-z0-9 and string(50). If you handle the settlement, Swedbank Pay will send the payeeReference and it will be limited to the format of string(12). All characters must be digits. |
payeeName |
string |
The payee name (like merchant name) that will be displayed when redirected to Swedbank Pay. | |
productCategory |
string(50) |
A product category or number sent in from the payee/merchant. This is not validated by Swedbank Pay, but will be passed through the payment process and may be used in the settlement process. | |
orderReference |
string(50) |
The order reference should reflect the order reference found in the merchant’s systems. | |
subsite |
string(40) |
The subsite field can be used to perform a split settlement on the payment. The different subsite values must be resolved with Swedbank Pay reconciliation before being used. If you send in an unknown subsite value, it will be ignored and the payment will be settled using the merchant’s default settlement account. Must be in the format of A-Za-z0-9. |
|
payer |
string |
The payer object, containing information about the payer. |
|
payerReference |
string |
The reference to the payer from the merchant system, like e-mail address, mobile number, customer number etc. Mandatory if generateRecurrenceToken, RecurrenceToken, generatePaymentToken or paymentToken is true. |
Unscheduled Response
Response
1
2
HTTP/1.1 200 OK
Content-Type: application/json
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
{
"payment": {
"id": "/psp/creditcard/payments/5adc265f-f87f-4313-577e-08d3dca1a26c",
"number": 1234567890,
"created": "2016-09-14T13:21:29.3182115Z",
"updated": "2016-09-14T13:21:57.6627579Z",
"state": "Ready",
"operation": "Purchase",
"intent": "Authorization",
"currency": "NOK",
"amount": 1500,
"remainingCaptureAmount": 1500,
"remainingCancellationAmount": 1500,
"remainingReversalAmount": 0,
"description": "Test Unscheduled",
"initiatingSystemUserAgent": "swedbankpay-sdk-dotnet/3.0.1",
"userAgent": "Mozilla/5.0...",
"language": "nb-NO",
"paymentToken": "7e6cdfc3-1276-44e9-9992-7cf4419750e1",
"prices": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/prices" },
"transactions": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/transactions" },
"authorizations": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/authorizations" },
"captures": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/captures" },
"reversals": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/reversals" },
"cancellations": { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/cancellations" },
"urls" : { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/urls" },
"payeeInfo" : { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/payeeInfo" },
"payers" : { "id": "/psp/creditcard/payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/payers" }
}
}
See the table in the initial purchase response for descriptions.
Capture
The capture transaction is where you ensure that the funds are charged from
the payer. This step usually takes place when the product has exchanged
possession. You must first do a GET request on the payment to find the
create-capture operation.
Please note that you have a maximum of 5 consecutive failed attempts at a capture. The payment will be locked after this, and you need to contact us for another attempt.
Create Capture Transaction
To create a capture transaction to withdraw money from the payer’s card, you
need to perform the create-capture operation.
Capture Request
Request
1
2
3
4
POST /psp//payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/captures HTTP/1.1
Host: api.externalintegration.payex.com
Authorization: Bearer <AccessToken>
Content-Type: application/json
1
2
3
4
5
6
7
8
{
"transaction": {
"amount": 1500,
"vatAmount": 250,
"description": "Test Capture",
"payeeReference": "ABC123"
}
}
transaction
object
check
transaction resource, containing information about the current transaction.
amount
integer
check
10000 = 100.00 NOK, 5000 = 50.00 SEK.
vatAmount
integer
check
10000 = 100.00 NOK, 5000 = 50.00 SEK.
description
string
check
payeeReference
string(30)
check
Capture Response
Response
1
2
HTTP/1.1 200 OK
Content-Type: application/json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"payment": "/psp//payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1",
"capture": {
"id": "/psp//payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/captures/ec2a9b09-601a-42ae-8e33-a5737e1cf177",
"transaction": {
"id": "/psp//payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/transactions/ec2a9b09-601a-42ae-8e33-a5737e1cf177",
"created": "2016-09-14T01:01:01.01Z",
"updated": "2016-09-14T01:01:01.03Z",
"type": "Capture",
"state": "Completed",
"number": 1234567890,
"amount": 1500,
"vatAmount": 250,
"description": "Test Capture",
"payeeReference": "ABC123",
"isOperational": false,
"operations": []
}
}
}
payment
string
capture transaction belongs to.
capture
object
capture resource contains information about the capture transaction made against a card payment.
id
string
capture transaction.
transaction
object
transaction resource, containing information about the current transaction.
id
string
transaction resource.
created
string
updated
string
type
string
state
string
number
integer
amount
integer
10000 = 100.00 NOK, 5000 = 50.00 SEK.
vatAmount
integer
0 (zero) if this is not relevant.
description
string
payeeReference
string(30)
failedReason
string
isOperational
boolean
true if the transaction is operational; otherwise false.
operations
array
List Capture Transactions
The captures resource list the capture transactions (one or more) on a
specific payment.
Request
1
2
3
4
GET /psp//payments/7e6cdfc3-1276-44e9-9992-7cf4419750e1/captures HTTP/1.1
Host: api.externalintegration.payex.com
Authorization: Bearer <AccessToken>
Content-Type: application/json
The capture resource contains information about the
capture transaction made against a creditcard payment. You can
return a specific capture transaction by performing a GET request
towards the specific transaction’s id.
Transaction List Response
Response
1
2
HTTP/1.1 200 OK
Content-Type: application/json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"paymentorder": "/psp/paymentorders/7e6cdfc3-1276-44e9-9992-7cf4419750e1",
"captures": {
"id": "/psp/paymentorders/7e6cdfc3-1276-44e9-9992-7cf4419750e1/currentpayment",
"captureList": [{
"id": "/psp/paymentorders/7e6cdfc3-1276-44e9-9992-7cf4419750e1/currentpayment/ec2a9b09-601a-42ae-8e33-a5737e1cf177",
"transaction": {
"id": "/psp/paymentorders/7e6cdfc3-1276-44e9-9992-7cf4419750e1/currentpayment/ec2a9b09-601a-42ae-8e33-a5737e1cf177",
"created": "2016-09-14T01:01:01.01Z",
"updated": "2016-09-14T01:01:01.03Z",
"type": "Capture",
"state": "Completed",
"number": 1234567890,
"amount": 1000,
"vatAmount": 250,
"description": "Test transaction",
"payeeReference": "AH123456",
"isOperational": false,
"operations": []
}
}]
}
}
paymentOrder
string
The relative URL and unique identifier of the payment resource . Please read about URL Usage to understand how this and other URLs should be used in your solution.
reversals
object
captures resource.
id
string
The relative URL and unique identifier of the captures resource . Please read about URL Usage to understand how this and other URLs should be used in your solution.
reversalList
array
capture resource below.
id
string
The relative URL and unique identifier of the transaction resource . Please read about URL Usage to understand how this and other URLs should be used in your solution.
created
string
updated
string
type
string
state
string
Indicates the state of the transaction, usually initialized, completed or failed. If a partial capture has been done and further transactions are possible, the state will be awaitingActivity.
number
integer
The transaction number, useful when there’s need to reference the transaction in human communication. Not usable for programmatic identification of the transaction, where id should be used instead.
amount
integer
The transaction amount (including VAT, if any) entered in the lowest monetary unit of the selected currency. E.g.: 10000 = 100.00 SEK, 5000 = 50.00 SEK.
vatAmount
integer
The payment’s VAT (Value Added Tax) amount, entered in the lowest monetary unit of the selected currency. E.g.: 10000 = 100.00 SEK, 5000 = 50.00 SEK. The vatAmount entered will not affect the amount shown on the payment page, which only shows the total amount. This field is used to specify how much of the total amount the VAT will be. Set to 0 (zero) if there is no VAT amount charged.
description
string
A textual description of the purchase. Maximum length is 40 characters.
payeeReference
string(30)
A unique reference from the merchant system. Set per operation to ensure an exactly-once delivery of a transactional operation. Length and content validation depends on whether the transaction.number or the payeeReference is sent to the acquirer. If Swedbank Pay handles the settlement, the transaction.number is sent to the acquirer and the payeeReference must be in the format of A-Za-z0-9 and string(50). If you handle the settlement, Swedbank Pay will send the payeeReference and it will be limited to the format of string(12). All characters must be digits. In Invoice Payments payeeReference is used as an invoice/receipt number, if the receiptReference is not defined.
isOperational
bool
true if the transaction is operational; otherwise false.
operations
array
The array of operations that are possible to perform on the transaction in its current state.
Capture Sequence Diagram
Capture can only be done on an authorized transaction. It is possible to do a
partial capture where you only capture a part of the authorized amount. You can
do more captures on the same payment up to the total authorization amount later.
sequenceDiagram
activate Merchant
Merchant->>-SwedbankPay: POST [ captures]
activate SwedbankPay
SwedbankPay-->>-Merchant: transaction resource