From empty
To version 92.1
edited by thomas hedstrom
on 2026/07/09 11:47
Change comment: There is no comment for this version

Summary

Details

Page properties
Title
... ... @@ -1,0 +1,1 @@
1 +accounttransaction
Parent
... ... @@ -1,0 +1,1 @@
1 +Main.WebHome
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.XWikiGuest
1 +xwiki:XWiki.thomashedstrom
Default language
... ... @@ -1,0 +1,1 @@
1 +en
Tags
... ... @@ -1,0 +1,1 @@
1 +px-custom-page-content
Content
... ... @@ -1,0 +1,1503 @@
1 +(% class="jumbotron" %)
2 +(((
3 +
4 +
5 +(% class="container" %)
6 +(((
7 + Integrate to **PayEx Account transaction API **
8 +)))
9 +)))
10 +
11 +
12 += Changelog =
13 +
14 +
15 + 2022-03-18
16 + Added preAuthorizationStatus property on pre-authorization resource
17 + Added hypermedia reference to reversal from capture response
18 + Added hypermedia reference to split-authorization from pre-authorization response
19 +
20 +2025-09-05
21 +Added new value to PreAuthorizationStatus - Rejected (Estimated release 2025-09-23)
22 +\\[[Swagger>>attach:Swagger_Releases-500654.txt]]
23 +
24 +
25 += Introduction =
26 +
27 +
28 +
29 +(% class="lead" %) The account-transaction API is handle payment flows for split-payments and credit accounts for retail finance scenarios. The api contains redirect scenarios for account onboarding, upgrades and authentication.
30 +
31 +
32 +== [[image:1780491723078-754.png||height="824" width="463"]] ==
33 +
34 +
35 +== 1. Pre-authorizations ==
36 +
37 +
38 +Gets already created pre authorization
39 +
40 +==== 1.1 Get specific Pre-authorization ====
41 +
42 +{{code language="http" title="**Request**"}}
43 +GET /ledger/account-transaction/v1/{ownerNo}/pre-authorizations/{preAuthorizationId} HTTP/1.1
44 +Host: -
45 +Authorization: Bearer<Token>
46 +Content-Type: application/json
47 +
48 +{{/code}}
49 +
50 +Initiate new pre-authorization
51 +
52 +{{code language="http" title="**Response**"}}
53 +HTTP/1.1 200 OK
54 +Content-Type: application/json
55 +
56 +{
57 + "preAuthorizationId": "8c535338-d92c-49e7-90bf-304dbf38e0bd",
58 + "preAuthorizationStatus": "Initialized",
59 + "customer": {
60 + "nationalConsumerIdentifier": {
61 + "value": "19101010-1010",
62 + "countryCode": "SE"
63 + },
64 + "email": "abc@test.com",
65 + "msisdn": "4670123456",
66 + "customerNo": "456987"
67 + },
68 + "sellerNo": "123456",
69 + "sellerReferenceId": "abc-87465123",
70 + "profileName": "configured-profile-name",
71 + "authorizationAmount": 100.50,
72 + "currency": "SEK",
73 + "pointOfSale": "Test shop",
74 + "assessment": {
75 + "assessmentUrl": "/score/sca/v1/{claimantNo}/assessments/{assessmentNo}",
76 + "scaStatus": "Required"
77 + },
78 + "operations": [
79 + {
80 + "rel": "add-authorizations",
81 + "method": "POST",
82 + "href": "/ledger/account-transaction/v1/591/authorizations"
83 + },
84 + {
85 + "rel": "add-split-authorizations",
86 + "method": "POST",
87 + "href": "/ledger/account-transaction/v1/591/split-authorizations"
88 + },
89 + {
90 + "rel": "redirect",
91 + "method": "POST",
92 + "href": "/ledger/account-transaction/v1/xxx/pre-authorizations/8c535338-d92c-49e7-90bf-304dbf38e0bd/redirect"
93 + }
94 + ]
95 +}
96 +{{/code}}
97 +
98 +
99 +==== 1.2 Create Pre-authorization ====
100 +
101 +Check if required conditions are met to begin a transaction. Creates an authentication resource that exposes operation link to redirect if user interaction is required. (Is there an existing account? Is the account's limit sufficient for the new transaction?)
102 +
103 +{{code language="http" title="**Request**"}}
104 +POST /ledger/account-transaction/v1/{ownerNo}/pre-authorizations HTTP/1.1
105 +Host: -
106 +Authorization: Bearer<Token>
107 +Content-Type: application/json
108 +
109 +{
110 + "customer": {
111 + "nationalConsumerIdentifier": {
112 + "value": "19101010-1010",
113 + "countryCode": "SE"
114 + },
115 + "email": "abc@test.com",
116 + "msisdn": "4670123456",
117 + "customerNo": "456987"
118 + },
119 + "sellerNo": "123456",
120 + "sellerReferenceId": "abc-87465123",
121 + "profileName": "configured-profile-name",
122 + "authorizationAmount": 100.50,
123 + "currency": "SEK",
124 + "pointOfSale": "Test shop",
125 + "assessment": {
126 + "assessmentUrl": "/score/sca/v1/{claimantNo}/assessments/{assessmentNo}",
127 + "scaStatus": "Required"
128 + }
129 +}
130 +{{/code}}
131 +
132 +
133 +**Request object specification**
134 +
135 +(% class="table-bordered table-striped" %)
136 +|=Property |=Data type|=Format|=Required|=Description
137 +|=customer |object | |Yes |
138 +|= nationalConsumerIdentifier |object | |Yes |
139 +| value |string | |No |The identifier - SSN, Personnummer, CPR, d-nummer, temporary identification number etc. Uniquely identifies the consumer. Visit developer.payex.com for information about supported national identifier format
140 +| countryCode |string |Pattern: SE~|NO~|DK~|FI |No |The country code for the identifier value property. Valid values are 'SE', 'NO', 'DK', 'FI'. ~[~[ISO 3166-1 alpha-2>>url:https://sv.wikipedia.org/wiki/ISO_3166]]
141 +| email |string |Pattern: ^[^;\xA0\xD0\─@<>\p{Cc}]+@(?!\.)(?!.*\.\.)(?:[^;\xA0\xD0\─@<>\p{Cc}]+\.[^;\xA0\xD0\─@<>\p{Cc}]+~|\~[~[A-Fa-f\d\:]+\])(?<!\.)$ |No |The customers Email
142 +| msisdn |string |Pattern: ^[+]{1}\d{4,14}$ |No |Mobile communications number starting with '+' followed with up to 14 numbers from 0-9. Length between 5 and 15 including the starting '+'
143 +| customerNo |string | |No |The identifier of the customer. Normally required, exception is when the configuration on the ledger is set for the provider of this API to generate customer numbers, in that case CustomerNo must not be set in request
144 +|sellerNo |string | |Yes |The seller identifier at the provider of the API
145 +|sellerReferenceId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |Sellers reference id, usually the order id of the purchase / consistent for all captures/deliveries
146 +|profileName |string | |Yes |The profile name of the pre configured account setup
147 +|authorizationAmount |number |Type: double
148 +Max: 100000000
149 +Min: 0 |Yes |The original authorized amount, can't have more than 2 decimal places
150 +|currency |string |(((
151 +* SEK
152 +* NOK
153 +* DKK
154 +* EUR
155 +)))|Yes |
156 +|pointOfSale |string |Pattern: ^[\u0020-\u003A \u003C-\u007E \u00A0-\u00FF \u2019]*$ |No |Trade name of the point of sale. Will be displayed to end customer. Only use if agreed with provider of the API
157 +|=assessment |object | |No |
158 +| assessmentUrl |string |Pattern: ^/score/sca/v\d{1,10}/\w{0,15}[0-9aA-zZ]/assessments/\d+$ |Yes |
159 +| scaStatus |string |(((
160 +* Required
161 +* NotRequired
162 +)))|Yes |
163 +|=callbackOptions |object | |No |
164 +| url |string | |No |Absolute url, only supports GET
165 +|specialIntent |string | |No |Additional instructions, possible values: [use-trusted-seller-group-consent] Only use if agreed with provider of the API
166 +
167 +Initiate new pre-authorization. Evaluates and decides what needs to be ready for the requested authorize flow
168 +
169 +{{code language="http" title="**Response**"}}
170 +HTTP/1.1 201 Created
171 +Content-Type: application/json
172 +
173 +{
174 + "preAuthorizationId": "8c535338d92c49e790bf304dbf38e0bd",
175 + "preAuthorizationStatus": "Initialized",
176 + "customer": {
177 + "nationalConsumerIdentifier": {
178 + "value": "19101010-1010",
179 + "countryCode": "SE"
180 + },
181 + "email": "abc@test.com",
182 + "msisdn": "4670123456",
183 + "customerNo": "456987"
184 + },
185 + "sellerNo": "123456",
186 + "sellerReferenceId": "abc-87465123",
187 + "profileName": "configured-profile-name",
188 + "authorizationAmount": 100.50,
189 + "currency": "SEK",
190 + "pointOfSale": "Test shop",
191 + "assessment": {
192 + "assessmentUrl": "/score/sca/v1/{claimantNo}/assessments/{assessmentNo}",
193 + "scaStatus": "Required"
194 + },
195 + "@id": "/ledger/account-transaction/v1/xxx/pre-authorizations/8c535338d92c49e790bf304dbf38e0bd",
196 + "operations": [
197 + {
198 + "rel": "add-authorizations",
199 + "method": "POST",
200 + "href": "/ledger/account-transaction/v1/591/authorizations"
201 + },
202 + {
203 + "rel": "add-split-authorizations",
204 + "method": "POST",
205 + "href": "/ledger/account-transaction/v1/591/split-authorizations"
206 + },
207 + {
208 + "rel": "redirect",
209 + "method": "POST",
210 + "href": "/ledger/account-transaction/v1/xxx/pre-authorizations/8c535338d92c49e790bf304dbf38e0bd/redirect"
211 + }
212 + ]
213 +}
214 +{{/code}}
215 +
216 +
217 +**Possible problems**
218 +
219 +(% class="table-bordered table-striped" %)
220 +|=Http status |=Problem type |=Description
221 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation
222 +|409 |account-limit-too-low |Occurs if the credit limit on the account is too low, raise the limit before making the call
223 +|409 |account-missing |No Account found for provided profile name and customer, need to create an account before calling
224 +|409 |conflict |May find more information in details
225 +|409 |unsupported-claim-level |Account unable to accept new transactions
226 +|409 |not-valid-for-special-intent |Provided SpecialIntent was not valid for this request
227 +|409 |unable-to-use-trusted-consent |Customer or Account is in a invalid state for the use of trusted seller group consent
228 +|422 |unprocessable |May find more information in details
229 +|500 |fatal |Unexpected error, logs may give details about the problem
230 +
231 +
232 +**Response object specification**
233 +
234 +(% class="table-bordered table-striped" %)
235 +|=Property |=Data type|=Format|=Description
236 +|=customer |object | |
237 +|= nationalConsumerIdentifier |object | |
238 +| value |string | |The identifier - SSN, Personnummer, CPR, d-nummer, temporary identification number etc. Uniquely identifies the consumer. Visit developer.payex.com for information about supported national identifier format
239 +| countryCode |string |Pattern: SE~|NO~|DK~|FI |The country code for the identifier value property. Valid values are 'SE', 'NO', 'DK', 'FI'. ~[~[ISO 3166-1 alpha-2>>url:https://sv.wikipedia.org/wiki/ISO_3166]]
240 +| email |string |Pattern: ^[^;\xA0\xD0\─@<>\p{Cc}]+@(?!\.)(?!.*\.\.)(?:[^;\xA0\xD0\─@<>\p{Cc}]+\.[^;\xA0\xD0\─@<>\p{Cc}]+~|\~[~[A-Fa-f\d\:]+\])(?<!\.)$ |The customers Email
241 +| msisdn |string |Pattern: ^[+]{1}\d{4,14}$ |Mobile communications number starting with '+' followed with up to 14 numbers from 0-9. Length between 5 and 15 including the starting '+'
242 +| customerNo |string | |The identifier of the customer. Normally required, exception is when the configuration on the ledger is set for the provider of this API to generate customer numbers, in that case CustomerNo must not be set in request
243 +|sellerNo |string | |The seller identifier at the provider of the API
244 +|sellerReferenceId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Sellers reference id, usually the order id of the purchase / consistent for all captures/deliveries
245 +|profileName |string | |The profile name of the pre configured account setup
246 +|authorizationAmount |number |Type: double
247 +Max: 100000000
248 +Min: 0 |The original authorized amount, can't have more than 2 decimal places
249 +|currency |string |(((
250 +* SEK
251 +* NOK
252 +* DKK
253 +* EUR
254 +)))|
255 +|pointOfSale |string |Pattern: ^[\u0020-\u003A \u003C-\u007E \u00A0-\u00FF \u2019]*$ |Trade name of the point of sale. Will be displayed to end customer. Only use if agreed with provider of the API
256 +|=assessment |object | |
257 +| assessmentUrl |string |Pattern: ^/score/sca/v\d{1,10}/\w{0,15}[0-9aA-zZ]/assessments/\d+$ |
258 +| scaStatus |string |(((
259 +* Required
260 +* NotRequired
261 +)))|
262 +|=callbackOptions |object | |
263 +| url |string | |Absolute url, only supports GET
264 +|specialIntent |string | |Additional instructions, possible values: [use-trusted-seller-group-consent] Only use if agreed with provider of the API
265 +|preAuthorizationId |string | |Unique identifier of the pre-authorization, generated by the API
266 +|preAuthorizationStatus |string |(((
267 +* Initialized
268 +* Failed
269 +* ReadyForAuthorization
270 +* Completed
271 +* Rejected
272 +)))|
273 +|failReasonCode |string | |May contain a short descriptive code to expand on why PreAuthorization was unsuccessful
274 +|operations |array | |List of operations that is possible to perform on the current resource, read more about the ~[~[hypermedia part of the response>>https://developer.payex.com/xwiki/wiki/developer/view/Main/Invoicing/ledger-api-general-docs/restful-pattern-guideline/#HHyper-mediaresponse]]
275 +|@id |string | |Uri identifier of the current resource
276 +
277 +== 2. Redirect ==
278 +
279 +
280 +==== 2.1 Create Redirect ====
281 +
282 +Initiates redirect authentication flow, generates redirect url and accepts return url after redirect process finishes. The operation is exposed by the parent authentication if required.
283 +
284 +{{code language="http" title="**Request**"}}
285 +POST /ledger/account-transaction/v1/{ownerNo}/pre-authorizations/{preAuthorizationId}/redirect HTTP/1.1
286 +Host: -
287 +Authorization: Bearer<Token>
288 +Content-Type: application/json
289 +
290 +{
291 + "returnUrl": "https://apiconsumerexample.se/transactioncallbackexample",
292 + "redirectOptions": {
293 + "nativeAppSwitchingUrl": "myapp://{ledgerNo}example",
294 + "autostartAction": "MhVrFOAClUaJUx6QqnLgCw",
295 + "languageCode": "Sv"
296 + }
297 +}
298 +{{/code}}
299 +
300 +
301 +**Request object specification**
302 +
303 +(% class="table-bordered table-striped" %)
304 +|=Property |=Data type|=Format|=Required|=Description
305 +|returnUrl |string | |Yes |Url to return the end user to after process is completed. Query parameter 'branding' is conditional
306 +|=redirectOptions |object | |Yes |
307 +| nativeAppSwitchingUrl |string | |No |Uri pointing to app, used to switch back to app from bankId
308 +| autostartAction |string | |No |Used to automatically start bankId application. Possible actions (null~|se-bankid-this-device)
309 +| languageCode |string | |Yes |Used to set desired language in the authenticate/onboarding web. Possible languageCodes (SV~|EN~|NO~|DA)
310 +
311 +Setup the redirect for both the sign/identification page and where to be redirect after
312 +
313 +{{code language="http" title="**Response**"}}
314 +HTTP/1.1 201 Created
315 +Content-Type: application/json
316 +
317 +{
318 + "redirectUrl": "/ledger/public-account-transaction/v1/{ledgerNo}/8c535338-d92c-49e7-90bf-304dbf38e0bd?token=JWT12345"
319 +}
320 +{{/code}}
321 +
322 +
323 +**Possible problems**
324 +
325 +(% class="table-bordered table-striped" %)
326 +|=Http status |=Problem type |=Description
327 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation
328 +|404 |not-found |Resource missing, may have been created on different ledger or have expired
329 +|409 |invalid-state |PreAuthorizationStatus for targeted resource is invalid for this method
330 +|500 |fatal |Unexpected error, logs may give details about the problem
331 +
332 +
333 +**Response object specification**
334 +
335 +(% class="table-bordered table-striped" %)
336 +|=Property |=Data type|=Format|=Description
337 +|@id |string | |Uri identifier of the current resource
338 +|redirectUrl |string | |
339 +
340 +== 3. Authorization-capture-orders ==
341 +
342 +
343 +Get an existing authorization-capture-orders. The authorization-capture-orders, is used when adding transactions to users account when user is pre identified.
344 +
345 +==== 3.1 Get specific Authorization-capture-order ====
346 +
347 +{{code language="http" title="**Request**"}}
348 +GET /ledger/account-transaction/v1/{ownerNo}/authorization-capture-orders/{captureId} HTTP/1.1
349 +Host: -
350 +Authorization: Bearer<Token>
351 +Content-Type: application/json
352 +
353 +{{/code}}
354 +
355 +===== Success Example =====
356 +
357 +Response for a successful authorization and capture
358 +
359 +{{code language="http" title="**Response**"}}
360 +HTTP/1.1 200 OK
361 +Content-Type: application/json
362 +
363 +{
364 + "status": "processed",
365 + "callbackBody": {
366 + "success": {
367 + "authorization": "/ledger/account-transaction/v1/XXX/authorizations/{authorizationId}"
368 + }
369 + },
370 + "captureId": "123456",
371 + "authorizationId": 123456789,
372 + "accountNo": "1234",
373 + "callbackUrl": "https://my.com/callback?543245892u59",
374 + "sellerReferenceId": "abc-87465123",
375 + "sellerTransactionId": "654789312",
376 + "authenticationMethod": "2FA",
377 + "currency": "SEK",
378 + "amount": 50.00,
379 + "pointOfSale": "Test shop",
380 + "operations": []
381 +}
382 +{{/code}}
383 +
384 +===== Error Example =====
385 +
386 +Response for a unsuccessful authorization or capture
387 +
388 +{{code language="http" title="**Response**"}}
389 +HTTP/1.1 200 OK
390 +Content-Type: application/json
391 +
392 +{
393 + "status": "processed",
394 + "callbackBody": {
395 + "fail": {
396 + "type": "ledger/account-transaction/v1/problems/validation",
397 + "title": "Not found",
398 + "status": 404,
399 + "detail": "A validation error occurred. Please fix the problems mentioned in the problems property below.",
400 + "instance": "215d4206-ca35-4f43-85ad-169c8f6d4ec1"
401 + }
402 + },
403 + "captureId": "123456",
404 + "authorizationId": 123456789,
405 + "accountNo": "1234",
406 + "callbackUrl": "https://my.com/callback?543245892u59",
407 + "sellerReferenceId": "abc-87465123",
408 + "sellerTransactionId": "654789312",
409 + "authenticationMethod": "2FA",
410 + "currency": "SEK",
411 + "amount": 50.000,
412 + "pointOfSale": "Test shop",
413 + "operations": []
414 +}
415 +{{/code}}
416 +
417 +
418 +==== 3.2 Create Authorization-capture-order ====
419 +
420 +Create authorization-capture-orders is used to add transaction when user is pre identified.
421 +
422 +{{code language="http" title="**Request**"}}
423 +POST /ledger/account-transaction/v1/{ownerNo}/authorization-capture-orders HTTP/1.1
424 +Host: -
425 +Authorization: Bearer<Token>
426 +Content-Type: application/json
427 +
428 +{
429 + "captureId": "123456",
430 + "authorizationId": 123456789,
431 + "accountNo": "1234",
432 + "callbackUrl": "https://my.com/callback?543245892u59",
433 + "sellerTransactionId": "654789312",
434 + "authenticationMethod": "2FA",
435 + "currency": "SEK",
436 + "amount": 50.00,
437 + "pointOfSale": "Test shop"
438 +}
439 +{{/code}}
440 +
441 +
442 +**Request object specification**
443 +
444 +(% class="table-bordered table-striped" %)
445 +|=Property |=Data type|=Format|=Required|=Description
446 +|captureId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |Identifier of the capture, must be unique for all types of captures within the ledger
447 +|authorizationId |number |Type: int64 |Yes |Identifier of the authorization, must be unique for all types of authorizations within the ledger
448 +|accountNo |string | |Yes |The identifier of the account
449 +|callbackUrl |string | |No |If callback should be done on status change, it is done to the callback url. If empty no callback is done.
450 +|sellerNo |string | |Yes |The seller identifier at payex
451 +|sellerReferenceId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |Sellers reference id, usually the order id of the purchase / consistent for all captures/deliveries.
452 +|sellerTransactionId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |The sellers identifier of the capture/transaction, usually the receipt reference
453 +|authenticationMethod |string | |Yes |Authentication method used to identify the user. Possible values 1FA (one factor),2FA (two factor) ,3FA (three factor)
454 +|currency |string |(((
455 +* SEK
456 +* NOK
457 +* DKK
458 +* EUR
459 +)))|Yes |
460 +|amount |number |Type: double
461 +Max: 100000000
462 +Min: 0 |Yes |The amount of the authorization capture order, can't have more than 2 decimal places.
463 +|pointOfSale |string | |No |Trade name of the point of sale. Will be displayed to end customer. Only use if agreed with provider of the API.
464 +
465 +{{code language="http" title="**Response**"}}
466 +HTTP/1.1 201 Created
467 +Content-Type: application/json
468 +
469 +{
470 + "status": "pending",
471 + "captureId": "123456",
472 + "authorizationId": 123456789,
473 + "accountNo": "1234",
474 + "callbackUrl": "https://my.com/callback?543245892u59",
475 + "sellerTransactionId": "654789312",
476 + "authenticationMethod": "2FA",
477 + "currency": "SEK",
478 + "amount": 50.00,
479 + "pointOfSale": "Test shop",
480 + "@id": "/ledger/account-transaction/v1/xxx/authorization-capture-orders/123456",
481 + "operations": []
482 +}
483 +{{/code}}
484 +
485 +
486 +**Response object specification**
487 +
488 +(% class="table-bordered table-striped" %)
489 +|=Property |=Data type|=Format|=Description
490 +|@id |string | |Uri identifier of the current resource
491 +|captureId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Identifier of the capture, must be unique for all types of captures within the ledger
492 +|authorizationId |number |Type: int64 |Identifier of the authorization, must be unique for all types of authorizations within the ledger
493 +|accountNo |string | |The identifier of the account
494 +|callbackUrl |string | |If callback should be done on status change, it is done to the callback url. If empty no callback is done.
495 +|sellerNo |string | |The seller identifier at payex
496 +|sellerReferenceId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Sellers reference id, usually the order id of the purchase / consistent for all captures/deliveries.
497 +|sellerTransactionId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |The sellers identifier of the capture/transaction, usually the receipt reference
498 +|authenticationMethod |string | |Authentication method used to identify the user. Possible values 1FA (one factor),2FA (two factor) ,3FA (three factor)
499 +|currency |string |(((
500 +* SEK
501 +* NOK
502 +* DKK
503 +* EUR
504 +)))|
505 +|amount |number |Type: double
506 +Max: 100000000
507 +Min: 0 |The amount of the authorization capture order, can't have more than 2 decimal places.
508 +|pointOfSale |string | |Trade name of the point of sale. Will be displayed to end customer. Only use if agreed with provider of the API.
509 +|status |string |(((
510 +* pending
511 +* processed
512 +)))|
513 +|=callbackBody |object | |
514 +|= success |object | |
515 +| authorization |string | |Uri to the created authorizarion.
516 +| fail |dynamic | |Problem definition of the authorization capture transaction. See problem section.
517 +|operations |array | |List of operations that is possible to perform on the current resource, read more about the ~[~[hypermedia part of the response>>https://developer.payex.com/xwiki/wiki/developer/view/Main/Invoicing/ledger-api-general-docs/restful-pattern-guideline/#HHyper-mediaresponse]]
518 +
519 +== 4. Authorizations ==
520 +
521 +
522 +Get an existing authorization.
523 +
524 +==== 4.1 Get specific Authorization ====
525 +
526 +{{code language="http" title="**Request**"}}
527 +GET /ledger/account-transaction/v1/{ownerNo}/authorizations/{authorizationId} HTTP/1.1
528 +Host: -
529 +Authorization: Bearer<Token>
530 +Content-Type: application/json
531 +
532 +{{/code}}
533 +
534 +Get authorization
535 +
536 +{{code language="http" title="**Response**"}}
537 +HTTP/1.1 200 OK
538 +Content-Type: application/json
539 +
540 +{
541 + "authorizationId": 456789,
542 + "sellerNo": "654321",
543 + "validToDate": "2026-07-09",
544 + "authorizationAmount": 3600.00,
545 + "remainingAmount": 3600.00,
546 + "currency": "SEK",
547 + "status": "Open",
548 + "operations": [
549 + {
550 + "rel": "add-reversal",
551 + "method": "POST",
552 + "href": "/ledger/account-transaction/v1/xxx/authorizations/456789/reversals"
553 + },
554 + {
555 + "rel": "add-capture",
556 + "method": "POST",
557 + "href": "/ledger/account-transaction/v1/xxx/authorizations/456789/captures"
558 + },
559 + {
560 + "rel": "add-cancellation",
561 + "method": "POST",
562 + "href": "/ledger/account-transaction/v1/xxx/authorizations/456789/cancellations"
563 + }
564 + ]
565 +}
566 +{{/code}}
567 +
568 +
569 +
570 +**Possible problems**
571 +
572 +(% class="table-bordered table-striped" %)
573 +|=Http status |=Problem type |=Description
574 +|404 |not-found |Found no authorization for provided id on this ledger
575 +|409 |invalid-account-usage |Provided PreAuthorization is invalid for this kind of authorization
576 +|409 |unsupported-claim-level |Account unable to accept new transactions
577 +|500 |fatal |Unexpected error, logs may give details about the problem
578 +
579 +==== 4.2 Create Authorization ====
580 +
581 +Create authorization to see if the account will accept the transaction. When accepted reserves the amount to on the underlying account (may include credit check) and creates the authorization instance. The reservation is time limited, captures will only be excepted until the reservation times out.
582 +
583 +{{code language="http" title="**Request**"}}
584 +POST /ledger/account-transaction/v1/{ownerNo}/authorizations HTTP/1.1
585 +Host: -
586 +Authorization: Bearer<Token>
587 +Content-Type: application/json
588 +
589 +{
590 + "preAuthorizationId": "8c535338-d92c-49e7-90bf-304dbf38e0bd",
591 + "authorizationId": 456789
592 +}
593 +{{/code}}
594 +
595 +
596 +**Request object specification**
597 +
598 +(% class="table-bordered table-striped" %)
599 +|=Property |=Data type|=Format|=Required|=Description
600 +|preAuthorizationId |string | |Yes |Identifier of the existing pre-authorization
601 +|authorizationId |number |Type: int64
602 +Min: 1 |Yes |Identifier of the authorization, must be unique for all types of authorizations within the ledger
603 +
604 +Create authorization
605 +
606 +{{code language="http" title="**Response**"}}
607 +HTTP/1.1 201 Created
608 +Content-Type: application/json
609 +
610 +{
611 + "authorizationId": 456789,
612 + "sellerNo": "654321",
613 + "validToDate": "2026-07-09",
614 + "authorizationAmount": 3600.00,
615 + "remainingAmount": 3600.00,
616 + "currency": "SEK",
617 + "status": "Open",
618 + "@id": "/ledger/account-transaction/v1/xxx/authorizations/456789",
619 + "operations": [
620 + {
621 + "rel": "add-reversal",
622 + "method": "POST",
623 + "href": "/ledger/account-transaction/v1/xxx/authorizations/456789/reversals"
624 + },
625 + {
626 + "rel": "add-capture",
627 + "method": "POST",
628 + "href": "/ledger/account-transaction/v1/xxx/authorizations/456789/captures"
629 + },
630 + {
631 + "rel": "add-cancellation",
632 + "method": "POST",
633 + "href": "/ledger/account-transaction/v1/xxx/authorizations/456789/cancellations"
634 + }
635 + ]
636 +}
637 +{{/code}}
638 +
639 +
640 +**Possible problems**
641 +
642 +(% class="table-bordered table-striped" %)
643 +|=Http status |=Problem type |=Description
644 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation
645 +|409 |credit-check-rejected |Credit check or extend of credit check was rejected
646 +|409 |missing-pre-authorization |Resource missing, may have been created on different ledger or have expired
647 +|409 |invalid-account-usage |Provided PreAuthorization is invalid for this kind of authorization
648 +|409 |amount-exceeds-limit |Amount in PreAuthorization is no longer valid for this authorization
649 +|409 |invalid-state |Provided PreAuthorization resource is in a invalid state for this method
650 +|409 |identifier-already-in-use |AuthorizationId given is already used, provide a new one and try again
651 +|409 |invalid-account-status-exception |Unsupported account status
652 +|500 |fatal |Unexpected error, logs may give details about the problem
653 +
654 +
655 +**Response object specification**
656 +
657 +(% class="table-bordered table-striped" %)
658 +|=Property |=Data type|=Format|=Description
659 +|@id |string | |Uri identifier of the current resource
660 +|authorizationId |number |Type: int64 |Identifier of the authorization, must be unique for all types of authorizations within the ledger
661 +|sellerNo |string | |The seller identifier at payex
662 +|validToDate |string | |The authorization is valid for captures until this date. Format 'YYYY-MM-DD'
663 +|authorizationAmount |number |Type: double
664 +Max: 100000000
665 +Min: 0 |The original authorized amount
666 +|remainingAmount |number |Type: double |The remaining amount on the authorization available for capture
667 +|currency |string |(((
668 +* SEK
669 +* NOK
670 +* DKK
671 +* EUR
672 +)))|
673 +|status |string |(((
674 +* Open
675 +* Closed
676 +* Cancelled
677 +)))|
678 +|operations |array | |List of operations that is possible to perform on the current resource, read more about the ~[~[hypermedia part of the response>>https://developer.payex.com/xwiki/wiki/developer/view/Main/Invoicing/ledger-api-general-docs/restful-pattern-guideline/#HHyper-mediaresponse]]
679 +
680 +== 5. Captures ==
681 +
682 +
683 +==== 5.1 Create Capture ====
684 +
685 +Captures part of (or complete) the authorization, includes options for part payment
686 +
687 +{{code language="http" title="**Request**"}}
688 +POST /ledger/account-transaction/v1/{ownerNo}/authorizations/{authorizationId}/captures HTTP/1.1
689 +Host: -
690 +Authorization: Bearer<Token>
691 +Content-Type: application/json
692 +
693 +{
694 + "captureId": "123456",
695 + "sellerTransactionId": "654789312",
696 + "currency": "SEK",
697 + "amount": 3600.00,
698 + "receiptReference": "Meaningful_Reference"
699 +}
700 +{{/code}}
701 +
702 +
703 +**Request object specification**
704 +
705 +(% class="table-bordered table-striped" %)
706 +|=Property |=Data type|=Format|=Required|=Description
707 +|captureId |string |Pattern: ^[a-zA-Z0-9\-]{1,}$ |Yes |Identifier of the capture, must be unique for all types of captures within the ledger
708 +|sellerTransactionId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |The sellers identifier of the capture/transaction, usually the receipt reference
709 +|currency |string |(((
710 +* SEK
711 +* NOK
712 +* DKK
713 +* EUR
714 +)))|Yes |
715 +|amount |number |Type: double
716 +Max: 100000000
717 +Min: 0 |Yes |The total amount.
718 +|receiptReference |string |Pattern: ^[a-zA-Z0-9#_:@.\-]{1,}$ |No |A receipt reference meaningful for the consumer.
719 +
720 +Capture created
721 +
722 +{{code language="http" title="**Response**"}}
723 +HTTP/1.1 201 Created
724 +Content-Type: application/json
725 +
726 +{
727 + "captureId": "123456",
728 + "operations": []
729 +}
730 +{{/code}}
731 +
732 +
733 +**Possible problems**
734 +
735 +(% class="table-bordered table-striped" %)
736 +|=Http status |=Problem type |=Description
737 +|404 |not-found |Resource missing, may have been created on different ledger or have expired
738 +|400 |validation |Validation error, response should describe the problem/s
739 +|409 |currency-not-supported |Provided Currency does not match the authorization currency
740 +|409 |invalid-amount |Provided Capture Amount is invalid, likely larger than remaining authorized amount
741 +|409 |identifier-already-in-use |Provided Identifier is already in use, probably CaptureTransactionId is not unique
742 +|409 |invalid-account-usage |Provided Authorization is invalid for this kind of capture
743 +|409 |authorization-expired |Provided Authorization is not open or has already expired
744 +|409 |unsupported-claim-level |Account unable to accept new transactions
745 +|500 |fatal |Unexpected error, logs may give details about the problem
746 +
747 +
748 +**Response object specification**
749 +
750 +(% class="table-bordered table-striped" %)
751 +|=Property |=Data type|=Format|=Description
752 +|@id |string | |Uri identifier of the current resource
753 +|captureId |string | |Identifier of the capture, must be unique for all types of captures within the ledger
754 +|operations |array | |List of operations that is possible to perform on the current resource, read more about the ~[~[hypermedia part of the response>>https://developer.payex.com/xwiki/wiki/developer/view/Main/Invoicing/ledger-api-general-docs/restful-pattern-guideline/#HHyper-mediaresponse]]
755 +
756 +== 6. Reversals ==
757 +
758 +
759 +==== 6.1 Create Reversal ====
760 +
761 +For reversing a specific capture
762 +
763 +{{code language="http" title="**Request**"}}
764 +POST /ledger/account-transaction/v1/{ownerNo}/authorizations/{authorizationId}/reversals HTTP/1.1
765 +Host: -
766 +Authorization: Bearer<Token>
767 +Content-Type: application/json
768 +
769 +{
770 + "reversalId": "654321",
771 + "currency": "SEK",
772 + "amount": 512.00,
773 + "sellerTransactionId": "753159"
774 +}
775 +{{/code}}
776 +
777 +
778 +**Request object specification**
779 +
780 +(% class="table-bordered table-striped" %)
781 +|=Property |=Data type|=Format|=Required|=Description
782 +|reversalId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |Identifier of the reversal, must be unique for all types of captures within the ledger
783 +|currency |string |(((
784 +* SEK
785 +* NOK
786 +* DKK
787 +* EUR
788 +)))|Yes |
789 +|amount |number |Type: double
790 +Max: 100000000
791 +Min: 0 |Yes |Amount to reverse
792 +|receiptReference |string |Pattern: ^[a-zA-Z0-9#_:@.\-]{1,}$ |No |A receipt reference meaningful for the consumer.
793 +|sellerTransactionId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |The sellers identifier of the reversal transaction, usually the receipt reference
794 +
795 +{{code language="http" title="**Response**"}}
796 +HTTP/1.1 201 CREATED
797 +Content-Type: application/json
798 +
799 +{
800 +}
801 +{{/code}}
802 +
803 +
804 +**Possible problems**
805 +
806 +(% class="table-bordered table-striped" %)
807 +|=Http status |=Problem type |=Description
808 +|404 |not-found |Resource missing, may have been created on different ledger or have expired
809 +|400 |validation |Validation error, response should describe the problem/s
810 +|409 |currency-not-supported |Provided Currency does not match the authorization currency
811 +|409 |invalid-amount |Provided Reversal Amount is invalid, likely larger than remaining captured amount
812 +|409 |identifier-already-in-use |Provided Identifier is already in use, probably ReversalTransactionId is not unique
813 +|409 |invalid-account-usage |Provided Authorization is invalid for this kind of reversal
814 +|409 |invalid-account-relation |Provided information relates to different accounts
815 +|409 |invalid-account-status-exception |Unsupported account status
816 +|500 |fatal |Unexpected error, logs may give details about the problem
817 +
818 +== 7. Cancellations ==
819 +
820 +
821 +==== 7.1 Create Cancellation ====
822 +
823 +This operation will cancel the specified authorization
824 +
825 +{{code language="http" title="**Request**"}}
826 +POST /ledger/account-transaction/v1/{ownerNo}/authorizations/{authorizationId}/cancellations HTTP/1.1
827 +Host: -
828 +Authorization: Bearer<Token>
829 +Content-Type: application/json
830 +
831 +{
832 +}
833 +{{/code}}
834 +
835 +
836 +
837 +{{code language="http" title="**Response**"}}
838 +HTTP/1.1 204 NO CONTENT
839 +Content-Type: application/json
840 +
841 +{}
842 +{{/code}}
843 +
844 +
845 +**Possible problems**
846 +
847 +(% class="table-bordered table-striped" %)
848 +|=Http status |=Problem type |=Description
849 +|404 |missing-pre-authorization |Resource missing, may have been created on different ledger or have expired
850 +|409 |invalid-account-usage |Provided Authorization is invalid for this kind of authorization
851 +|409 |authorization-expired |Provided Authorization is not open or has already expired
852 +|500 |fatal |Unexpected error, logs may give details about the problem
853 +
854 +== 8. Split-authorizations ==
855 +
856 +
857 +Get an existing split-authorization. The split - authorization, is used when each product has a separate part payment that should be portioned out according to instruction.
858 +
859 +==== 8.1 Get specific Split-authorization ====
860 +
861 +{{code language="http" title="**Request**"}}
862 +GET /ledger/account-transaction/v1/{ownerNo}/split-authorizations/{authorizationId} HTTP/1.1
863 +Host: -
864 +Authorization: Bearer<Token>
865 +Content-Type: application/json
866 +
867 +{{/code}}
868 +
869 +Get Split authorization resource. Operations can vary based of state of resource
870 +
871 +{{code language="http" title="**Response**"}}
872 +HTTP/1.1 200 OK
873 +Content-Type: application/json
874 +
875 +{
876 + "authorizationId": 456789,
877 + "sellerNo": "654321",
878 + "validToDate": "2026-07-16",
879 + "authorizationAmount": 3600.00,
880 + "remainingAmount": 3600.00,
881 + "currency": "SEK",
882 + "status": "Open",
883 + "operations": [
884 + {
885 + "rel": "add-capture",
886 + "method": "POST",
887 + "href": "/ledger/account-transaction/v1/xxx/split-authorizations/456789/captures"
888 + },
889 + {
890 + "rel": "add-cancellation",
891 + "method": "POST",
892 + "href": "/ledger/account-transaction/v1/xxx/split-authorizations/456789/cancellations"
893 + }
894 + ]
895 +}
896 +{{/code}}
897 +
898 +
899 +
900 +**Possible problems**
901 +
902 +(% class="table-bordered table-striped" %)
903 +|=Http status |=Problem type |=Description
904 +|404 |not-found |Found no authorization for provided id on this ledger
905 +|500 |fatal |Unexpected error, logs may give details about the problem
906 +
907 +==== 8.2 Create Split-authorization ====
908 +
909 +Create split-authorization to see if the account will accept the transaction. When accepted reserves the amount to on the underlying account (may include credit check) and creates the authorization instance. The reservation is time limited, captures will only be excepted until the reservation times out. The 'split' authorization, is used when each product has a separate part payment that should be portioned out according to instruction.
910 +
911 +{{code language="http" title="**Request**"}}
912 +POST /ledger/account-transaction/v1/{ownerNo}/split-authorizations HTTP/1.1
913 +Host: -
914 +Authorization: Bearer<Token>
915 +Content-Type: application/json
916 +
917 +{
918 + "preAuthorizationId": "8c535338-d92c-49e7-90bf-304dbf38e0bd",
919 + "authorizationId": 456789
920 +}
921 +{{/code}}
922 +
923 +
924 +**Request object specification**
925 +
926 +(% class="table-bordered table-striped" %)
927 +|=Property |=Data type|=Format|=Required|=Description
928 +|preAuthorizationId |string | |Yes |Identifier of the existing pre-authorization
929 +|authorizationId |number |Type: int64 |Yes |Identifier of the authorization, must be unique for all types of authorizations within the ledger
930 +
931 +Create Split authorization
932 +
933 +{{code language="http" title="**Response**"}}
934 +HTTP/1.1 201 Created
935 +Content-Type: application/json
936 +
937 +{
938 + "authorizationId": 456789,
939 + "sellerNo": "654321",
940 + "validToDate": "2026-07-16",
941 + "authorizationAmount": 3600.00,
942 + "remainingAmount": 3600.00,
943 + "currency": "SEK",
944 + "status": "Open",
945 + "@id": "/ledger/account-transaction/v1/xxx/split-authorizations/456789",
946 + "operations": [
947 + {
948 + "rel": "add-capture",
949 + "method": "POST",
950 + "href": "/ledger/account-transaction/v1/xxx/split-authorizations/456789/captures"
951 + },
952 + {
953 + "rel": "add-cancellation",
954 + "method": "POST",
955 + "href": "/ledger/account-transaction/v1/xxx/split-authorizations/456789/cancellations"
956 + }
957 + ]
958 +}
959 +{{/code}}
960 +
961 +
962 +**Possible problems**
963 +
964 +(% class="table-bordered table-striped" %)
965 +|=Http status |=Problem type |=Description
966 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation
967 +|409 |credit-check-rejected |Credit check or extend of credit check was rejected
968 +|409 |missing-pre-authorization |Resource missing, may have been created on different ledger or have expired
969 +|409 |invalid-account-usage |Provided PreAuthorization is invalid for this kind of authorization
970 +|409 |invalid-state |Provided PreAuthorization resource is in a invalid state for this method
971 +|409 |identifier-already-in-use |AuthorizationId given is already used, provide a new one and try again
972 +|500 |fatal |Unexpected error, logs may give details about the problem
973 +
974 +
975 +**Response object specification**
976 +
977 +(% class="table-bordered table-striped" %)
978 +|=Property |=Data type|=Format|=Description
979 +|@id |string | |Uri identifier of the current resource
980 +|authorizationId |number |Type: int64
981 +Min: 1 |Identifier of the authorization, must be unique for all types of authorizations within the ledger
982 +|sellerNo |string | |The seller identifier at payex
983 +|validToDate |string | |The split-authorization is valid for captures until this date. Format 'YYYY-MM-DD'
984 +|authorizationAmount |number |Type: double |The original authorized amount
985 +|remainingAmount |number |Type: double |The remaining amount on the split-authorization available for capture
986 +|currency |string |(((
987 +* SEK
988 +* NOK
989 +* DKK
990 +* EUR
991 +)))|
992 +|status |string |(((
993 +* Open
994 +* Closed
995 +* Cancelled
996 +)))|
997 +|operations |array | |List of operations that is possible to perform on the current resource, read more about the ~[~[hypermedia part of the response>>https://developer.payex.com/xwiki/wiki/developer/view/Main/Invoicing/ledger-api-general-docs/restful-pattern-guideline/#HHyper-mediaresponse]]
998 +
999 +== 9. Captures ==
1000 +
1001 +
1002 +==== 9.1 Create Capture ====
1003 +
1004 +Captures part of (or complete) the split-authorization, includes options for part payment
1005 +
1006 +{{code language="http" title="**Request**"}}
1007 +POST /ledger/account-transaction/v1/{ownerNo}/split-authorizations/{authorizationId}/captures HTTP/1.1
1008 +Host: -
1009 +Authorization: Bearer<Token>
1010 +Content-Type: application/json
1011 +
1012 +{
1013 + "captureId": "123456",
1014 + "sellerTransactionId": "654789312",
1015 + "currency": "SEK",
1016 + "monthlyBillingAmount": 300,
1017 + "months": 12,
1018 + "totalAmount": 3600.00,
1019 + "productName": "Purchase ref: 233445"
1020 +}
1021 +{{/code}}
1022 +
1023 +
1024 +**Request object specification**
1025 +
1026 +(% class="table-bordered table-striped" %)
1027 +|=Property |=Data type|=Format|=Required|=Description
1028 +|captureId |string |Pattern: ^[a-zA-Z0-9\-]{1,}$ |Yes |Identifier of the capture, must be unique for all types of captures within the ledger
1029 +|sellerTransactionId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |The sellers identifier of the capture/transaction, usually the receipt reference
1030 +|currency |string |(((
1031 +* SEK
1032 +* NOK
1033 +* DKK
1034 +* EUR
1035 +)))|Yes |
1036 +|monthlyBillingAmount |number |Type: double
1037 +Max: 100000000
1038 +Min: 10 |Yes |The amount the customer should be billed each month for this product, [MonthlyBilledAmount] x [Months] must be equal to or greater than [TotalAmount]. [TotalAmount] divided by [MonthlyBilledAmount] must be in the range between [Months]-1 and [Months]
1039 +|months |number |Type: int32
1040 +Pattern: ^(1~|6~|12~|24~|36)$ |Yes |Number of monthly payments the [TotalAmount] should be split into
1041 +|totalAmount |number |Type: double
1042 +Max: 100000000
1043 +Min: 10 |Yes |The total amount/cost of the product, must be evenly dividable with part payment terms in the account offer
1044 +|productName |string | |Yes |Readable name of the purchase. Presented on the bill to the buyer
1045 +
1046 +Capture created
1047 +
1048 +{{code language="http" title="**Response**"}}
1049 +HTTP/1.1 201 Created
1050 +Content-Type: application/json
1051 +
1052 +{
1053 + "captureId": "123456",
1054 + "operations": [
1055 + {
1056 + "rel": "add-reversal",
1057 + "method": "POST",
1058 + "href": "/ledger/account-transaction/v1/xxx/split-authorizations/123/captures/123456/reversals"
1059 + }
1060 + ]
1061 +}
1062 +{{/code}}
1063 +
1064 +
1065 +**Possible problems**
1066 +
1067 +(% class="table-bordered table-striped" %)
1068 +|=Http status |=Problem type |=Description
1069 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation
1070 +|404 |not-found |Found no authorization for provided id on this ledger
1071 +|409 |authorization-expired |ValidToDate on this authorize has expired, see details for more information
1072 +|409 |invalid-amount |See details to get more information about the error
1073 +|409 |currency-not-supported |Currency not valid for this Capture, see details for more information
1074 +|409 |identifier-already-in-use |CaptureId given is already used, provide a new one and try again
1075 +|500 |fatal |Unexpected error, logs may give details about the problem
1076 +
1077 +
1078 +**Response object specification**
1079 +
1080 +(% class="table-bordered table-striped" %)
1081 +|=Property |=Data type|=Format|=Description
1082 +|@id |string | |Uri identifier of the current resource
1083 +|captureId |string | |Identifier of the capture, must be unique for all types of captures within the ledger
1084 +|operations |array | |List of operations that is possible to perform on the current resource, read more about the ~[~[hypermedia part of the response>>https://developer.payex.com/xwiki/wiki/developer/view/Main/Invoicing/ledger-api-general-docs/restful-pattern-guideline/#HHyper-mediaresponse]]
1085 +
1086 +== 10. Cancellations ==
1087 +
1088 +
1089 +==== 10.1 Create Cancellation ====
1090 +
1091 +This operation will cancel the specified split-authorization
1092 +
1093 +{{code language="http" title="**Request**"}}
1094 +POST /ledger/account-transaction/v1/{ownerNo}/split-authorizations/{authorizationId}/cancellations HTTP/1.1
1095 +Host: -
1096 +Authorization: Bearer<Token>
1097 +Content-Type: application/json
1098 +
1099 +{
1100 +}
1101 +{{/code}}
1102 +
1103 +
1104 +
1105 +{{code language="http" title="**Response**"}}
1106 +HTTP/1.1 204 NO CONTENT
1107 +Content-Type: application/json
1108 +
1109 +{}
1110 +{{/code}}
1111 +
1112 +
1113 +**Possible problems**
1114 +
1115 +(% class="table-bordered table-striped" %)
1116 +|=Http status |=Problem type |=Description
1117 +|404 |not-found |Found no authorization for provided id on this ledger
1118 +|500 |fatal |Unexpected error, logs may give details about the problem
1119 +
1120 +== 11. Reversals ==
1121 +
1122 +
1123 +==== 11.1 Create Reversal ====
1124 +
1125 +For reversing a specific capture
1126 +
1127 +{{code language="http" title="**Request**"}}
1128 +POST /ledger/account-transaction/v1/{ownerNo}/split-authorizations/{authorizationId}/captures/{captureId}/reversals HTTP/1.1
1129 +Host: -
1130 +Authorization: Bearer<Token>
1131 +Content-Type: application/json
1132 +
1133 +{
1134 + "reversalId": "abcdefg123",
1135 + "currency": "SEK",
1136 + "amount": 512.00,
1137 + "sellerTransactionId": "123456"
1138 +}
1139 +{{/code}}
1140 +
1141 +
1142 +**Request object specification**
1143 +
1144 +(% class="table-bordered table-striped" %)
1145 +|=Property |=Data type|=Format|=Required|=Description
1146 +|reversalId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |Identifier of the reversal, must be unique for all types of captures within the ledger.
1147 +|currency |string |(((
1148 +* SEK
1149 +* NOK
1150 +* DKK
1151 +* EUR
1152 +)))|Yes |
1153 +|amount |number |Type: double
1154 +Max: 100000000
1155 +Min: 0 |Yes |Amount to reverse
1156 +|sellerTransactionId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |The sellers identifier of the reversal transaction, usually the receipt reference
1157 +
1158 +{{code language="http" title="**Response**"}}
1159 +HTTP/1.1 201 CREATED
1160 +Content-Type: application/json
1161 +
1162 +{
1163 +}
1164 +{{/code}}
1165 +
1166 +
1167 +**Possible problems**
1168 +
1169 +(% class="table-bordered table-striped" %)
1170 +|=Http status |=Problem type |=Description
1171 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation
1172 +|404 |not-found |Found no authorization for provided id on this ledger
1173 +|409 |invalid-amount |See details to get more information about the error
1174 +|409 |currency-not-supported |Currency not valid for this Reversal, see details for more information
1175 +|409 |identifier-already-in-use |ReversalId given is already used, provide a new one and try again
1176 +|500 |fatal |Unexpected error, logs may give details about the problem
1177 +
1178 +== 12. Account-applications ==
1179 +
1180 +
1181 +Get an existing account-application. The account - application, is used when applying for new account.
1182 +
1183 +==== 12.1 Get specific Account-application ====
1184 +
1185 +{{code language="http" title="**Request**"}}
1186 +GET /ledger/account-transaction/v1/{ownerNo}/account-applications/{accountApplicationId} HTTP/1.1
1187 +Host: -
1188 +Authorization: Bearer<Token>
1189 +Content-Type: application/json
1190 +
1191 +{{/code}}
1192 +
1193 +Get Account Application
1194 +
1195 +{{code language="http" title="**Response**"}}
1196 +HTTP/1.1 200 OK
1197 +Content-Type: application/json
1198 +
1199 +{
1200 + "accountApplicationId": "YYY",
1201 + "redirectUrl": "https://ledger-apps.payex.com/ledger/public-account-transaction/v1/XXX/pre-authorization/8c535338-d92c-49e7-90bf-304dbf38e0bd",
1202 + "customer": {
1203 + "nationalConsumerIdentifier": {
1204 + "value": "19101010-1010",
1205 + "countryCode": "SE"
1206 + },
1207 + "email": "a@b.c",
1208 + "msisdn": "46123456",
1209 + "customerNo": "1234"
1210 + },
1211 + "profileName": "myProfileName",
1212 + "creditLimit": 5000.00,
1213 + "currency": "SEK",
1214 + "returnUrl": "https://webconsumerexample.se/consumerweb",
1215 + "redirectOptions": {
1216 + "nativeAppSwitchingUrl": "myApp",
1217 + "languageCode": "sv"
1218 + },
1219 + "@id": "/ledger/account-transaction/v1/xxx/account-applications/yyy",
1220 + "operations": []
1221 +}
1222 +{{/code}}
1223 +
1224 +
1225 +==== 12.2 Create Account-application ====
1226 +
1227 +Create account-application is used when applying for new account. the application process may include signing and credit check
1228 +
1229 +{{code language="http" title="**Request**"}}
1230 +POST /ledger/account-transaction/v1/{ownerNo}/account-applications HTTP/1.1
1231 +Host: -
1232 +Authorization: Bearer<Token>
1233 +Content-Type: application/json
1234 +
1235 +{
1236 + "accountApplicationId": "YYY",
1237 + "redirectUrl": "https://ledger-apps.payex.com/ledger/public-account-transaction/v1/XXX/pre-authorization/8c535338-d92c-49e7-90bf-304dbf38e0bd",
1238 + "customer": {
1239 + "nationalConsumerIdentifier": {
1240 + "value": "19101010-1010",
1241 + "countryCode": "SE"
1242 + },
1243 + "email": "a@b.c",
1244 + "msisdn": "46123456",
1245 + "customerNo": "1234"
1246 + },
1247 + "profileName": "myProfileName",
1248 + "creditLimit": 5000.00,
1249 + "currency": "SEK",
1250 + "returnUrl": "https://webconsumerexample.se/consumerweb",
1251 + "redirectOptions": {
1252 + "nativeAppSwitchingUrl": "myApp",
1253 + "languageCode": "sv"
1254 + },
1255 + "@id": "/ledger/account-transaction/v1/xxx/account-applications/yyy",
1256 + "operations": []
1257 +}
1258 +{{/code}}
1259 +
1260 +
1261 +**Request object specification**
1262 +
1263 +(% class="table-bordered table-striped" %)
1264 +|=Property |=Data type|=Format|=Required|=Description
1265 +|=customer |object | |Yes |
1266 +|= nationalConsumerIdentifier |object | |Yes |
1267 +| value |string | |Yes |The identifier - SSN, Personnummer, CPR, d-nummer, temporary identification number etc. Uniquely identifies the consumer. Visit developer.payex.com for information about supported national identifier format
1268 +| countryCode |string |Pattern: SE~|NO~|DK~|FI |No |The country code for the identifier value property, value 'None' is not allowed, ~[~[ISO 3166-1 alpha-2>>url:https://sv.wikipedia.org/wiki/ISO_3166]]
1269 +| email |string |Pattern: ^[^;\xA0\xD0\─@<>\p{Cc}]+@(?!\.)(?!.*\.\.)(?:[^;\xA0\xD0\─@<>\p{Cc}]+\.[^;\xA0\xD0\─@<>\p{Cc}]+~|\~[~[A-Fa-f\d\:]+\])(?<!\.)$ |No |The customers Email. Only used for creating new customer
1270 +| msisdn |string |Pattern: ^[+]{1}\d{4,14}$ |No |Mobile communications number starting with '+' followed with up to 14 numbers from 0-9. Length between 5 and 15 including the starting '+'
1271 +| customerNo |string |Pattern: ^[a-zA-Z0-9\-]{1,}$ |Yes |Provide the customer identifier. If customer does not yet exist in our ledger and ledger is configured to generate new customers CustomerNo then don't set this property. Ledger generated CustomerNo will be set after customer is created
1272 +|profileName |string | |Yes |The profilename of the account to create
1273 +|creditLimit |number |Type: double
1274 +Max: 100000000
1275 +Min: 0 |Yes |The amount of the credit limit on the account applied for, can't have more than 2 decimal places
1276 +|currency |string |(((
1277 +* SEK
1278 +* NOK
1279 +* DKK
1280 +* EUR
1281 +)))|Yes |
1282 +|returnUrl |string | |Yes |Url to return the end user to after process is completed
1283 +|=redirectOptions |object | |Yes |
1284 +| nativeAppSwitchingUrl |string | |No |Uri pointing to app, used to switch back to app from bankId
1285 +| autostartAction |string | |No |Used to automatically start bankId application. Possible actions (null~|se-bankid-this-device)
1286 +| languageCode |string | |Yes |Used to set desired language in the authenticate/onboarding web. Possible languageCodes (SV~|EN)
1287 +
1288 +Post Account Application
1289 +
1290 +{{code language="http" title="**Response**"}}
1291 +HTTP/1.1 201 Created
1292 +Content-Type: application/json
1293 +
1294 +{
1295 + "accountApplicationId": "YYY",
1296 + "redirectUrl": "https://ledger-apps.payex.com/ledger/public-account-transaction/v1/XXX/pre-authorization/8c535338-d92c-49e7-90bf-304dbf38e0bd",
1297 + "customer": {
1298 + "nationalConsumerIdentifier": {
1299 + "value": "19101010-1010",
1300 + "countryCode": "SE"
1301 + },
1302 + "email": "a@b.c",
1303 + "msisdn": "46123456",
1304 + "customerNo": "1234"
1305 + },
1306 + "profileName": "myProfileName",
1307 + "creditLimit": 5000.00,
1308 + "currency": "SEK",
1309 + "returnUrl": "https://webconsumerexample.se/consumerweb",
1310 + "redirectOptions": {
1311 + "nativeAppSwitchingUrl": "myApp",
1312 + "languageCode": "sv"
1313 + },
1314 + "@id": "/ledger/account-transaction/v1/xxx/account-applications/yyy",
1315 + "operations": []
1316 +}
1317 +{{/code}}
1318 +
1319 +
1320 +**Possible problems**
1321 +
1322 +(% class="table-bordered table-striped" %)
1323 +|=Http status |=Problem type |=Description
1324 +|409 |account-already-exist |Occurs if a account already exists.
1325 +
1326 +
1327 +**Response object specification**
1328 +
1329 +(% class="table-bordered table-striped" %)
1330 +|=Property |=Data type|=Format|=Description
1331 +|@id |string | |Uri identifier of the current resource
1332 +|=customer |object | |
1333 +|= nationalConsumerIdentifier |object | |
1334 +| value |string | |The identifier - SSN, Personnummer, CPR, d-nummer, temporary identification number etc. Uniquely identifies the consumer. Visit developer.payex.com for information about supported national identifier format
1335 +| countryCode |string |Pattern: SE~|NO~|DK~|FI |The country code for the identifier value property, value 'None' is not allowed, ~[~[ISO 3166-1 alpha-2>>url:https://sv.wikipedia.org/wiki/ISO_3166]]
1336 +| email |string |Pattern: ^[^;\xA0\xD0\─@<>\p{Cc}]+@(?!\.)(?!.*\.\.)(?:[^;\xA0\xD0\─@<>\p{Cc}]+\.[^;\xA0\xD0\─@<>\p{Cc}]+~|\~[~[A-Fa-f\d\:]+\])(?<!\.)$ |The customers Email. Only used for creating new customer
1337 +| msisdn |string |Pattern: ^[+]{1}\d{4,14}$ |Mobile communications number starting with '+' followed with up to 14 numbers from 0-9. Length between 5 and 15 including the starting '+'
1338 +| customerNo |string |Pattern: ^[a-zA-Z0-9\-]{1,}$ |Provide the customer identifier. If customer does not yet exist in our ledger and ledger is configured to generate new customers CustomerNo then don't set this property. Ledger generated CustomerNo will be set after customer is created
1339 +|profileName |string | |The profilename of the account to create
1340 +|creditLimit |number |Type: double
1341 +Max: 100000000
1342 +Min: 0 |The amount of the credit limit on the account applied for, can't have more than 2 decimal places
1343 +|currency |string |(((
1344 +* SEK
1345 +* NOK
1346 +* DKK
1347 +* EUR
1348 +)))|
1349 +|returnUrl |string | |Url to return the end user to after process is completed
1350 +|=redirectOptions |object | |
1351 +| nativeAppSwitchingUrl |string | |Uri pointing to app, used to switch back to app from bankId
1352 +| autostartAction |string | |Used to automatically start bankId application. Possible actions (null~|se-bankid-this-device)
1353 +| languageCode |string | |Used to set desired language in the authenticate/onboarding web. Possible languageCodes (SV~|EN)
1354 +|accountApplicationId |string | |Unique identifier of the account-application.
1355 +|redirectUrl |string | |Web uri pointing to the application flow that the user should be redirected to.
1356 +|specialIntent |string | |Special intent for the application, e.g. 'standalone-account-onboarding'.
1357 +|operations |array | |List of operations that is possible to perform on the current resource, read more about the ~[~[hypermedia part of the response>>https://developer.payex.com/xwiki/wiki/developer/view/Main/Invoicing/ledger-api-general-docs/restful-pattern-guideline/#HHyper-mediaresponse]]
1358 +
1359 +== 13. Limit-upgrade-applications ==
1360 +
1361 +
1362 +Get an existing limit-upgrade-application. The limit - upgrade - application, is used for upgrading limit on existing credit account.
1363 +
1364 +==== 13.1 Get specific Limit-upgrade-application ====
1365 +
1366 +{{code language="http" title="**Request**"}}
1367 +GET /ledger/account-transaction/v1/{ownerNo}/limit-upgrade-applications/{limitUpgradeApplicationId} HTTP/1.1
1368 +Host: -
1369 +Authorization: Bearer<Token>
1370 +Content-Type: application/json
1371 +
1372 +{{/code}}
1373 +
1374 +Get Limit Upgrade Application
1375 +
1376 +{{code language="http" title="**Response**"}}
1377 +HTTP/1.1 200 OK
1378 +Content-Type: application/json
1379 +
1380 +{
1381 + "limitUpgradeApplicationId": "YYY",
1382 + "redirectUrl": "https://ledger-apps.payex.com/ledger/public-account-transaction/v1/XXX/pre-authorization/8c535338-d92c-49e7-90bf-304dbf38e0bd",
1383 + "accountNo": "12345",
1384 + "customerNo": "54321",
1385 + "creditLimit": 5000.00,
1386 + "currency": "SEK",
1387 + "returnUrl": "https://webconsumerexample.se/consumerweb",
1388 + "redirectOptions": {
1389 + "nativeAppSwitchingUrl": "myApp",
1390 + "languageCode": "sv"
1391 + },
1392 + "@id": "/ledger/account-transaction/v1/xxx/limit-upgrade-applications/yyy",
1393 + "operations": []
1394 +}
1395 +{{/code}}
1396 +
1397 +
1398 +==== 13.2 Create Limit-upgrade-application ====
1399 +
1400 +Create limit-upgrade-application is used when applying for upgrading limit on existing credit account. The application process may include signing and credit check
1401 +
1402 +{{code language="http" title="**Request**"}}
1403 +POST /ledger/account-transaction/v1/{ownerNo}/limit-upgrade-applications HTTP/1.1
1404 +Host: -
1405 +Authorization: Bearer<Token>
1406 +Content-Type: application/json
1407 +
1408 +{
1409 + "limitUpgradeApplicationId": "YYY",
1410 + "redirectUrl": "https://ledger-apps.payex.com/ledger/public-account-transaction/v1/XXX/pre-authorization/8c535338-d92c-49e7-90bf-304dbf38e0bd",
1411 + "accountNo": "12345",
1412 + "customerNo": "54321",
1413 + "creditLimit": 5000.00,
1414 + "currency": "SEK",
1415 + "returnUrl": "https://webconsumerexample.se/consumerweb",
1416 + "redirectOptions": {
1417 + "nativeAppSwitchingUrl": "myApp",
1418 + "languageCode": "sv"
1419 + },
1420 + "@id": "/ledger/account-transaction/v1/xxx/limit-upgrade-applications/yyy",
1421 + "operations": []
1422 +}
1423 +{{/code}}
1424 +
1425 +
1426 +**Request object specification**
1427 +
1428 +(% class="table-bordered table-striped" %)
1429 +|=Property |=Data type|=Format|=Required|=Description
1430 +|accountNo |string | |Yes |The identifier of the account
1431 +|customerNo |string |Pattern: ^[a-zA-Z0-9\-]{1,}$ |Yes |The identifier of the customer.
1432 +|creditLimit |number |Type: double
1433 +Max: 100000000
1434 +Min: 0 |Yes |The amount of the credit limit on the account applied for, can't have more than 2 decimal places
1435 +|currency |string |(((
1436 +* SEK
1437 +* NOK
1438 +* DKK
1439 +* EUR
1440 +)))|Yes |
1441 +|returnUrl |string | |Yes |Url to return the end user to after process is completed
1442 +|=redirectOptions |object | |Yes |
1443 +| nativeAppSwitchingUrl |string | |No |Uri pointing to app, used to switch back to app from bankId
1444 +| autostartAction |string | |No |Used to automatically start bankId application. Possible actions (null~|se-bankid-this-device)
1445 +| languageCode |string | |Yes |Used to set desired language in the authenticate/onboarding web. Possible languageCodes (SV~|EN)
1446 +
1447 +Post Limit Upgrade Application
1448 +
1449 +{{code language="http" title="**Response**"}}
1450 +HTTP/1.1 201 Created
1451 +Content-Type: application/json
1452 +
1453 +{
1454 + "limitUpgradeApplicationId": "YYY",
1455 + "redirectUrl": "https://ledger-apps.payex.com/ledger/public-account-transaction/v1/XXX/pre-authorization/8c535338-d92c-49e7-90bf-304dbf38e0bd",
1456 + "accountNo": "12345",
1457 + "customerNo": "54321",
1458 + "creditLimit": 5000.00,
1459 + "currency": "SEK",
1460 + "returnUrl": "https://webconsumerexample.se/consumerweb",
1461 + "redirectOptions": {
1462 + "nativeAppSwitchingUrl": "myApp",
1463 + "languageCode": "sv"
1464 + },
1465 + "@id": "/ledger/account-transaction/v1/xxx/limit-upgrade-applications/yyy",
1466 + "operations": []
1467 +}
1468 +{{/code}}
1469 +
1470 +
1471 +**Possible problems**
1472 +
1473 +(% class="table-bordered table-striped" %)
1474 +|=Http status |=Problem type |=Description
1475 +|404 |account-not-found |Occurs if the account is not found.
1476 +
1477 +
1478 +**Response object specification**
1479 +
1480 +(% class="table-bordered table-striped" %)
1481 +|=Property |=Data type|=Format|=Description
1482 +|@id |string | |Uri identifier of the current resource
1483 +|accountNo |string | |The identifier of the account
1484 +|customerNo |string |Pattern: ^[a-zA-Z0-9\-]{1,}$ |The identifier of the customer.
1485 +|creditLimit |number |Type: double
1486 +Max: 100000000
1487 +Min: 0 |The amount of the credit limit on the account applied for, can't have more than 2 decimal places
1488 +|currency |string |(((
1489 +* SEK
1490 +* NOK
1491 +* DKK
1492 +* EUR
1493 +)))|
1494 +|returnUrl |string | |Url to return the end user to after process is completed
1495 +|=redirectOptions |object | |
1496 +| nativeAppSwitchingUrl |string | |Uri pointing to app, used to switch back to app from bankId
1497 +| autostartAction |string | |Used to automatically start bankId application. Possible actions (null~|se-bankid-this-device)
1498 +| languageCode |string | |Used to set desired language in the authenticate/onboarding web. Possible languageCodes (SV~|EN)
1499 +|limitUpgradeApplicationId |string | |Unique identifier of the limit-upgrade-application.
1500 +|redirectUrl |string | |Web uri pointing to the application flow that the user should be redirected to.
1501 +|operations |array | |List of operations that is possible to perform on the current resource, read more about the ~[~[hypermedia part of the response>>https://developer.payex.com/xwiki/wiki/developer/view/Main/Invoicing/ledger-api-general-docs/restful-pattern-guideline/#HHyper-mediaresponse]]
1502 +
1503 +{{display reference="developer:Main.Invoicing.ledger-api-general-docs.api-section-problems.WebHome"/}}
1645795304707-487.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.dap
Size
... ... @@ -1,0 +1,1 @@
1 +57.7 KB
Content
1780491723078-754.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.PabloVivarGonzalez
Size
... ... @@ -1,0 +1,1 @@
1 +156.3 KB
Content
PayEx - Ledger API's - ForDeveloper.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.mly
Size
... ... @@ -1,0 +1,1 @@
1 +26.8 KB
Content
1780487758751-280.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.PabloVivarGonzalez
Size
... ... @@ -1,0 +1,1 @@
1 +63.4 KB
Content
Swagger_Releases-500654.txt
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.thomashedstrom
Size
... ... @@ -1,0 +1,1 @@
1 +133.9 KB
Content
PayEx - Ledger API's - Wiki.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.mak
Size
... ... @@ -1,0 +1,1 @@
1 +14.8 KB
Content
1780491692860-825.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.PabloVivarGonzalez
Size
... ... @@ -1,0 +1,1 @@
1 +63.4 KB
Content