From empty
To version 22.1
edited by thomas hedstrom
on 2026/07/08 14:55
Change comment: There is no comment for this version

Summary

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.XWikiGuest
1 +xwiki:XWiki.thomashedstrom
Default language
... ... @@ -1,0 +1,1 @@
1 +en
Tags
... ... @@ -1,0 +1,1 @@
1 +px-custom-page-content
Content
... ... @@ -1,0 +1,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 +}