Changes for page bnpl-payment-order
Last modified by thomas hedstrom on 2026/07/08 14:57
From empty
To version 22.1
edited by thomas hedstrom
on 2026/07/08 14:55
on 2026/07/08 14:55
Change comment: There is no comment for this version
Summary
-
Page properties (6 modified, 0 added, 0 removed)
-
Attachments (0 modified, 2 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,0 +1,1 @@ 1 +bnpl-payment-order - Parent
-
... ... @@ -1,0 +1,1 @@ 1 +Main.credit-account.api.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,589 @@ 1 +(% id="HChangelog" %) 2 += Changelog = 3 + 4 + 5 +* 2024-10-30 - Init documentation 6 +* 2026-02-17 - Request changes 7 +** Added new optional parameter for Create BnplPaymentOrder - **Instore** 8 +** Added new mandatory parameter for Post Reversal - **ReceiptReference** 9 + 10 += Swagger = 11 + 12 +[[Swagger.json-2026-02-20>>attach:Swagger_Releases-484271.txt]] 13 + 14 +(% id="HIntroduction" %) 15 += Introduction = 16 + 17 +The bnpl-payment-order API handles payment flows for multiple buy-now-pay-later services, where the customer themselves are available to choose between preferred payment method from a set of preconfigured payment options. 18 + 19 + 20 +[[image:1730445122347-474.png||height="435" width="467"]] 21 + 22 +== 1. Bnpl-payment-orders == 23 + 24 + 25 +Get the specified payment order 26 + 27 +==== 1.1 Get specific Bnpl-payment-order ==== 28 + 29 +{{code language="http" title="**Request**"}} 30 +GET /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}?SellerNo={SellerNo} HTTP/1.1 31 +Host: - 32 +Authorization: Bearer<Token> 33 +Content-Type: application/json 34 + 35 +{{/code}} 36 + 37 +Payment order that has been authorized and with full RemainingAmount left 38 + 39 +{{code language="http" title="**Response**"}} 40 +HTTP/1.1 200 OK 41 +Content-Type: application/json 42 + 43 +{ 44 + "paymentOrderId": 1234567890, 45 + "status": "Authorized", 46 + "authorizationAmount": 1000.00, 47 + "remainingAmount": 1000.00, 48 + "currency": "SEK", 49 + "sellerAuthorizationId": "1234567890", 50 + "customer": { 51 + "nationalConsumerIdentifier": { 52 + "value": "YYYYMMDD-XXXX", 53 + "countryCode": "SE" 54 + }, 55 + "email": "example@payex.com", 56 + "msisdn": "+46701234567" 57 + }, 58 + "pointOfSale": "My Web Shop", 59 + "mcc": "1234", 60 + "restrictToProfiles": [ 61 + { 62 + "profileName": "BA_PartPayment", 63 + "subProfiles": [ 64 + { 65 + "subProfileName": "InstallmentAccount_3" 66 + } 67 + ] 68 + } 69 + ], 70 + "instore": false, 71 + "operations": [ 72 + { 73 + "rel": "add-reversal", 74 + "method": "POST", 75 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/reversals" 76 + }, 77 + { 78 + "rel": "redirect", 79 + "method": "POST", 80 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/redirect" 81 + }, 82 + { 83 + "rel": "cancel-authorize", 84 + "method": "POST", 85 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/cancel-authorize" 86 + }, 87 + { 88 + "rel": "add-capture", 89 + "method": "POST", 90 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/captures" 91 + } 92 + ] 93 +} 94 +{{/code}} 95 + 96 + 97 + 98 +**Query paramters** 99 + 100 +(% class="table-bordered table-striped" %) 101 +|=Name |=Required |=Description 102 +|SellerNo |False | 103 + 104 + 105 + 106 +**Possible problems** 107 + 108 +(% class="table-bordered table-striped" %) 109 +|=Http status |=Problem type |=Description 110 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation 111 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 112 +|500 |fatal |an unexpected error has occurred 113 + 114 + 115 +==== 1.2 Create Bnpl-payment-order ==== 116 + 117 +Create a payment order to begin authorization process 118 + 119 +{{code language="http" title="**Request**"}} 120 +POST /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders HTTP/1.1 121 +Host: - 122 +Authorization: Bearer<Token> 123 +Content-Type: application/json 124 + 125 +{ 126 + "authorizationAmount": 1000.00, 127 + "currency": "SEK", 128 + "sellerAuthorizationId": "1234567890", 129 + "customer": { 130 + "nationalConsumerIdentifier": { 131 + "value": "YYYYMMDD-XXXX", 132 + "countryCode": "SE" 133 + }, 134 + "email": "example@payex.com", 135 + "msisdn": "+46701234567" 136 + }, 137 + "pointOfSale": "My Web Shop", 138 + "mcc": "1234", 139 + "restrictToProfiles": [ 140 + { 141 + "profileName": "BA_PartPayment", 142 + "subProfiles": [ 143 + { 144 + "subProfileName": "InstallmentAccount_3" 145 + } 146 + ] 147 + } 148 + ], 149 + "instore": false 150 +} 151 +{{/code}} 152 + 153 + 154 +**Request object specification** 155 + 156 +(% class="table-bordered table-striped" %) 157 +|=Property |=Data type|=Format|=Required|=Description 158 +|authorizationAmount |number |Type: double 159 +Max: 100000000 160 +Min: 0 |Yes |The authorization amount, can't have more than 2 decimal places 161 +|currency |string |((( 162 +* SEK 163 +* NOK 164 +* DKK 165 +* EUR 166 +))) |Yes | 167 +|sellerAuthorizationId |string |Pattern: ^~[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |The seller's unique identifier of the authorize/payment order 168 +|=customer |object | |Yes | 169 +|= nationalConsumerIdentifier |object | |Yes | 170 +| 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 171 +| countryCode |string |Pattern: SE~|NO~|DK~|FI |Yes |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]] 172 +| email |string |Pattern: ^~[^;\xA0\xD0\─@<>\p{Cc}]+@(?!\.)(?!.*\.\.)(?:~[^;\xA0\xD0\─@<>\p{Cc}]+\.~[^;\xA0\xD0\─@<>\p{Cc}]+~|\~[~[A-Fa-f\d\:]+\])(?<!\.)$ |Yes |Email to the customer 173 +| msisdn |string |Pattern: ^~[+]{1}\d{4,14}$ |No |Phone number to the customer 174 +|pointOfSale |string |Pattern: ^~[\u0020-\u003A \u003C-\u007E \u00A0-\u00FF \u2019]*$ |Yes |Trade name of the point of sale. Will be displayed to end customer. 175 +|mcc |string | |No |Merchant Category Code 176 +|=restrictToProfiles |array | |No | 177 +| profileName |string | |Yes |Profile identifier 178 +|= subProfiles |array | |No | 179 +| subProfileName |string | |Yes |Sub profile identifier 180 +|instore |boolean | |No |This request is an Instore bnpl order 181 + 182 + 183 +Newly created payment order with restricted account profiles 184 + 185 +{{code language="http" title="**Response**"}} 186 +HTTP/1.1 201 Created 187 +Content-Type: application/json 188 + 189 +{ 190 + "paymentOrderId": 1234567890, 191 + "status": "Created", 192 + "authorizationAmount": 1000.00, 193 + "remainingAmount": 0, 194 + "currency": "SEK", 195 + "sellerAuthorizationId": "1234567890", 196 + "customer": { 197 + "nationalConsumerIdentifier": { 198 + "value": "YYYYMMDD-XXXX", 199 + "countryCode": "SE" 200 + }, 201 + "email": "example@payex.com", 202 + "msisdn": "+46701234567" 203 + }, 204 + "pointOfSale": "My Web Shop", 205 + "mcc": "1234", 206 + "restrictToProfiles": [ 207 + { 208 + "profileName": "BA_PartPayment", 209 + "subProfiles": [ 210 + { 211 + "subProfileName": "InstallmentAccount_3" 212 + } 213 + ] 214 + } 215 + ], 216 + "instore": false, 217 + "operations": [ 218 + { 219 + "rel": "add-reversal", 220 + "method": "POST", 221 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/reversals" 222 + }, 223 + { 224 + "rel": "redirect", 225 + "method": "POST", 226 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/redirect" 227 + }, 228 + { 229 + "rel": "cancel-authorize", 230 + "method": "POST", 231 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/cancel-authorize" 232 + }, 233 + { 234 + "rel": "add-capture", 235 + "method": "POST", 236 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/captures" 237 + } 238 + ], 239 + "@id": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890" 240 +} 241 +{{/code}} 242 + 243 + 244 +**Possible problems** 245 + 246 +(% class="table-bordered table-striped" %) 247 +|=Http status |=Problem type |=Description 248 +|409 |identifier-already-in-use |SellerAuthorizationId [xxxx] already exists. It is used for payment order with PaymentOrderId [yyyyy] 249 +|409 |no-available-profiles |No profiles configured. 250 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation 251 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 252 +|500 |fatal |an unexpected error has occurred 253 + 254 + 255 + 256 +**Response object specification** 257 + 258 +(% class="table-bordered table-striped" %) 259 +|=Property |=Data type|=Format|=Description 260 +|authorizationAmount |number |Type: double 261 +Max: 100000000 262 +Min: 0 |The authorization amount, can't have more than 2 decimal places 263 +|currency |string |((( 264 +* SEK 265 +* NOK 266 +* DKK 267 +* EUR 268 +))) | 269 +|sellerAuthorizationId |string |Pattern: ^~[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |The seller's unique identifier of the authorize/payment order 270 +|=customer |object | | 271 +|= nationalConsumerIdentifier |object | | 272 +| 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 273 +| 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]] 274 +| email |string |Pattern: ^~[^;\xA0\xD0\─@<>\p{Cc}]+@(?!\.)(?!.*\.\.)(?:~[^;\xA0\xD0\─@<>\p{Cc}]+\.~[^;\xA0\xD0\─@<>\p{Cc}]+~|\~[~[A-Fa-f\d\:]+\])(?<!\.)$ |Email to the customer 275 +| msisdn |string |Pattern: ^~[+]{1}\d{4,14}$ |Phone number to the customer 276 +|pointOfSale |string |Pattern: ^~[\u0020-\u003A \u003C-\u007E \u00A0-\u00FF \u2019]*$ |Trade name of the point of sale. Will be displayed to end customer. 277 +|mcc |string | |Merchant Category Code 278 +|=restrictToProfiles |array | | 279 +| profileName |string | |Profile identifier 280 +|= subProfiles |array | | 281 +| subProfileName |string | |Sub profile identifier 282 +|instore |boolean | |This request is an Instore bnpl order 283 +|paymentOrderId |number |Type: int64 |PaymentOrderId aka ExternalReservationId 284 +|status |string |((( 285 +* Created 286 +* Rejected 287 +* Canceled 288 +* Authorized 289 +* Failed 290 +))) | 291 +|remainingAmount |number |Type: double 292 +Max: 100000000 293 +Min: 0 |Remaining amount of the authorize. If amount is zero then the authorize has already been fully used, cancelled or the payment order has not been authorized yet 294 +|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]] 295 +|@id |string | |Uri identifier of the current resource 296 +== 2. Cancel-authorize == 297 + 298 + 299 +==== 2.1 Create Cancel-authorize ==== 300 + 301 +This operation is for removing any remaining amount of an already completed authorization. Already captured amount is unaffected. 302 + 303 +{{code language="http" title="**Request**"}} 304 +POST /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/cancel-authorize HTTP/1.1 305 +Host: - 306 +Authorization: Bearer<Token> 307 +Content-Type: application/json 308 + 309 +{ 310 +} 311 +{{/code}} 312 + 313 + 314 + 315 +{{code language="http" title="**Response**"}} 316 +HTTP/1.1 204 NO CONTENT 317 +Content-Type: application/json 318 + 319 +{} 320 +{{/code}} 321 + 322 + 323 +**Possible problems** 324 + 325 +(% class="table-bordered table-striped" %) 326 +|=Http status |=Problem type |=Description 327 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 328 +|500 |fatal |an unexpected error has occurred 329 + 330 + 331 +== 3. Captures == 332 + 333 + 334 +==== 3.1 Create Capture ==== 335 + 336 +Perform a capture to solidify the purchase for this payment order. Multiple captures can be done for one payment order as long as we have RemainingAmount left on the order. 337 + 338 +{{code language="http" title="**Request**"}} 339 +POST /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/captures HTTP/1.1 340 +Host: - 341 +Authorization: Bearer<Token> 342 +Content-Type: application/json 343 + 344 +{ 345 + "amount": 1000.00, 346 + "currency": "SEK", 347 + "orderLines": [ 348 + { 349 + "itemDescription": "Phone", 350 + "amount": 1000.00 351 + } 352 + ], 353 + "sellerTransactionId": "Example-seller-123", 354 + "receiptReference": "Example-receipt-Phone" 355 +} 356 +{{/code}} 357 + 358 + 359 +**Request object specification** 360 + 361 +(% class="table-bordered table-striped" %) 362 +|=Property |=Data type|=Format|=Required|=Description 363 +|amount |number |Type: double 364 +Max: 100000000 365 +Min: 0 |Yes |The total amount 366 +|currency |string |((( 367 +* SEK 368 +* NOK 369 +* DKK 370 +* EUR 371 +))) |Yes | 372 +|=orderLines |array | |Yes | 373 +| itemDescription |string |Pattern: ^~[\u0020-\u003A \u003C-\u007E \u00A0-\u00FF \u2019]*$ |Yes |Name or description of an individual item in the capture 374 +| amount |number |Type: double 375 +Max: 100000000 376 +Min: 0 |Yes |Price of an individual item in the capture 377 +|sellerTransactionId |string |Pattern: ^~[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |The seller's unique identifier of the capture 378 +|receiptReference |string |Pattern: ^~[a-zA-Z0-9#_:@.\-]{1,}$ |Yes |A receipt reference meaningful for the consumer 379 + 380 + 381 +Capture example with one item in the order line 382 + 383 +{{code language="http" title="**Response**"}} 384 +HTTP/1.1 201 Created 385 +Content-Type: application/json 386 + 387 +{ 388 + "captureId": 1234, 389 + "amount": 1000.00, 390 + "currency": "SEK", 391 + "orderLines": [ 392 + { 393 + "itemDescription": "Phone", 394 + "amount": 1000.00 395 + } 396 + ], 397 + "sellerTransactionId": "Example-seller-123", 398 + "receiptReference": "Example-receipt-Phone", 399 + "@id": "https://example.com/capture/1234" 400 +} 401 +{{/code}} 402 + 403 + 404 +**Possible problems** 405 + 406 +(% class="table-bordered table-striped" %) 407 +|=Http status |=Problem type |=Description 408 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation 409 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 410 +|409 |currency-not-supported |Currency for this capture is invalid for this payment order, make sure it match with currency specified at order creation 411 +|409 |identifier-already-in-use |SellerTransactionId [xxxx] already exists. It is used in the capture transaction with CaptureId [yyyy] 412 +|422 |corrupt-resource |Performed action may or may not have been completed but result was corrupted or incomplete. Read details for more information. 413 +|500 |fatal |an unexpected error has occurred 414 + 415 + 416 + 417 +**Response object specification** 418 + 419 +(% class="table-bordered table-striped" %) 420 +|=Property |=Data type|=Format|=Description 421 +|amount |number |Type: double 422 +Max: 100000000 423 +Min: 0 |The total amount 424 +|currency |string |((( 425 +* SEK 426 +* NOK 427 +* DKK 428 +* EUR 429 +))) | 430 +|=orderLines |array | | 431 +| itemDescription |string |Pattern: ^~[\u0020-\u003A \u003C-\u007E \u00A0-\u00FF \u2019]*$ |Name or description of an individual item in the capture 432 +| amount |number |Type: double 433 +Max: 100000000 434 +Min: 0 |Price of an individual item in the capture 435 +|sellerTransactionId |string |Pattern: ^~[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |The seller's unique identifier of the capture 436 +|receiptReference |string |Pattern: ^~[a-zA-Z0-9#_:@.\-]{1,}$ |A receipt reference meaningful for the consumer 437 +|captureId |number |Type: int64 438 +Pattern: ^~[a-zA-Z0-9\-]{1,}$ |Identifier of the capture 439 +|@id |string | |Uri identifier of the current resource 440 +== 4. Reversals == 441 + 442 + 443 +==== 4.1 Create Reversal ==== 444 + 445 +Can only reverse captures from this payment order 446 + 447 +{{code language="http" title="**Request**"}} 448 +POST /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/reversals HTTP/1.1 449 +Host: - 450 +Authorization: Bearer<Token> 451 +Content-Type: application/json 452 + 453 +{ 454 + "amount": 1000.00, 455 + "currency": "SEK", 456 + "sellerTransactionId": "123455679", 457 + "receiptReference": "Example-receipt-Phone" 458 +} 459 +{{/code}} 460 + 461 + 462 +**Request object specification** 463 + 464 +(% class="table-bordered table-striped" %) 465 +|=Property |=Data type|=Format|=Required|=Description 466 +|amount |number |Type: double 467 +Max: 100000000 468 +Min: 0 |Yes |The total amount to reverse 469 +|currency |string |((( 470 +* SEK 471 +* NOK 472 +* DKK 473 +* EUR 474 +))) |Yes | 475 +|sellerTransactionId |string |Pattern: ^~[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |The sellers unique identifier of the reversal 476 +|receiptReference |string |Pattern: ^~[a-zA-Z0-9#_:@.\-]{1,}$ |Yes |A receipt reference meaningful for the consumer 477 + 478 + 479 +Reversal of 1000SEK 480 + 481 +{{code language="http" title="**Response**"}} 482 +HTTP/1.1 201 Created 483 +Content-Type: application/json 484 + 485 +{ 486 + "reversalId": "12345678", 487 + "amount": 1000.00, 488 + "currency": "SEK", 489 + "sellerTransactionId": "123455679", 490 + "receiptReference": "Example-receipt-Phone" 491 +} 492 +{{/code}} 493 + 494 + 495 +**Possible problems** 496 + 497 +(% class="table-bordered table-striped" %) 498 +|=Http status |=Problem type |=Description 499 +|409 |identifier-already-in-use |SellerTransactionId [xxxx] already exists. It is used in the capture transaction with ReversalId [yyyy] 500 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation 501 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 502 +|500 |fatal |an unexpected error has occurred 503 + 504 + 505 + 506 +**Response object specification** 507 + 508 +(% class="table-bordered table-striped" %) 509 +|=Property |=Data type|=Format|=Description 510 +|amount |number |Type: double 511 +Max: 100000000 512 +Min: 0 |The total amount to reverse 513 +|currency |string |((( 514 +* SEK 515 +* NOK 516 +* DKK 517 +* EUR 518 +))) | 519 +|sellerTransactionId |string |Pattern: ^~[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |The sellers unique identifier of the reversal 520 +|receiptReference |string |Pattern: ^~[a-zA-Z0-9#_:@.\-]{1,}$ |A receipt reference meaningful for the consumer 521 +|reversalId |string | |Identifier of the reversal 522 +|@id |string | |Uri identifier of the current resource 523 +== 5. Redirect == 524 + 525 + 526 +==== 5.1 Create Redirect ==== 527 + 528 +While payee is progressing the authorization implementor should start poll the parent resource BnplPaymentOrder for updates 529 + 530 +{{code language="http" title="**Request**"}} 531 +POST /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/redirect HTTP/1.1 532 +Host: - 533 +Authorization: Bearer<Token> 534 +Content-Type: application/json 535 + 536 +{ 537 + "returnUrl": "https://www.back-to-my-web-shop.com", 538 + "redirectOptions": { 539 + "languageCode": "SV" 540 + } 541 +} 542 +{{/code}} 543 + 544 + 545 +**Request object specification** 546 + 547 +(% class="table-bordered table-striped" %) 548 +|=Property |=Data type|=Format|=Required|=Description 549 +|returnUrl |string | |Yes |Url to return the end user to after process is completed or cancelled 550 +|=redirectOptions |object | |Yes | 551 +| languageCode |string |((( 552 +* EN 553 +* SV 554 +* NO 555 +* DA 556 +))) |Yes | 557 + 558 + 559 +Example response containing redirect info for the chosen payment method 560 + 561 +{{code language="http" title="**Response**"}} 562 +HTTP/1.1 200 OK 563 +Content-Type: application/json 564 + 565 +{ 566 + "redirectUrl": "https://www.open-chosen-payment-method-example.com" 567 +} 568 +{{/code}} 569 + 570 + 571 +**Possible problems** 572 + 573 +(% class="table-bordered table-striped" %) 574 +|=Http status |=Problem type |=Description 575 +|500 |fatal |an unexpected error has occurred 576 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 577 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation 578 +|409 |invalid-state |Invalid state of payment order for redirect 579 + 580 + 581 + 582 +**Response object specification** 583 + 584 +(% class="table-bordered table-striped" %) 585 +|=Property |=Data type|=Format|=Description 586 +|redirectUrl |string | |Url to redirect the end user to 587 + 588 + 589 +{{display reference="developer:Main.Invoicing.ledger-api-general-docs.api-section-problems.WebHome"/}}
- 1730445122347-474.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +xwiki:XWiki.djr - Size
-
... ... @@ -1,0 +1,1 @@ 1 +0 bytes - Content
- Swagger_Releases-484271.txt
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +xwiki:XWiki.djr - Size
-
... ... @@ -1,0 +1,1 @@ 1 +0 bytes - Content
-
... ... @@ -1,0 +1,1199 @@ 1 +{ 2 + "openapi": "3.0.1", 3 + "info": { 4 + "title": "Bnpl Payment Order API 1.0", 5 + "description": "", 6 + "contact": { 7 + "name": "PayEx" 8 + }, 9 + "version": "1.0" 10 + }, 11 + "paths": { 12 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders": { 13 + "post": { 14 + "tags": [ 15 + "BnplPaymentOrder" 16 + ], 17 + "summary": "Create a payment order", 18 + "description": "Create a payment order to begin authorization process", 19 + "parameters": [ 20 + { 21 + "name": "ownerNo", 22 + "in": "path", 23 + "required": true, 24 + "schema": { 25 + "type": "string" 26 + } 27 + }, 28 + { 29 + "name": "SellerNo", 30 + "in": "query", 31 + "schema": { 32 + "type": "string" 33 + } 34 + } 35 + ], 36 + "requestBody": { 37 + "content": { 38 + "application/json": { 39 + "schema": { 40 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest" 41 + }, 42 + "example": "{\r\n \"authorizationAmount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerAuthorizationId\": \"1234567890\",\r\n \"customer\": {\r\n \"nationalConsumerIdentifier\": {\r\n \"value\": \"YYYYMMDD-XXXX\",\r\n \"countryCode\": \"SE\"\r\n },\r\n \"email\": \"example@payex.com\",\r\n \"msisdn\": \"\\u002B46701234567\"\r\n },\r\n \"pointOfSale\": \"My Web Shop\",\r\n \"mcc\": \"1234\",\r\n \"restrictToProfiles\": [\r\n {\r\n \"profileName\": \"BA_PartPayment\",\r\n \"subProfiles\": [\r\n {\r\n \"subProfileName\": \"InstallmentAccount_3\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"instore\": false\r\n}" 43 + }, 44 + "text/json": { 45 + "schema": { 46 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest" 47 + } 48 + }, 49 + "application/*+json": { 50 + "schema": { 51 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest" 52 + } 53 + } 54 + } 55 + }, 56 + "responses": { 57 + "201": { 58 + "description": "Created", 59 + "content": { 60 + "application/json": { 61 + "schema": { 62 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResource" 63 + }, 64 + "examples": { 65 + "Created": { 66 + "description": "Newly created payment order with restricted account profiles", 67 + "value": "{\r\n \"paymentOrderId\": 1234567890,\r\n \"status\": \"Created\",\r\n \"authorizationAmount\": 1000.00,\r\n \"remainingAmount\": 0,\r\n \"currency\": \"SEK\",\r\n \"sellerAuthorizationId\": \"1234567890\",\r\n \"customer\": {\r\n \"nationalConsumerIdentifier\": {\r\n \"value\": \"YYYYMMDD-XXXX\",\r\n \"countryCode\": \"SE\"\r\n },\r\n \"email\": \"example@payex.com\",\r\n \"msisdn\": \"\\u002B46701234567\"\r\n },\r\n \"pointOfSale\": \"My Web Shop\",\r\n \"mcc\": \"1234\",\r\n \"restrictToProfiles\": [\r\n {\r\n \"profileName\": \"BA_PartPayment\",\r\n \"subProfiles\": [\r\n {\r\n \"subProfileName\": \"InstallmentAccount_3\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"instore\": false,\r\n \"operations\": [\r\n {\r\n \"rel\": \"add-reversal\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/reversals\"\r\n },\r\n {\r\n \"rel\": \"redirect\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/redirect\"\r\n },\r\n {\r\n \"rel\": \"cancel-authorize\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/cancel-authorize\"\r\n },\r\n {\r\n \"rel\": \"add-capture\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/captures\"\r\n }\r\n ],\r\n \"@id\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890\"\r\n}" 68 + } 69 + } 70 + } 71 + } 72 + }, 73 + "409": { 74 + "description": "Conflict", 75 + "content": { 76 + "application/json": { 77 + "examples": { 78 + "identifier-already-in-use": { 79 + "description": "SellerAuthorizationId [xxxx] already exists. It is used for payment order with PaymentOrderId [yyyyy]", 80 + "value": "{\r\n \"type\": \"identifier-already-in-use\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 81 + }, 82 + "no-available-profiles": { 83 + "description": "No profiles configured.", 84 + "value": "{\r\n \"type\": \"no-available-profiles\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 85 + } 86 + } 87 + } 88 + } 89 + }, 90 + "400": { 91 + "description": "BadRequest", 92 + "content": { 93 + "application/json": { 94 + "examples": { 95 + "validation": { 96 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 97 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 98 + } 99 + } 100 + } 101 + } 102 + }, 103 + "404": { 104 + "description": "NotFound", 105 + "content": { 106 + "application/json": { 107 + "examples": { 108 + "not-found": { 109 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 110 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 111 + } 112 + } 113 + } 114 + } 115 + }, 116 + "500": { 117 + "description": "InternalServerError", 118 + "content": { 119 + "application/json": { 120 + "examples": { 121 + "fatal": { 122 + "description": "an unexpected error has occurred", 123 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 124 + } 125 + } 126 + } 127 + } 128 + } 129 + } 130 + } 131 + }, 132 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/cancel-authorize": { 133 + "post": { 134 + "tags": [ 135 + "BnplPaymentOrder" 136 + ], 137 + "summary": "Cancellation of the authorize", 138 + "description": "This operation is for removing any remaining amount of an already completed authorization. Already captured amount is unaffected.", 139 + "parameters": [ 140 + { 141 + "name": "ownerNo", 142 + "in": "path", 143 + "required": true, 144 + "schema": { 145 + "type": "string" 146 + } 147 + }, 148 + { 149 + "name": "SellerNo", 150 + "in": "query", 151 + "schema": { 152 + "type": "string" 153 + } 154 + }, 155 + { 156 + "name": "paymentOrderId", 157 + "in": "path", 158 + "required": true, 159 + "schema": { 160 + "type": "integer", 161 + "format": "int64" 162 + } 163 + } 164 + ], 165 + "responses": { 166 + "204": { 167 + "description": "No Content", 168 + "content": { 169 + "application/json": { 170 + "schema": { 171 + "$ref": "#/components/schemas/PayEx.LF.Api.Common.RepositoryResources.Results.RepositoryNoContentResult" 172 + } 173 + } 174 + } 175 + }, 176 + "404": { 177 + "description": "NotFound", 178 + "content": { 179 + "application/json": { 180 + "examples": { 181 + "not-found": { 182 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 183 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 184 + } 185 + } 186 + } 187 + } 188 + }, 189 + "500": { 190 + "description": "InternalServerError", 191 + "content": { 192 + "application/json": { 193 + "examples": { 194 + "fatal": { 195 + "description": "an unexpected error has occurred", 196 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 197 + } 198 + } 199 + } 200 + } 201 + } 202 + } 203 + } 204 + }, 205 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/captures": { 206 + "post": { 207 + "tags": [ 208 + "BnplPaymentOrder" 209 + ], 210 + "summary": "Create a capture", 211 + "description": "Perform a capture to solidify the purchase for this payment order. Multiple captures can be done for one payment order as long as we have RemainingAmount left on the order.", 212 + "parameters": [ 213 + { 214 + "name": "ownerNo", 215 + "in": "path", 216 + "required": true, 217 + "schema": { 218 + "type": "string" 219 + } 220 + }, 221 + { 222 + "name": "SellerNo", 223 + "in": "query", 224 + "schema": { 225 + "type": "string" 226 + } 227 + }, 228 + { 229 + "name": "paymentOrderId", 230 + "in": "path", 231 + "required": true, 232 + "schema": { 233 + "type": "integer", 234 + "format": "int64" 235 + } 236 + } 237 + ], 238 + "requestBody": { 239 + "content": { 240 + "application/json": { 241 + "schema": { 242 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureRequest" 243 + }, 244 + "example": "{\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"orderLines\": [\r\n {\r\n \"itemDescription\": \"Phone\",\r\n \"amount\": 1000.00\r\n }\r\n ],\r\n \"sellerTransactionId\": \"Example-seller-123\",\r\n \"receiptReference\": \"Example-receipt-Phone\"\r\n}" 245 + }, 246 + "text/json": { 247 + "schema": { 248 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureRequest" 249 + } 250 + }, 251 + "application/*+json": { 252 + "schema": { 253 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureRequest" 254 + } 255 + } 256 + } 257 + }, 258 + "responses": { 259 + "201": { 260 + "description": "Created", 261 + "content": { 262 + "application/json": { 263 + "schema": { 264 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureResource" 265 + }, 266 + "examples": { 267 + "Created": { 268 + "description": "Capture example with one item in the order line", 269 + "value": "{\r\n \"captureId\": 1234,\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"orderLines\": [\r\n {\r\n \"itemDescription\": \"Phone\",\r\n \"amount\": 1000.00\r\n }\r\n ],\r\n \"sellerTransactionId\": \"Example-seller-123\",\r\n \"receiptReference\": \"Example-receipt-Phone\",\r\n \"@id\": \"https://example.com/capture/1234\"\r\n}" 270 + } 271 + } 272 + } 273 + } 274 + }, 275 + "400": { 276 + "description": "BadRequest", 277 + "content": { 278 + "application/json": { 279 + "examples": { 280 + "validation": { 281 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 282 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 283 + } 284 + } 285 + } 286 + } 287 + }, 288 + "404": { 289 + "description": "NotFound", 290 + "content": { 291 + "application/json": { 292 + "examples": { 293 + "not-found": { 294 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 295 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 296 + } 297 + } 298 + } 299 + } 300 + }, 301 + "409": { 302 + "description": "Conflict", 303 + "content": { 304 + "application/json": { 305 + "examples": { 306 + "currency-not-supported": { 307 + "description": "Currency for this capture is invalid for this payment order, make sure it match with currency specified at order creation", 308 + "value": "{\r\n \"type\": \"currency-not-supported\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 309 + }, 310 + "identifier-already-in-use": { 311 + "description": "SellerTransactionId [xxxx] already exists. It is used in the capture transaction with CaptureId [yyyy]", 312 + "value": "{\r\n \"type\": \"identifier-already-in-use\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 313 + } 314 + } 315 + } 316 + } 317 + }, 318 + "422": { 319 + "description": "UnprocessableEntity", 320 + "content": { 321 + "application/json": { 322 + "examples": { 323 + "corrupt-resource": { 324 + "description": "Performed action may or may not have been completed but result was corrupted or incomplete. Read details for more information.", 325 + "value": "{\r\n \"type\": \"corrupt-resource\",\r\n \"title\": \"Problem title\",\r\n \"status\": 422,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 326 + } 327 + } 328 + } 329 + } 330 + }, 331 + "500": { 332 + "description": "InternalServerError", 333 + "content": { 334 + "application/json": { 335 + "examples": { 336 + "fatal": { 337 + "description": "an unexpected error has occurred", 338 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 339 + } 340 + } 341 + } 342 + } 343 + } 344 + } 345 + } 346 + }, 347 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/reversals": { 348 + "post": { 349 + "tags": [ 350 + "BnplPaymentOrder" 351 + ], 352 + "summary": "Reverse a capture", 353 + "description": "Can only reverse captures from this payment order", 354 + "parameters": [ 355 + { 356 + "name": "ownerNo", 357 + "in": "path", 358 + "required": true, 359 + "schema": { 360 + "type": "string" 361 + } 362 + }, 363 + { 364 + "name": "SellerNo", 365 + "in": "query", 366 + "schema": { 367 + "type": "string" 368 + } 369 + }, 370 + { 371 + "name": "paymentOrderId", 372 + "in": "path", 373 + "required": true, 374 + "schema": { 375 + "type": "integer", 376 + "format": "int64" 377 + } 378 + } 379 + ], 380 + "requestBody": { 381 + "content": { 382 + "application/json": { 383 + "schema": { 384 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalRequest" 385 + }, 386 + "example": "{\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerTransactionId\": \"123455679\",\r\n \"receiptReference\": \"Example-receipt-Phone\"\r\n}" 387 + }, 388 + "text/json": { 389 + "schema": { 390 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalRequest" 391 + } 392 + }, 393 + "application/*+json": { 394 + "schema": { 395 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalRequest" 396 + } 397 + } 398 + } 399 + }, 400 + "responses": { 401 + "201": { 402 + "description": "Created", 403 + "content": { 404 + "application/json": { 405 + "schema": { 406 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalResource" 407 + }, 408 + "examples": { 409 + "Created": { 410 + "description": "Reversal of 1000SEK", 411 + "value": "{\r\n \"reversalId\": \"12345678\",\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerTransactionId\": \"123455679\",\r\n \"receiptReference\": \"Example-receipt-Phone\"\r\n}" 412 + } 413 + } 414 + } 415 + } 416 + }, 417 + "409": { 418 + "description": "Conflict", 419 + "content": { 420 + "application/json": { 421 + "examples": { 422 + "identifier-already-in-use": { 423 + "description": "SellerTransactionId [xxxx] already exists. It is used in the capture transaction with ReversalId [yyyy]", 424 + "value": "{\r\n \"type\": \"identifier-already-in-use\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 425 + } 426 + } 427 + } 428 + } 429 + }, 430 + "400": { 431 + "description": "BadRequest", 432 + "content": { 433 + "application/json": { 434 + "examples": { 435 + "validation": { 436 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 437 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 438 + } 439 + } 440 + } 441 + } 442 + }, 443 + "404": { 444 + "description": "NotFound", 445 + "content": { 446 + "application/json": { 447 + "examples": { 448 + "not-found": { 449 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 450 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 451 + } 452 + } 453 + } 454 + } 455 + }, 456 + "500": { 457 + "description": "InternalServerError", 458 + "content": { 459 + "application/json": { 460 + "examples": { 461 + "fatal": { 462 + "description": "an unexpected error has occurred", 463 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 464 + } 465 + } 466 + } 467 + } 468 + } 469 + } 470 + } 471 + }, 472 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}": { 473 + "get": { 474 + "tags": [ 475 + "BnplPaymentOrder" 476 + ], 477 + "summary": "Get PaymentOrder", 478 + "description": "Get the specified payment order", 479 + "operationId": "PayEx.AR.BnplPaymentOrder.Api.Resources.BnplPaymentOrder.V1.BnplPaymentOrders.BnplPaymentOrdersController_Id_GetSingle", 480 + "parameters": [ 481 + { 482 + "name": "ownerNo", 483 + "in": "path", 484 + "required": true, 485 + "schema": { 486 + "type": "string" 487 + } 488 + }, 489 + { 490 + "name": "SellerNo", 491 + "in": "query", 492 + "schema": { 493 + "type": "string" 494 + } 495 + }, 496 + { 497 + "name": "paymentOrderId", 498 + "in": "path", 499 + "required": true, 500 + "schema": { 501 + "type": "integer", 502 + "format": "int64" 503 + } 504 + } 505 + ], 506 + "responses": { 507 + "200": { 508 + "description": "OK", 509 + "content": { 510 + "application/json": { 511 + "schema": { 512 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResource" 513 + }, 514 + "examples": { 515 + "OK": { 516 + "description": "Payment order that has been authorized and with full RemainingAmount left", 517 + "value": "{\r\n \"paymentOrderId\": 1234567890,\r\n \"status\": \"Authorized\",\r\n \"authorizationAmount\": 1000.00,\r\n \"remainingAmount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerAuthorizationId\": \"1234567890\",\r\n \"customer\": {\r\n \"nationalConsumerIdentifier\": {\r\n \"value\": \"YYYYMMDD-XXXX\",\r\n \"countryCode\": \"SE\"\r\n },\r\n \"email\": \"example@payex.com\",\r\n \"msisdn\": \"\\u002B46701234567\"\r\n },\r\n \"pointOfSale\": \"My Web Shop\",\r\n \"mcc\": \"1234\",\r\n \"restrictToProfiles\": [\r\n {\r\n \"profileName\": \"BA_PartPayment\",\r\n \"subProfiles\": [\r\n {\r\n \"subProfileName\": \"InstallmentAccount_3\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"instore\": false,\r\n \"operations\": [\r\n {\r\n \"rel\": \"add-reversal\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/reversals\"\r\n },\r\n {\r\n \"rel\": \"redirect\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/redirect\"\r\n },\r\n {\r\n \"rel\": \"cancel-authorize\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/cancel-authorize\"\r\n },\r\n {\r\n \"rel\": \"add-capture\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/captures\"\r\n }\r\n ]\r\n}" 518 + } 519 + } 520 + } 521 + } 522 + }, 523 + "400": { 524 + "description": "BadRequest", 525 + "content": { 526 + "application/json": { 527 + "examples": { 528 + "validation": { 529 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 530 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 531 + } 532 + } 533 + } 534 + } 535 + }, 536 + "404": { 537 + "description": "NotFound", 538 + "content": { 539 + "application/json": { 540 + "examples": { 541 + "not-found": { 542 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 543 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 544 + } 545 + } 546 + } 547 + } 548 + }, 549 + "500": { 550 + "description": "InternalServerError", 551 + "content": { 552 + "application/json": { 553 + "examples": { 554 + "fatal": { 555 + "description": "an unexpected error has occurred", 556 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 557 + } 558 + } 559 + } 560 + } 561 + } 562 + } 563 + } 564 + }, 565 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/redirect": { 566 + "post": { 567 + "tags": [ 568 + "BnplPaymentOrder" 569 + ], 570 + "summary": "Get the page to the bnpl payment order site for the payee to complete an authorization", 571 + "description": "While payee is progressing the authorization implementor should start poll the parent resource BnplPaymentOrder for updates", 572 + "parameters": [ 573 + { 574 + "name": "ownerNo", 575 + "in": "path", 576 + "required": true, 577 + "schema": { 578 + "type": "string" 579 + } 580 + }, 581 + { 582 + "name": "SellerNo", 583 + "in": "query", 584 + "schema": { 585 + "type": "string" 586 + } 587 + }, 588 + { 589 + "name": "paymentOrderId", 590 + "in": "path", 591 + "required": true, 592 + "schema": { 593 + "type": "integer", 594 + "format": "int64" 595 + } 596 + } 597 + ], 598 + "requestBody": { 599 + "content": { 600 + "application/json": { 601 + "schema": { 602 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest" 603 + }, 604 + "example": "{\r\n \"returnUrl\": \"https://www.back-to-my-web-shop.com\",\r\n \"redirectOptions\": {\r\n \"languageCode\": \"SV\"\r\n }\r\n}" 605 + }, 606 + "text/json": { 607 + "schema": { 608 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest" 609 + } 610 + }, 611 + "application/*+json": { 612 + "schema": { 613 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest" 614 + } 615 + } 616 + } 617 + }, 618 + "responses": { 619 + "200": { 620 + "description": "OK", 621 + "content": { 622 + "application/json": { 623 + "schema": { 624 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectResponse" 625 + }, 626 + "examples": { 627 + "OK": { 628 + "description": "Example response containing redirect info for the chosen payment method", 629 + "value": "{\r\n \"redirectUrl\": \"https://www.open-chosen-payment-method-example.com\"\r\n}" 630 + } 631 + } 632 + } 633 + } 634 + }, 635 + "400": { 636 + "description": "BadRequest", 637 + "content": { 638 + "application/json": { 639 + "examples": { 640 + "validation": { 641 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 642 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 643 + } 644 + } 645 + } 646 + } 647 + }, 648 + "409": { 649 + "description": "Conflict", 650 + "content": { 651 + "application/json": { 652 + "examples": { 653 + "invalid-state": { 654 + "description": "Invalid state of payment order for redirect", 655 + "value": "{\r\n \"type\": \"invalid-state\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 656 + } 657 + } 658 + } 659 + } 660 + } 661 + } 662 + } 663 + } 664 + }, 665 + "components": { 666 + "schemas": { 667 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency": { 668 + "enum": [ 669 + "SEK", 670 + "NOK", 671 + "DKK", 672 + "EUR" 673 + ], 674 + "type": "string" 675 + }, 676 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.LanguageCode": { 677 + "enum": [ 678 + "EN", 679 + "SV", 680 + "NO", 681 + "DA" 682 + ], 683 + "type": "string" 684 + }, 685 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.NationalConsumerIdentifier": { 686 + "required": [ 687 + "countryCode", 688 + "value" 689 + ], 690 + "type": "object", 691 + "properties": { 692 + "value": { 693 + "minLength": 1, 694 + "type": "string", 695 + "description": "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" 696 + }, 697 + "countryCode": { 698 + "minLength": 1, 699 + "pattern": "SE|NO|DK|FI", 700 + "type": "string", 701 + "description": "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]]" 702 + } 703 + }, 704 + "additionalProperties": false 705 + }, 706 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.PaymentOrderStatus": { 707 + "enum": [ 708 + "Created", 709 + "Rejected", 710 + "Canceled", 711 + "Failed", 712 + "Authorized" 713 + ], 714 + "type": "string", 715 + "description": "Server 2 Server status" 716 + }, 717 + "PayEx.LF.Api.Common.RepositoryResources.IOperation": { 718 + "type": "object", 719 + "properties": { 720 + "rel": { 721 + "type": "string", 722 + "nullable": true, 723 + "readOnly": true 724 + }, 725 + "method": { 726 + "type": "string", 727 + "nullable": true, 728 + "readOnly": true 729 + }, 730 + "href": { 731 + "type": "string", 732 + "nullable": true 733 + } 734 + }, 735 + "additionalProperties": false 736 + }, 737 + "PayEx.LF.Api.Common.RepositoryResources.Results.RepositoryNoContentResult": { 738 + "type": "object", 739 + "additionalProperties": false 740 + }, 741 + "V1.BnplPaymentOrders.BnplPaymentOrdersResource": { 742 + "required": [ 743 + "authorizationAmount", 744 + "currency", 745 + "customer", 746 + "paymentOrderId", 747 + "pointOfSale", 748 + "sellerAuthorizationId", 749 + "status" 750 + ], 751 + "type": "object", 752 + "properties": { 753 + "authorizationAmount": { 754 + "maximum": 100000000, 755 + "minimum": 0.01, 756 + "type": "number", 757 + "description": "The authorization amount, can't have more than 2 decimal places", 758 + "format": "double" 759 + }, 760 + "currency": { 761 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 762 + }, 763 + "sellerAuthorizationId": { 764 + "maxLength": 50, 765 + "minLength": 1, 766 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 767 + "type": "string", 768 + "description": "The seller's unique identifier of the authorize/payment order" 769 + }, 770 + "customer": { 771 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Customer" 772 + }, 773 + "pointOfSale": { 774 + "maxLength": 50, 775 + "minLength": 0, 776 + "pattern": "^[\\u0020-\\u003A \\u003C-\\u007E \\u00A0-\\u00FF \\u2019]*$", 777 + "type": "string", 778 + "description": "Trade name of the point of sale. Will be displayed to end customer." 779 + }, 780 + "mcc": { 781 + "type": "string", 782 + "description": "Merchant Category Code", 783 + "nullable": true 784 + }, 785 + "restrictToProfiles": { 786 + "type": "array", 787 + "items": { 788 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Profile" 789 + }, 790 + "description": "Filter configured profiles on exposed payment options. Leave as Null to show all configured payment options", 791 + "nullable": true 792 + }, 793 + "instore": { 794 + "type": "boolean", 795 + "description": "This request is an Instore bnpl order", 796 + "nullable": true 797 + }, 798 + "paymentOrderId": { 799 + "type": "integer", 800 + "description": "PaymentOrderId aka ExternalReservationId", 801 + "format": "int64" 802 + }, 803 + "status": { 804 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.PaymentOrderStatus" 805 + }, 806 + "remainingAmount": { 807 + "maximum": 100000000, 808 + "minimum": 0, 809 + "type": "number", 810 + "description": "Remaining amount of the authorize. If amount is zero then the authorize has already been fully used, cancelled or the payment order has not been authorized yet", 811 + "format": "double" 812 + }, 813 + "operations": { 814 + "type": "array", 815 + "items": { 816 + "$ref": "#/components/schemas/PayEx.LF.Api.Common.RepositoryResources.IOperation" 817 + }, 818 + "nullable": true 819 + }, 820 + "@id": { 821 + "type": "string", 822 + "nullable": true 823 + } 824 + }, 825 + "additionalProperties": false 826 + }, 827 + "V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest": { 828 + "required": [ 829 + "authorizationAmount", 830 + "currency", 831 + "customer", 832 + "pointOfSale", 833 + "sellerAuthorizationId" 834 + ], 835 + "type": "object", 836 + "properties": { 837 + "authorizationAmount": { 838 + "maximum": 100000000, 839 + "minimum": 0.01, 840 + "type": "number", 841 + "description": "The authorization amount, can't have more than 2 decimal places", 842 + "format": "double" 843 + }, 844 + "currency": { 845 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 846 + }, 847 + "sellerAuthorizationId": { 848 + "maxLength": 50, 849 + "minLength": 1, 850 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 851 + "type": "string", 852 + "description": "The seller's unique identifier of the authorize/payment order" 853 + }, 854 + "customer": { 855 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Customer" 856 + }, 857 + "pointOfSale": { 858 + "maxLength": 50, 859 + "minLength": 0, 860 + "pattern": "^[\\u0020-\\u003A \\u003C-\\u007E \\u00A0-\\u00FF \\u2019]*$", 861 + "type": "string", 862 + "description": "Trade name of the point of sale. Will be displayed to end customer." 863 + }, 864 + "mcc": { 865 + "type": "string", 866 + "description": "Merchant Category Code", 867 + "nullable": true 868 + }, 869 + "restrictToProfiles": { 870 + "type": "array", 871 + "items": { 872 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Profile" 873 + }, 874 + "description": "Filter configured profiles on exposed payment options. Leave as Null to show all configured payment options", 875 + "nullable": true 876 + }, 877 + "instore": { 878 + "type": "boolean", 879 + "description": "This request is an Instore bnpl order", 880 + "nullable": true 881 + } 882 + }, 883 + "additionalProperties": false 884 + }, 885 + "V1.BnplPaymentOrders.Captures.CaptureRequest": { 886 + "required": [ 887 + "amount", 888 + "currency", 889 + "orderLines", 890 + "receiptReference", 891 + "sellerTransactionId" 892 + ], 893 + "type": "object", 894 + "properties": { 895 + "amount": { 896 + "maximum": 100000000, 897 + "minimum": 0.01, 898 + "type": "number", 899 + "description": "The total amount", 900 + "format": "double" 901 + }, 902 + "currency": { 903 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 904 + }, 905 + "orderLines": { 906 + "minItems": 1, 907 + "type": "array", 908 + "items": { 909 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.OrderLine" 910 + }, 911 + "description": "Specify Item/s for the captures, sum of all OrderLines must be equals with Amount in the capture" 912 + }, 913 + "sellerTransactionId": { 914 + "maxLength": 50, 915 + "minLength": 1, 916 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 917 + "type": "string", 918 + "description": "The seller's unique identifier of the capture" 919 + }, 920 + "receiptReference": { 921 + "maxLength": 30, 922 + "minLength": 1, 923 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 924 + "type": "string", 925 + "description": "A receipt reference meaningful for the consumer" 926 + } 927 + }, 928 + "additionalProperties": false 929 + }, 930 + "V1.BnplPaymentOrders.Captures.CaptureResource": { 931 + "required": [ 932 + "amount", 933 + "captureId", 934 + "currency", 935 + "orderLines", 936 + "receiptReference", 937 + "sellerTransactionId" 938 + ], 939 + "type": "object", 940 + "properties": { 941 + "amount": { 942 + "maximum": 100000000, 943 + "minimum": 0.01, 944 + "type": "number", 945 + "description": "The total amount", 946 + "format": "double" 947 + }, 948 + "currency": { 949 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 950 + }, 951 + "orderLines": { 952 + "minItems": 1, 953 + "type": "array", 954 + "items": { 955 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.OrderLine" 956 + }, 957 + "description": "Specify Item/s for the captures, sum of all OrderLines must be equals with Amount in the capture" 958 + }, 959 + "sellerTransactionId": { 960 + "maxLength": 50, 961 + "minLength": 1, 962 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 963 + "type": "string", 964 + "description": "The seller's unique identifier of the capture" 965 + }, 966 + "receiptReference": { 967 + "maxLength": 30, 968 + "minLength": 1, 969 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 970 + "type": "string", 971 + "description": "A receipt reference meaningful for the consumer" 972 + }, 973 + "captureId": { 974 + "maxLength": 50, 975 + "minLength": 1, 976 + "pattern": "^[a-zA-Z0-9\\-]{1,}$", 977 + "type": "integer", 978 + "description": "Identifier of the capture", 979 + "format": "int64" 980 + }, 981 + "@id": { 982 + "type": "string", 983 + "nullable": true 984 + } 985 + }, 986 + "additionalProperties": false 987 + }, 988 + "V1.BnplPaymentOrders.Captures.OrderLine": { 989 + "required": [ 990 + "amount", 991 + "itemDescription" 992 + ], 993 + "type": "object", 994 + "properties": { 995 + "itemDescription": { 996 + "minLength": 1, 997 + "pattern": "^[\\u0020-\\u003A \\u003C-\\u007E \\u00A0-\\u00FF \\u2019]*$", 998 + "type": "string", 999 + "description": "Name or description of an individual item in the capture" 1000 + }, 1001 + "amount": { 1002 + "maximum": 100000000, 1003 + "minimum": 0.01, 1004 + "type": "number", 1005 + "description": "Price of an individual item in the capture", 1006 + "format": "double" 1007 + } 1008 + }, 1009 + "additionalProperties": false 1010 + }, 1011 + "V1.BnplPaymentOrders.Customer": { 1012 + "required": [ 1013 + "nationalConsumerIdentifier" 1014 + ], 1015 + "type": "object", 1016 + "properties": { 1017 + "nationalConsumerIdentifier": { 1018 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.NationalConsumerIdentifier" 1019 + }, 1020 + "email": { 1021 + "maxLength": 254, 1022 + "minLength": 5, 1023 + "pattern": "^[^;\\xA0\\xD0\\─@<>\\p{Cc}]+@(?!\\.)(?!.*\\.\\.)(?:[^;\\xA0\\xD0\\─@<>\\p{Cc}]+\\.[^;\\xA0\\xD0\\─@<>\\p{Cc}]+|\\[[A-Fa-f\\d\\:]+\\])(?<!\\.)$", 1024 + "type": "string", 1025 + "description": "Email to the customer" 1026 + }, 1027 + "msisdn": { 1028 + "maxLength": 15, 1029 + "minLength": 5, 1030 + "pattern": "^[+]{1}\\d{4,14}$", 1031 + "type": "string", 1032 + "description": "Phone number to the customer", 1033 + "nullable": true 1034 + } 1035 + }, 1036 + "additionalProperties": false 1037 + }, 1038 + "V1.BnplPaymentOrders.Operations.Redirect.RedirectOptions": { 1039 + "required": [ 1040 + "languageCode" 1041 + ], 1042 + "type": "object", 1043 + "properties": { 1044 + "languageCode": { 1045 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.LanguageCode" 1046 + } 1047 + }, 1048 + "additionalProperties": false 1049 + }, 1050 + "V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest": { 1051 + "required": [ 1052 + "redirectOptions", 1053 + "returnUrl" 1054 + ], 1055 + "type": "object", 1056 + "properties": { 1057 + "returnUrl": { 1058 + "minLength": 1, 1059 + "type": "string", 1060 + "description": "Url to return the end user to after process is completed or cancelled" 1061 + }, 1062 + "redirectOptions": { 1063 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectOptions" 1064 + } 1065 + }, 1066 + "additionalProperties": false 1067 + }, 1068 + "V1.BnplPaymentOrders.Operations.Redirect.RedirectResponse": { 1069 + "type": "object", 1070 + "properties": { 1071 + "redirectUrl": { 1072 + "type": "string", 1073 + "description": "Url to redirect the end user to", 1074 + "nullable": true 1075 + } 1076 + }, 1077 + "additionalProperties": false 1078 + }, 1079 + "V1.BnplPaymentOrders.Profile": { 1080 + "required": [ 1081 + "profileName" 1082 + ], 1083 + "type": "object", 1084 + "properties": { 1085 + "profileName": { 1086 + "minLength": 1, 1087 + "type": "string", 1088 + "description": "Profile identifier" 1089 + }, 1090 + "subProfiles": { 1091 + "type": "array", 1092 + "items": { 1093 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.SubProfile" 1094 + }, 1095 + "description": "Specify possible list of sub profiles, leave as null to display all configured sub profiles", 1096 + "nullable": true 1097 + } 1098 + }, 1099 + "additionalProperties": false 1100 + }, 1101 + "V1.BnplPaymentOrders.Reversals.ReversalRequest": { 1102 + "required": [ 1103 + "amount", 1104 + "currency", 1105 + "receiptReference", 1106 + "sellerTransactionId" 1107 + ], 1108 + "type": "object", 1109 + "properties": { 1110 + "amount": { 1111 + "maximum": 100000000, 1112 + "minimum": 0.01, 1113 + "type": "number", 1114 + "description": "The total amount to reverse", 1115 + "format": "double" 1116 + }, 1117 + "currency": { 1118 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 1119 + }, 1120 + "sellerTransactionId": { 1121 + "maxLength": 50, 1122 + "minLength": 1, 1123 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 1124 + "type": "string", 1125 + "description": "The sellers unique identifier of the reversal" 1126 + }, 1127 + "receiptReference": { 1128 + "maxLength": 30, 1129 + "minLength": 1, 1130 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 1131 + "type": "string", 1132 + "description": "A receipt reference meaningful for the consumer" 1133 + } 1134 + }, 1135 + "additionalProperties": false 1136 + }, 1137 + "V1.BnplPaymentOrders.Reversals.ReversalResource": { 1138 + "required": [ 1139 + "amount", 1140 + "currency", 1141 + "receiptReference", 1142 + "reversalId", 1143 + "sellerTransactionId" 1144 + ], 1145 + "type": "object", 1146 + "properties": { 1147 + "amount": { 1148 + "maximum": 100000000, 1149 + "minimum": 0.01, 1150 + "type": "number", 1151 + "description": "The total amount to reverse", 1152 + "format": "double" 1153 + }, 1154 + "currency": { 1155 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 1156 + }, 1157 + "sellerTransactionId": { 1158 + "maxLength": 50, 1159 + "minLength": 1, 1160 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 1161 + "type": "string", 1162 + "description": "The sellers unique identifier of the reversal" 1163 + }, 1164 + "receiptReference": { 1165 + "maxLength": 30, 1166 + "minLength": 1, 1167 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 1168 + "type": "string", 1169 + "description": "A receipt reference meaningful for the consumer" 1170 + }, 1171 + "reversalId": { 1172 + "minLength": 1, 1173 + "type": "string", 1174 + "description": "Identifier of the reversal" 1175 + }, 1176 + "@id": { 1177 + "type": "string", 1178 + "nullable": true 1179 + } 1180 + }, 1181 + "additionalProperties": false 1182 + }, 1183 + "V1.BnplPaymentOrders.SubProfile": { 1184 + "required": [ 1185 + "subProfileName" 1186 + ], 1187 + "type": "object", 1188 + "properties": { 1189 + "subProfileName": { 1190 + "minLength": 1, 1191 + "type": "string", 1192 + "description": "Sub profile identifier" 1193 + } 1194 + }, 1195 + "additionalProperties": false 1196 + } 1197 + } 1198 + } 1199 +}