openapi: 3.2.0 info: title: Payment V3 Merchant Endpoints API version: 3.6.5 description: APIs intended to support the merchant/partner's payment flow on creation, cancellation, search and refunds. servers: - url: https://merchant.api.preprod.bancontact.net description: PREPROD merchant API - url: https://merchant.api.bancontact.net description: PROD merchant API security: - api_key_payment_profile: [] tags: - name: Merchant Endpoints paths: /v3/payments/{id}: get: responses: '200': description: Payment details content: application/json: schema: $ref: '#/components/schemas/get_payment_response' '401': description: '**Error Codes** * `UNAUTHORIZED`: caller doesn’t have an api-key access token' content: application/json: schema: $ref: '#/components/schemas/error' '403': description: '**Error Codes** * `ACCESS_DENIED`: api-key access token is invalid, creditor it''s not a participant of the requested payment' content: application/json: schema: $ref: '#/components/schemas/error' '404': description: '**Error Codes** * `PAYMENT_NOT_FOUND`: no payment could be found ' content: application/json: schema: $ref: '#/components/schemas/error' '429': description: '**Error Codes** ' '500': description: '**Error Codes** * `TECHNICAL_ERROR`: Technical error in Payment service' content: application/json: schema: $ref: '#/components/schemas/error' '503': description: '**Error Codes**' description: 'This API is intended for merchants requiring information on a specific payment. Onboarded merchants should have api keys for each profile, the api key will carry the profileId information required to find the correct creditor in the merchant-service The token/api-key necessary to call this endpoint must contain: * `subjectType` : `INTEGRATOR:{CCV_ID}` or `MERCHANT:{ID}` * `resource`: `PAYMENTPROFILE:{profileId}`, * `authority`: `MERCHANT_PAYMENT`' operationId: merchant-get-payment tags: - Merchant Endpoints security: - api_key_payment_profile: [] - JWS-Request-Signature-Payment: [] parameters: - in: path name: id required: true schema: type: string minLength: 24 maxLength: 24 summary: get a payment by id delete: responses: '204': description: Payment is successfully cancelled '401': description: '* `UNAUTHORIZED`: user doesn''t have an access token' content: application/json: schema: $ref: '#/components/schemas/error' '403': description: '* `ACCESS_DENIED`: access token is invalid * `CALLER_NOT_ALLOWED_TO_CANCEL`: if caller is not a participant of the payment' content: application/json: schema: $ref: '#/components/schemas/error' '404': description: '* `PAYMENT_NOT_FOUND`: payment is not found in the system' content: application/json: schema: $ref: '#/components/schemas/error' '422': description: '* `PAYMENT_NOT_PENDING`: payment is not in pending or identify state' content: application/json: schema: $ref: '#/components/schemas/error' '429': description: '**Error Codes** ' '500': description: '* `TECHNICAL_ERROR`: Technical error in Payment service ' content: application/json: schema: $ref: '#/components/schemas/error' '503': description: '' description: 'Endpoint responsible for canceling a payment on the request of a merchant. The caller has to be one of the participants of the payment. A payment can be cancelled only if has the status in PENDING or IDENTIFIED. When a payment is cancelled the status will be set to CANCELLED. The token neccessary to call this endpoint as a **merchant** has to have: - `subjectType` : `INTEGRATOR` or `MERCHANT` - `authority`: `MERCHANT_PAYMENT` - `resourceType` : `PAYMENTPROFILE`' tags: - Merchant Endpoints operationId: cancel_payment summary: cancel a payment security: - api_key_payment_profile: [] - JWS-Request-Signature-Payment: [] parameters: - in: path name: id required: true schema: type: string minLength: 24 maxLength: 24 /v3/payments/search: post: responses: '200': description: List of payments content: application/json: schema: $ref: '#/components/schemas/PaymentSearchResponse' '401': description: '**Error Codes** * `UNAUTHORIZED`: caller doesn’t have an api-key access token' '403': description: '**Error Codes** * `ACCESS_DENIED`: api-key access token is invalid, creditor it''s not a participant of the requested payment' '429': description: '**Error Codes** ' '500': description: '**Error Codes** * `TECHNICAL_ERROR`: Technical error in Payment service' '503': description: '' description: 'Endpoint responsible for searching payments by PaymentWebQuery model and returning the latest n(number set on the ''limit'' parameter) payments, starting from the ''offset'' payment(set in ''offset'' parameter). By default the latest 10 payments (sorted by creation date descending) are returned per request' operationId: search tags: - Merchant Endpoints summary: search payments security: - api_key_payment_profile: [] - JWS-Request-Signature-Payment: [] parameters: - in: query name: page description: zero-based page index in list requests. schema: type: integer minimum: 0 default: 0 - in: query name: size description: the size of the page to be returned in list requests. schema: type: integer minimum: 0 maximum: 100 default: 10 requestBody: content: application/json: schema: $ref: '#/components/schemas/payment-search-query' /v3/payments: post: responses: '201': description: Payment has been created successfully content: application/json: schema: $ref: '#/components/schemas/payment_create_response' '400': description: '**Error Codes** * `BODY_MISSING`: A json needs to be provided * `FIELD_IS_REQUIRED`: Field X is mandatory * `FIELD_IS_INVALID`: Field X is invalid' content: application/json: schema: $ref: '#/components/schemas/error' '401': description: '**Error Codes** * `UNAUTHORIZED`: user doesn’t have an access token' content: application/json: schema: $ref: '#/components/schemas/error' '403': description: '**Error Codes** * `ACCESS_DENIED`: The JWT could not be verified (different format) - The JWT doesn’t contain the required authority to access the resource requested' content: application/json: schema: $ref: '#/components/schemas/error' '404': description: '**Error Codes** * `MERCHANT_PROFILE_NOT_FOUND`: The merchant profile does not exist' '422': description: '**Error Codes** * `UNABLE_TO_PAY_CREDITOR`: Variable reason(Depends on automatic processing).' content: application/json: schema: $ref: '#/components/schemas/error' '429': description: '**Error Codes** ' '500': description: '**Error Codes** * `TECHNICAL_ERROR`: Technical error in Payment service' content: application/json: schema: $ref: '#/components/schemas/error' '503': description: '**Error Codes** * `TRY_AGAIN_LATER`: one of the internal services is unavailable' content: application/json: schema: $ref: '#/components/schemas/error' description: 'This API is intended for merchants initiating payments for specific profiles. Onboarded merchants should have api keys for each profile, the api key will carry the profileId information required to find the correct creditor in the merchant-service The token/api-key necessary to call this endpoint must contain: * `subjectType` : "`INTEGRATOR:{CCV_ID}`" or "`MERCHANT:{ID}`" * `resource`: "`PAYMENTPROFILE:{profileId}`", * `authority`: `MERCHANT_PAYMENT`' summary: create a payment security: - api_key_payment_profile: [] - JWS-Request-Signature-Payment: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/payment_create_request' operationId: create tags: - Merchant Endpoints /v3/payments/pos: post: responses: '201': description: Payment successfully created content: application/json: schema: $ref: '#/components/schemas/payment_create_response' '400': description: '**Error Codes** * `BODY_MISSING`: A json needs to be provided * `FIELD_IS_REQUIRED`: Field X is mandatory * `FIELD_IS_INVALID`: Field X is invalid' content: application/json: schema: $ref: '#/components/schemas/error' '401': description: '**Error Codes** * `UNAUTHORIZED`: user doesn’t have an access token' content: application/json: schema: $ref: '#/components/schemas/error' '403': description: '**Error Codes** * `ACCESS_DENIED`: The JWT could not be verified (different format) - The JWT doesn’t contain the required authority to access the resource requested' content: application/json: schema: $ref: '#/components/schemas/error' '404': description: '**Error Codes** * `MERCHANT_PROFILE_NOT_FOUND`: The merchant profile does not exist' content: application/json: schema: $ref: '#/components/schemas/error' '422': description: '**Error Codes** * `UNABLE_TO_PAY_CREDITOR`: Variable reason(Depends on automatic processing).' content: application/json: schema: $ref: '#/components/schemas/error' '500': description: '**Error Codes** * `TECHNICAL_ERROR`: Technical error in Payment service' content: application/json: schema: $ref: '#/components/schemas/error' '503': description: '**Error Codes** * `TRY_AGAIN_LATER`: one of the internal services is unavailable' content: application/json: schema: $ref: '#/components/schemas/error' summary: create static qr payment tags: - Merchant Endpoints description: 'This API is intended for merchants initiating staticQR payments for specific POS(point of sale). If active payment already exists for provided combination of profileId and posId, then existing payment will be invalidated and new one created. Onboarded merchants should have api keys for each profile, the api key will carry the profileId information required to find the correct creditor in the merchant-service The token/api-key necessary to call this endpoint must contain: * `subjectType` : "`INTEGRATOR:{CCV_ID}`" or "`MERCHANT:{ID}`" * `resource`: "`PAYMENTPROFILE:{profileId}`", * `authority`: `MERCHANT_PAYMENT`' security: - api_key_payment_profile: [] - JWS-Request-Signature-Payment: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/static_qr_payment_create_request' operationId: create_static_qr_payment components: schemas: currency: type: string title: Currency description: Currency code. Only EUR is supported [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) enum: - EUR default: EUR VoucherEligibleAmount: type: object description: Defines an amount could be payed with proper voucher schemes required: - voucherSchemes - amount properties: voucherSchemes: type: array description: List of voucher schemes could be used to pay the amount minItems: 1 items: $ref: '#/components/schemas/VoucherScheme' amount: type: integer description: Amount in cents eligible for payment with voucher. EUR 10.13 will be 1013 format: int64 minimum: 1 exclusiveMinimum: 1 maximum: 999999999999 examples: - 1013 PaymentSearchResponse: allOf: - $ref: '#/components/schemas/AbstractListResponsePayment' - type: object properties: details: type: array items: $ref: '#/components/schemas/get_payment_response' bulkId: type: string maxLength: 35 description: Field used to reference a bulk batch, so the merchant can inform how the payments should be bulked. If it's not set here it will default to the one configured in the profile. examples: - Bulk-1-200 payment_create_request: type: object title: PaymentCreateRequest description: Request to initiate/create a payment as a Merchant properties: reference: type: string description: 'Merchant payment reference, used to reference the Bancontact Company payment in the merchant''s system. The characters used must comply with the [SEPA Requirements for an Extended Character Set (UNICODE Subset) - Best Practices | European Payments Council](https://www.europeanpaymentscouncil.eu/document-library/guidance-documents/sepa-requirements-extended-character-set-unicode-subset-best). ' maxLength: 35 examples: - '19848995' bulkId: type: string maxLength: 35 description: Field used to reference a bulk batch, so the merchant can inform how the payments should be bulked. If it's not set here it will default to the one configured in the profile. examples: - Bulk-1-200 amount: type: integer description: Amount in cents requested format: int64 minimum: 1 exclusiveMinimum: 1 maximum: 999999999999 currency: $ref: '#/components/schemas/currency' description: type: string description: 'Description of the payment that will be shown to the debtor, also used in the bank statement for reconciliation purposes. The characters used must comply with the [SEPA Requirements for an Extended Character Set (UNICODE Subset) - Best Practices | European Payments Council](https://www.europeanpaymentscouncil.eu/document-library/guidance-documents/sepa-requirements-extended-character-set-unicode-subset-best). ' maxLength: 140 identifyCallbackUrl: type: string description: Callback url to which merchants will be notified about the payment identification. If it's not set here it will default to the one configured in the profile pattern: ^https:\/\/([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(:\d+)?(\/[^\s]*)?$ minLength: 1 maxLength: 2048 examples: - https://api.merchant.bancontact.net/identify callbackUrl: type: string description: callbackUrl to which the merchant will be notified about the payment payout. If it's not set here it will default to the one set in the profile pattern: ^https:\/\/([a-zA-Z0-9-:]+\.)+[a-zA-Z]{2,}(:\d+)?(\/[^\s]*)?$ minLength: 1 maxLength: 2048 examples: - https://api.merchant.bancontact.net/payment returnUrl: type: string description: Merchant return url to which the dynamic payment page will redirect after the payment is completed minLength: 1 maxLength: 2048 pattern: ^https:\/\/([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(:\d+)?(\/[^\s]*)?$ examples: - https://api.merchant.bancontact.net/payment voucherEligibility: deprecated: true type: array description: List of Value Added Services (vouchers) eligible amounts within the payment items: $ref: '#/components/schemas/VoucherEligibleAmount' required: - amount VoucherScheme: type: string description: "Voucher scheme (voucher type), has the form [alpha-3-country-code]_[identifier]\ncurrently known values:\n - BEL_MEAL_VOUCHER\n - BEL_ECO_VOUCHER\n - BEL_GIFT_VOUCHER\n - BEL_COVID_VOUCHER\n - BEL_SPORT_VOUCHER\n - BEL_CONSUMPTION_VOUCHER\n\nThe api should allow for new schemes, providers and categories without having to upgrade all the services/apps\nusing this API. Because most services will use the java api artifact for this (which will 'close' any enums\ndefined in an openapi spec), the values above are not encoded explicitly as enums.\nThe 400 error response will report any invalid values for the scheme and providers.\n" examples: - BEL_MEAL_VOUCHER minLength: 1 maxLength: 36 pattern: ^[A-Z]{3}_[A-Z_]+$ links: type: object title: Links description: Provides information to navigate to our REST interfaces dynamically, by including hypermedia links to them. Note that for some links inclusion depends on the status of the payment (e.g. cancel link will be available on PENDING and refund on SUCCEEDED) properties: self: $ref: '#/components/schemas/link' examples: - https://api.merchant.bancontact.net/5f91483d-78a7-4914-bc6f= deeplink: $ref: '#/components/schemas/link' examples: - https://payconiq.com/pay/2/5f91483d-78a7-4914-bc6f= qrcode: $ref: '#/components/schemas/link' examples: - https://qrcodegenerator.api.bancontact.net/qrcode?c=https%3A%2F%2Fpayconiq.com%2Fpay%2F2%2F5f91483d-78a7-4914-bc6f= cancel: $ref: '#/components/schemas/link' examples: - https://api.merchant.bancontact.net/5f91483d-78a7-4914-bc6f= refund: $ref: '#/components/schemas/link' examples: - https://merchant.api.bancontact.net/payments/5f91483d-78a7-4914-bc6f=/refunds checkout: $ref: '#/components/schemas/link' examples: - https://checkout.example.com?paymentId=12345×tamp=1700000000000&token=abcdef1234567890 required: - self - deeplink - qrcode payment-search-query: type: object title: PaymentSearchQuery properties: from: type: string format: date-time description: default is today - 1day (yesterday) to: type: string format: date-time paymentStatuses: type: array items: $ref: '#/components/schemas/merchant-payment-status' reference: type: string description: 'Merchant payment reference, used to reference Bancontact Company payment in merchant system. The characters used must comply with the [SEPA Requirements for an Extended Character Set (UNICODE Subset) - Best Practices | European Payments Council](https://www.europeanpaymentscouncil.eu/document-library/guidance-documents/sepa-requirements-extended-character-set-unicode-subset-best). ' examples: - '19848995' get_payment_response: type: object title: GetPaymentResponse description: Response containing information on the requested payment. properties: paymentId: type: string description: id of the payment minLength: 24 maxLength: 24 examples: - 5f91483d-78a7-4914-bc6f= createdAt: type: string format: date-time description: the creation time of the payment expireAt: type: string format: date-time description: the time from which the payment will be expired succeededAt: type: string format: date-time description: if the payment is SUCCEEDED, then this field represents the date-time on which the payment was SUCCEEDED currency: $ref: '#/components/schemas/currency' status: $ref: '#/components/schemas/merchant-payment-status' creditor: $ref: '#/components/schemas/payment_creditor_response' debtor: type: object properties: name: type: string description: First name of Debtor examples: - John iban: type: string description: IBAN of Debtor masked examples: - '*************12636' amount: type: integer format: int64 description: Amount in cents originally requested. If no amount was requested by creditor, this will be 0 description: type: string description: merchant's description of the payment examples: - 5 coke. message: type: string description: debtor's message of the payment examples: - Money send. reference: type: string description: 'Merchant payment reference, used to reference the Bancontact Company payment. The characters used must comply with the [SEPA Requirements for an Extended Character Set (UNICODE Subset) - Best Practices | European Payments Council](https://www.europeanpaymentscouncil.eu/document-library/guidance-documents/sepa-requirements-extended-character-set-unicode-subset-best). in the merchant''s system ' examples: - '19848995' bulkId: type: string description: Field used to reference a bulk batch, so the merchant can choose how to bulk the payments. Mandatory if merchant profile does have bulking enabled, otherwise will miss from the response. If it's not set in the create call it will default to the value configured in the profile if it exists, otherwise its value will be defaulted by the application. examples: - Bulk-1-200 _links: $ref: '#/components/schemas/links' required: - paymentId - createdAt - expireAt - currency - status - creditor - amount - totalAmount payment_reference: type: string description: Partner payment reference, used to reference the Bancontact Company payment in the partner's system maxLength: 35 examples: - '19848995' shopId: type: string description: Id of the shop, where payment is created maxLength: 36 examples: - 3418e946-ef71-41ef-ad56-c41421c1e079 link: type: object title: Link properties: href: type: string required: - href payment_create_response: type: object title: PaymentCreateResponse description: Object returned if the payment gets successfully created properties: paymentId: type: string description: Payment ID minLength: 24 maxLength: 24 examples: - 5f91483d-78a7-4914-bc6f= status: type: string enum: - PENDING description: the status of the payment created createdAt: type: string format: date-time description: the creation time of the payment expiresAt: type: string format: date-time description: the time from which the payment will be expired description: type: string description: 'Description of the payment that will be shown to the debtor, also used in the bank statement for reconciliation purposes. The characters used must comply with the [SEPA Requirements for an Extended Character Set (UNICODE Subset) - Best Practices | European Payments Council](https://www.europeanpaymentscouncil.eu/document-library/guidance-documents/sepa-requirements-extended-character-set-unicode-subset-best). Only first 35 characters will be used for the remittance info ' reference: type: string description: 'Merchant payment reference, used to reference the Bancontact Company payment in the merchant''s system. The characters used must comply with the [SEPA Requirements for an Extended Character Set (UNICODE Subset) - Best Practices | European Payments Council](https://www.europeanpaymentscouncil.eu/document-library/guidance-documents/sepa-requirements-extended-character-set-unicode-subset-best). ' examples: - '19848995' amount: type: integer format: int64 minimum: 1 exclusiveMinimum: 1 maximum: 999999999999 description: Amount in cents requested currency: $ref: '#/components/schemas/currency' creditor: $ref: '#/components/schemas/payment_creditor_response' _links: $ref: '#/components/schemas/links' required: - paymentId - status - createdAt - expiresAt - amount - currency - creditor - _links merchant-payment-status: type: string title: MerchantPaymentStatus description: '| Status | Description | |--------|-------------| | PENDING | The merchant has created the payment and and is pending to proceed with identify step. | | IDENTIFIED | The user has scanned the payment''s QR code with the Bancontact Pay. | | AUTHORIZED | The user has confirmed the payment and the bank authorized it. | | AUTHORIZATION_FAILED | The authorization with the bank failed. | | FAILED | Something went wrong during the payment process(e.g authorization failed). | | SUCCEEDED | The payment has succeeded. | | CANCELLED | When the payment has been canceled after the user has scanned it, or the merchant has cancelled the payment.| | EXPIRED | The payment has expired. | | PENDING_MERCHANT_ACKNOWLEDGEMENT | The payment is waiting for the merchant to acknowledge. | | VOIDED | The payment has been voided | ' enum: - PENDING - IDENTIFIED - AUTHORIZED - AUTHORIZATION_FAILED - SUCCEEDED - FAILED - CANCELLED - EXPIRED - PENDING_MERCHANT_ACKNOWLEDGEMENT - VOIDED static_qr_payment_create_request: type: object title: StaticQRPaymentCreateRequest description: Request to initiate/create a static qr payment as a Merchant properties: reference: $ref: '#/components/schemas/payment_reference' bulkId: $ref: '#/components/schemas/bulkId' amount: type: integer description: Amount in cents requested format: int64 minimum: 1 exclusiveMinimum: 1 maximum: 999999999999 currency: $ref: '#/components/schemas/currency' description: $ref: '#/components/schemas/payment_description' posId: $ref: '#/components/schemas/posId' shopId: $ref: '#/components/schemas/shopId' shopName: type: string description: Name of the shop, where payment is created. This name will be shown to the user during payment, but will be truncated in the remittance info, if longer than 23 characters. examples: - Bun café maxLength: 36 identifyCallbackUrl: type: string description: Callback url to which merchants will be notified about the payment identification. If it's not set here it will default to the one configured in the profile minLength: 1 maxLength: 2048 examples: - https://api.merchant.bancontact.net/identify callbackUrl: type: string description: Callback url to which the merchant will be notified about the payment payout/cancel. If it's not set here it will default to the one set in the profile minLength: 1 maxLength: 2048 examples: - https://api.merchant.bancontact.net/payment voucherEligibility: deprecated: true type: array description: List of Value Added Services (vouchers) eligible amounts within the payment items: $ref: '#/components/schemas/VoucherEligibleAmount' required: - amount - posId payment_description: type: string description: 'Description of the payment that will be shown to the debtor, also used in the bank statement for reconciliation purposes. The characters used must comply with the [SEPA Requirements for an Extended Character Set (UNICODE Subset) - Best Practices | European Payments Council](https://www.europeanpaymentscouncil.eu/document-library/guidance-documents/sepa-requirements-extended-character-set-unicode-subset-best). ' maxLength: 140 AbstractListResponsePayment: type: object properties: size: type: integer minimum: 0 description: Size of the elements returned in current page totalPages: type: integer description: Total number of pages in the backend for the list requested totalElements: type: integer description: 'Total number of elements in the list requested ' number: type: integer description: Current page number required: - size - totalPages - totalElements - number error: type: object description: error response received from server title: ErrorResponse properties: code: type: string description: '' message: type: string description: '' traceId: type: string description: id that is assigned to a single request, job, or action spanId: type: string description: id of the work unit where the error occured required: - code - message - traceId - spanId payment_creditor_response: type: object title: PaymentCreditorResponse description: Creditor account set to receive the payment properties: profileId: type: string description: The configuration ID of the Merchant examples: - 07e998f9-d932-4848-8b60-d5b5ae94b1b2 merchantId: type: string description: the Id of the merchant examples: - dee718bb-3b6d-4312-9404-3d63d14529cc name: type: string description: Merchant's company name that will be shown to the debtor examples: - John iban: type: string description: Creditor's Bank Account Iban to where the money will be sent to for this current payment examples: - BE12 3456 7890 1234 identifyCallbackUrl: type: string description: callbackUrl to which the merchant will be notified about the payment identification examples: - https://api.merchant.bancontact.net/identify callbackUrl: type: string description: callbackUrl to which the merchant will be notified about the payment payout examples: - https://api.merchant.bancontact.net/payment posId: type: string description: Merchant's point of sale identifier maxLength: 36 pattern: ^[A-Za-z0-9]+$ examples: - POS00001 securitySchemes: api_key_payment_profile: type: apiKey in: header description: Bearer authentication with API Key generated by API Manager. Used to get/create payments for a specific Merchant Profile or create refunds for a specific payment. name: Authorization JWS-Request-Signature-Payment: type: apiKey name: Signature in: header description: "[Detached JWS signature of response payload](https://tools.ietf.org/html/rfc7797).\n\nBancontact Company hosts the certificates in [JWK format](https://tools.ietf.org/html/rfc7517) as [JWKS](https://tools.ietf.org/html/rfc7517#appendix-B) at :\n- https://jwks.bancontact.net/\n- https://jwks.preprod.bancontact.net/\nfor PROD and PREPROD environments respectively.\n\nThe merchant system should download the certificate in JWK format from the URL specified above.\n\nThe signature must be computed as per following instructions:\n\n jws = base64URLEncode(JOSE Header)..alg(base64URLEncode(JOSE Header).base64URLEncode(Request Body))\n\n [JOSE Header](https://tools.ietf.org/html/rfc7515#section-4) =\n\n {\n \"typ\": \"jose+json\",\n \"kid\": \"JWK kid\",\n \"alg\": \"ES256\",\n \"https://payconiq.com/sub\" : \"{merchantProfileId}\",\n \"https://payconiq.com/iss\" : \"Payconiq\",\n \"https://payconiq.com/iat\" : \"{Current creation date time in [ISODateTime format](https://www.iso20022.org/standardsrepository/public/wqt/Description/mx/dico/datatypes/_YW1tKtp-Ed-ak6NoX_4Aeg_-1624336183), expressed in UTC time format(YYYY-MM-DDThh:mm:ss.sssZ)},\n \"https://payconiq.com/jti\" : \"{Unique-request-identifier}\",\n \"https://payconiq.com/path\": \"request path ex. /v3/payments/{payment-id}/confirm\"\n \"crit\": [\"https://payconiq.com/sub\", \"https://payconiq.com/iss\", \"https://payconiq.com/iat\", \"https://payconiq.com/jti\", \"https://payconiq.com/path\"]\n }\n\nJWS Payload MUST be the same as response body as base64url encoded JSON data."