Changes for page accounttransaction
Last modified by thomas hedstrom on 2026/07/09 11:47
From empty
To version 92.1
edited by thomas hedstrom
on 2026/07/09 11:47
on 2026/07/09 11:47
Change comment: There is no comment for this version
Summary
-
Page properties (6 modified, 0 added, 0 removed)
-
Attachments (0 modified, 7 added, 0 removed)
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.XWikiGuest1 +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