openapi: 3.0.4 info: title: Open Banking Payment Initiation Service description: | ## Introduction The v4 payment API supports both WERO and PSD2 payments in either a multi-message or single-message interaction. In the multi-message, the Initiating Party can separately initiate the payment-consent, payment-authorisaion, and the capture of the payment. This opens up additional payment plans for subscriptions and event-based payments. The table below explains which **Payment Mean**, **Payment Product**, **Payment Plan** combinations can be initiated with **Multi-message** and/or **Single message** with the v4 API. | Payment Mean | Payment Product | Payment Plan | Multi Message
Payment Initiation Service | Single Message
Payment Initiation Service | |------|---------|---------|------|---| | Wero | n.a. | single | Yes | Yes | | Wero | n.a. | subscription | Yes | No | | Wero | n.a. | event-based | Yes | No | | PSD2 | PSD2-SCT | n.a. | No | Yes | | PSD2 | PSD2-SCT-Inst | n.a. | No | Yes | | PSD2 | PSD2-Target2 | n.a. | No | Yes | | PSD2 | PSD2-Domestic | n.a. | No | Yes | | PSD2 | PSD2-Domestic-Inst | n.a. | No | Yes | ### Wero All Wero payment plans can initiated with the multi-message payment. For the Single payment plan you also have the option to use a single-message. In this case Worldline will immediately initiate the payment-authorization and capture after payment was approved by the PSU (Payment Service User). ### PSD2 For PSD2 there are several possible sequence of API calls to complete a payment. Which might include the Strong Customer Authentication API (available in a separate yaml file) The response of an API call will indicate in the 'Links' section which next API call is required to complete the payment. version: "4.0.0" x-tpp-buildversion: '1' servers: - url: /services/ob/v4 paths: /{paymentMean}/payment-consents/: post: security: - Authorization: [] tags: - Multi Message Payment Initiation Service summary: Create Payment Consent description: | Creates a new payment consent for single, subscription, or event-based payments. This endpoint initiates the extended payment flow by creating a payment consent that allows for: - **Single Payments**: One-time payment execution - **Subscription Payments**: Subscription-based payments with defined frequency (daily, weekly, monthly, quarterly, yearly) - **Event-Based Payments**: Payments triggered by specific events (e.g., hotel check-out, delivery confirmation) The consent must be granted by the PSU before payment authorisation can be created. Upon successful creation, the response includes the PaymentConsentId, expiry date, status (typically "Open"), and optional links for QR code or print functionality. **Payment Flow:** 1. Create payment consent (this endpoint) → Status: Open 2. PSU grants consent → Status: Authorised 3. Create payment authorisation → Funds reserved 4. Capture payment → Settlement process begins **Strong Customer Authentication (SCA):** May be required depending on ASPSP requirements and payment amount. **PSU Session Information:** All PSU session and HTTP information, including Locale, should be provided in the PsuData.SessionData object in the request body. operationId: paymentConsentInitiate parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/UseAuthorisationLandingPages' - $ref: '#/components/parameters/AppRedirectPreferred' - $ref: '#/components/parameters/Locale' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PaymentConsentRequest' examples: SingleImmediatePayment: summary: "Single Immediate Payment - E-commerce Purchase (Wero Payment)" description: "Customer purchases electronics from online store (TechStore). Immediate full capture after authorization." value: InitiatingPartyReferenceId: "TECHSTORE-ORD-2025121700001" PaymentPlan: Type: "SingleImmediate" Amount: Amount: "899.99" RemittanceInformation: "TechStore Order #2025121700001 - Smartphone + Accessories" RemittanceInformationStructured: Reference: "INV2025121700001" EasyCheckout: PhoneNumber: true Email: true PrintOptions: Lifetime: 30 Format: "PrintQR" InitiatingPartyNotificationUrl: "https://techstore.example.com/api/payment-notifications" InitiatingPartyReturnUrl: "https://techstore.example.com/checkout/complete?orderId=2025121700001" SubscriptionPayment: summary: "Subscription Payment - Monthly Streaming Service (Wero Payment)" description: "StreamPlus Premium HD subscription with 7-day free trial, monthly billing at 14.99 EUR" value: InitiatingPartyReferenceId: "STREAM-SUB-2025121700002" PaymentPlan: Type: "SubscriptionPayment" SubscriptionPayment: StartDate: "2025-12-17" FirstPaymentDate: "2025-12-24" EndDate: "2026-12-17" Frequency: "Monthly" ImplicitAuthCapture: true Amount: Amount: "14.99" RemittanceInformation: "StreamPlus Premium HD - Monthly Subscription" RemittanceInformationStructured: Reference: "SUB2025121700002" EasyCheckout: PhoneNumber: false Email: true PrintOptions: Lifetime: 120960 Format: "PrintQR" InitiatingPartyNotificationUrl: "https://api.streamplus.example.com/webhooks/payments" InitiatingPartyReturnUrl: "streamplus://subscription/success?ref=SUB2025121700002" EventBasedPayment: summary: "Event-Based Payment - Hotel Checkout (PSD2 Payment)" description: "Grand Plaza Hotel 3-night stay. Pre-auth for 600 EUR with multiple captures (room service, spa, checkout)" value: InitiatingPartyReferenceId: "HOTEL-RES-2025121700003" EndToEndId: "E2E-HOTEL-2025121700003" PaymentProduct: "PSD2-SCT" PaymentPlan: Type: "EventBasedPayment" EventBasedPayment: CaptureTrigger: "Hotel checkout" AmountPaymentType: "UpTo" MaxAuthToCaptureTime: 432000 MultiCapturesAllowed: true Reason: "Hotel stay charges including room service and incidentals" ImplicitAuthorisation: true Amount: Amount: "600.00" Currency: "EUR" RemittanceInformation: "Grand Plaza Hotel - Reservation #2025121700003 - Mueller" RemittanceInformationStructured: Reference: "RES2025121700003" ReferenceType: "HotelReservation" ReferenceIssuer: "Grand Plaza Hotel" PsuData: AspspId: "COBADEFF" Country: "DE" SessionData: LastLogin: "2025-12-17T15:55:00.000Z" PsuIpPort: "55667" HttpMethod: "POST" HttpHeaderUserAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Safari/605.1.15" HttpHeaderReferer: "https://grandplaza.example.com/checkin" HttpHeaderAccept: "application/json" HttpHeaderAcceptLanguage: "de-DE,de;q=0.9,en;q=0.8" DeviceId: "mac-uuid-abcde-12345-67890" GeoLocation: "GEO:48.137154;11.576124" DebtorAccount: SchemeName: "IBAN" Identification: "DE75512108001245126199" Currency: "EUR" EasyCheckout: PhoneNumber: true Email: true PrintOptions: Lifetime: 7200 Format: "PrintQR" InitiatingPartyNotificationUrl: "https://pms.grandplaza.example.com/api/payments/webhook" InitiatingPartyReturnUrl: "https://grandplaza.example.com/checkin/confirmed?res=2025121700003" EventBasedPayment_delivery: summary: "Event-Based Payment - Delivery Confirmation (Wero Payment)" description: "FurniHome furniture order (1299 EUR). Payment captured upon delivery confirmation." value: InitiatingPartyReferenceId: "FURNI-ORD-2025121700004" PaymentPlan: Type: "EventBasedPayment" EventBasedPayment: CaptureTrigger: "Delivery confirmation" AmountPaymentType: "Exact" MaxAuthToCaptureTime: 259200 MultiCapturesAllowed: false Reason: "Payment upon confirmed delivery of furniture order" ImplicitAuthorisation: true Amount: Amount: "1299.00" RemittanceInformation: "FurniHome Order #2025121700004 - Sofa + Assembly" RemittanceInformationStructured: Reference: "ORD2025121700004" EasyCheckout: PhoneNumber: true PrintOptions: Lifetime: 4320 Format: "PrintLink" InitiatingPartyNotificationUrl: "https://api.furnihome.example.com/payments/notifications" InitiatingPartyReturnUrl: "https://furnihome.example.com/order/confirmed?id=2025121700004" responses: '201': description: Payment consent successfully created. headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/PaymentConsentResponse' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' x-codegen-request-body-name: body /{paymentMean}/payment-consents/{paymentConsentId}: get: security: - Authorization: [] tags: - Multi Message Payment Initiation Service summary: Get Payment Consent Status description: | Retrieves the current status and details of a payment consent. Use this endpoint to check the consent status at any point in the payment flow. The response includes the PaymentConsentId, current status, expiry date, and optional links. **Possible Status Values:** - **Open**: Consent is requested or granted but not yet authorised - **Cancelled**: Consent was denied or revoked by the PSU - **Expired**: Consent expired before being granted (timed out) - **Authorised**: Consent was successfully granted and ready for authorisation **Use Cases:** - Monitor consent status after creation - Verify consent is still valid before creating authorisation - Check if consent was granted, denied, or expired by the PSU operationId: paymentConsentStatus parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/paymentConsentId' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: '200': description: Payment consent details retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/PaymentConsentResponse' headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' AspspScaApproach: $ref: '#/components/headers/AspspScaApproach' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' delete: security: - Authorization: [] tags: - Multi Message Payment Initiation Service summary: Revoke Payment Consent description: | Revokes a payment consent, preventing any further payment authorisations or captures. Use this endpoint to cancel a payment consent at any time during the payment flow. Once revoked, the consent status changes to "Cancelled" and cannot be reactivated. **When to Revoke:** - PSU wants to cancel the payment before authorisation - Merchant cancels the order - Consent is no longer needed - Security concerns or fraudulent activity detected **Important Notes:** - Revocation is permanent and irreversible - If payment authorisation already exists, it may need to be voided separately - If captures have already been processed, they cannot be reversed through revocation - Returns 204 (No Content) on successful revocation operationId: paymentConsentRevocation parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/paymentConsentId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: 204: description: Payment consent revoked 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /{paymentMean}/payment-consents/{paymentConsentId}/qr: get: security: - Authorization: [] tags: - Multi Message Payment Initiation Service summary: Get Payment Consent QR Code description: | Retrieves a QR code image for the payment consent, allowing PSU to complete payment via mobile app. This endpoint generates a QR code that encodes the payment consent information, enabling easy payment authorisation through mobile banking applications or digital wallets. **Use Cases:** - **In-Store Payments**: Display QR code at point of sale for customer to scan - **E-commerce Checkout**: Show QR code on checkout page for mobile payment - **Invoice Payments**: Include QR code in digital or printed invoices - **Self-Service Kiosks**: Display QR code for contactless payment **Response Format:** - Returns QR code as an image (typically base64 encoded) - The QR code contains payment consent reference and payment details - QR code remains valid until consent expires or is revoked **Prerequisites:** - Payment consent must be in "Open" or "Authorised" status - Consent must not be expired or cancelled operationId: paymentConsentQR parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/paymentConsentId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: 200: description: Payment consent qr code image retrieved successfully content: application/json: schema: $ref: '#/components/schemas/PaymentQrCodeResponse' headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /{paymentMean}/payment-authorisation: post: security: - Authorization: [] summary: Create Payment Authorisation description: | Creates a payment authorisation to reserve funds for an authorised payment consent. This endpoint is called after the payment consent has been granted by the PSU (status: "Authorised"). It initiates the authorisation process which reserves the specified funds in the PSU's account for later capture. **Payment Flow Stage:** 1. Payment consent created and granted (status: "Authorised") 2. **Create payment authorisation (this endpoint)** → Funds reserved 3. Capture payment → Settlement begins **Authorisation Response Statuses:** - **Authorised**: Funds successfully reserved, ready for capture - **Error**: Authorisation failed (insufficient funds, technical error, etc.) - **Cancelled**: Authorisation was rejected or cancelled by PSU/ASPSP **Capture Status (Overall):** - **Authorised**: No capture made yet, funds are reserved - **PartiallyAuthorised**: One or more partial captures made - **SettlementInProcess**: Full amount captured and being settled - **SettlementCompleted**: Full amount captured and settled **Payment Plan Behavior:** - **Single Payment**: One authorisation for the full amount - **Event-Based**: Authorisation created when ready, capture triggered by event - **Recurring**: Multiple authorisations created per billing cycle **Prerequisites:** - Payment consent must be in "Authorised" status - Consent must not be expired or revoked tags: - Multi Message Payment Initiation Service operationId: paymentAuthorisation parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' requestBody: content: application/json: schema: $ref: '#/components/schemas/PaymentAuthorisationRequest' responses: 201: description: | Payment authorisation created successfully. headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/PaymentAuthorisationDetails' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /{paymentMean}/payment-authorisation/{paymentAuthorisationId}: get: security: - Authorization: [] tags: - Multi Message Payment Initiation Service summary: Get Payment Authorisation Status description: | Retrieves the current status and details of a payment authorisation. Use this endpoint to check the authorisation status and overall capture progress. The response includes the PaymentAuthorisationStatus and related details. **Payment Authorisation Status Values:** - **Authorised**: Funds successfully reserved, ready for capture - **Error**: Authorisation failed (insufficient funds, technical error, etc.) - **Cancelled**: Authorisation was rejected or cancelled **Overall Capture Status Values:** - **Authorised**: No capture made yet, funds are reserved - **PartiallyAuthorised**: One or more partial captures made but not fully captured - **SettlementInProcess**: Full amount captured and being settled - **SettlementCompleted**: Full amount captured and settled successfully **Use Cases:** - Monitor authorisation status after creation - Check if funds are still reserved before attempting capture - Track overall capture progress (partial, full, or completed) - Verify authorisation hasn't been cancelled or expired - Determine remaining authorised amount available for capture operationId: paymentAuthorisationStatus parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/paymentAuthorisationId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: '200': description: | Payment authorisation details retrieved successfully. headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/PaymentAuthorisationDetails' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' delete: security: - Authorization: [] tags: - Multi Message Payment Initiation Service summary: Revoke Payment Authorisation description: | Revokes a payment authorisation, preventing any further payment capture. Use this endpoint to cancel a payment authorisation at any time during the payment flow. Once revoked, the status changes to "Cancelled" and cannot be reactivated. **When to Revoke:** - PSU wants to cancel the payment before capture - Merchant cancels the order - Security concerns or fraudulent activity detected **Important Notes:** - Revocation is permanent and irreversible - If captures have already been processed, they cannot be reversed through revocation - Returns 204 (No Content) on successful revocation operationId: paymentAuthorisationRevocation parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/paymentAuthorisationId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: 204: description: Payment Authorisation revoked 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /{paymentMean}/payment-authorisation/{paymentAuthorisationId}/capture: post: security: - Authorization: [] summary: Capture Payment tags: - Multi Message Payment Initiation Service description: | Captures previously authorised funds to complete the payment settlement. This endpoint is called after payment authorisation has been successfully created (status: "Authorised"). It initiates the transfer of reserved funds from the PSU's account to the merchant's account. **Payment Flow Stage:** 1. Payment consent created and granted 2. Payment authorisation created → Funds reserved 3. **Capture payment (this endpoint)** → Settlement begins 4. Settlement completes → Payment finished **Individual Capture Status Values:** - **SettlementInProcess**: Capture request accepted and being processed - **Pending**: Capture is pending processing - **Error**: Capture request failed - **Cancelled**: Capture request was rejected or cancelled - **SettlementCompleted**: Capture settled successfully **Capture Scenarios:** - **Full Capture**: Capture the entire authorised amount in one transaction - **Partial Capture**: Capture part of the authorised amount (requires MultiCapturesAllowed: true) - **Multiple Captures**: Capture remaining amount in subsequent calls (e.g., split delivery) - **Capture Retry**: Retry a failed capture using CaptureRetry: true and OriginalCaptureId **Request Parameters:** - **Amount**: Amount to capture (can be less than or equal to remaining authorised amount) - **CaptureRetry**: Set to true when retrying a failed capture - **OriginalCaptureId**: Reference to original capture when retrying **Response:** - Returns CaptureId for tracking - CaptureStatus indicating current state - RemainingAuthorisedAmount available for additional captures - Overall CaptureStatus (Authorised, PartiallyAuthorised, SettlementInProcess, SettlementCompleted) **Prerequisites:** - Payment authorisation must be in "Authorised" status - Authorisation must not be expired - Sufficient remaining authorised amount available operationId: paymentCapture parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/paymentAuthorisationId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' requestBody: content: application/json: schema: $ref: '#/components/schemas/CaptureRequest' responses: 201: description: | Capture created successfully. headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/CaptureDetails' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /{paymentMean}/payment-authorisation/{paymentAuthorisationId}/capture/{captureId}: get: security: - Authorization: [] summary: Get Capture Details tags: - Multi Message Payment Initiation Service description: | Retrieves the status and details of a specific capture request. Use this endpoint to monitor the progress of a capture operation and verify its completion. The response includes the individual capture status, remaining authorised amount, and capture details. **Individual Capture Status Values:** - **SettlementInProcess**: Capture request accepted and being processed - **Pending**: Capture is pending processing - **Error**: Capture request failed - **Cancelled**: Capture request was rejected or cancelled - **SettlementCompleted**: Capture settled successfully **Use Cases:** - Monitor capture settlement progress after initiating capture - Verify capture has been successfully settled - Check if capture failed and determine if retry is needed - Track remaining authorised amount for additional captures - Retrieve capture details for reconciliation **Response Information:** - **CaptureId**: Unique identifier for this capture - **CaptureStatus**: Current status of this individual capture - **RemainingAuthorisedAmount**: Amount still available for capture - **Amount**: Amount of this specific capture - **CapturedDate**: Timestamp when capture was initiated **Polling Recommendation:** For captures in "SettlementInProcess" or "Pending" status, poll this endpoint periodically to check for status updates until reaching a final state (SettlementCompleted, Error, or Cancelled). operationId: paymentCaptureDetails parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/paymentAuthorisationId' - $ref: '#/components/parameters/captureId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: 200: description: | Payment capture details retrieved successfully. headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/CaptureDetails' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /{paymentMean}/payments: post: security: - Authorization: [] tags: - Single Message Payment Initiation Service summary: Payment initiation request description: | Use this operation to initiate a payment on behalf of the Payment Service User. Strong customer authentication might be required by the ASPSP, the response will indicate which step is required to complete the payment. operationId: paymentInitiate parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/confirmForNotification' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/UseAuthorisationLandingPages' - $ref: '#/components/parameters/AppRedirectPreferred' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Locale' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' requestBody: content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationRequest' examples: SingleMessagePayment_BG: summary: "Single Message Payment - Berlin-Group" description: "Traditional immediate payment initiation for 899.99 EUR smartphone purchase. Payment authorized and settled in one flow without separate consent/authorization/capture phases." value: PaymentProduct: - "PSD2-SCT-Inst" PaymentProductChangeable: false PsuData: AspspId: "DEUTDEFF" Country: "DE" SessionData: LastLogin: "2025-12-17T10:25:00.000Z" PsuIpPort: "54321" HttpMethod: "POST" HttpHeaderUserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0" HttpHeaderReferer: "https://techstore.example.com/checkout" HttpHeaderAccept: "application/json" HttpHeaderAcceptLanguage: "en-US,en;q=0.9,de;q=0.8" DeviceId: "d290f1ee-6c54-4b01-90e6-d701748f0851" GeoLocation: "GEO:52.520008;13.404954" CommonPaymentData: InitiatingPartyReferenceId: "TECHSTORE-PAY-2025121700001" EndToEndId: "E2E-TECH-PAY-2025121700001" Amount: Amount: "899.99" Currency: "EUR" DebtorInformation: Account: SchemeName: "IBAN" Identification: "DE89370400440532013000" Currency: "EUR" CreditorInformation: InitiatingPartySubId: "TECHSTORE-BRANCH-001" Name: "TechStore Online GmbH" Account: SchemeName: "IBAN" Identification: "DE89370400440532013000" Currency: "EUR" Agent: "DEUTDEFFXXX" PostalAddress: StreetName: "Hauptstrasse" BuildingNumber: "100" PostCode: "10115" TownName: "Berlin" Country: "DE" RemittanceInformation: "TechStore Order #2025121700001 - Smartphone + Accessories" RemittanceInformationStructured: Reference: "INV2025121700001" ReferenceType: "Invoice" ReferenceIssuer: "TechStore Online" ChargeBearer: "SLEV" PurposeCode: "GDDS" RequestedExecutionDate: "2025-12-17T10:30:00.000Z" InitiatingPartyNotificationUrl: "https://techstore.example.com/api/payment-notifications" InitiatingPartyReturnUrl: "https://techstore.example.com/checkout/complete?orderId=2025121700001" SingleScheduledMessagePayment_BG: summary: "Single Scheduled Message Payment - Berlin-Group" description: "Traditional immediate payment initiation for 899.99 EUR smartphone purchase with future date execution" value: PaymentProduct: - "PSD2-SCT-Inst" PaymentProductChangeable: false PsuData: AspspId: "DEUTDEFF" CommonPaymentData: InitiatingPartyReferenceId: "TECHSTORE-PAY-2025121700001" EndToEndId: "E2E-TECH-PAY-2025121700001" Amount: Amount: "899.99" Currency: "EUR" RequestedExecutionDate: "2025-12-17T10:30:00.000Z" InitiatingPartyNotificationUrl: "https://techstore.example.com/api/payment-notifications" InitiatingPartyReturnUrl: "https://techstore.example.com/checkout/complete?orderId=2025121700001" SingleMessagePayment_Wero: summary: "Single Message Payment - Wero Payments" description: "Traditional immediate payment initiation for 899.99 EUR smartphone purchase. Payment authorized and settled in one flow without separate consent/authorization/capture phases." value: CommonPaymentData: InitiatingPartyReferenceId: "TECHSTORE-PAY-2025121700001" Amount: Amount: "899.99" RemittanceInformation: "TechStore Order #2025121700001 - Smartphone + Accessories" RemittanceInformationStructured: Reference: "INV2025121700001" InitiatingPartyNotificationUrl: "https://techstore.example.com/api/payment-notifications" InitiatingPartyReturnUrl: "https://techstore.example.com/checkout/complete?orderId=2025121700001" required: true responses: 201: description: | Created headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' AspspScaApproach: $ref: '#/components/headers/AspspScaApproach' Signature: $ref: '#/components/headers/Signature' Digest: $ref: '#/components/headers/Digest' content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationResponse' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' x-codegen-request-body-name: body /{paymentMean}/payments/{paymentId}/qr: get: security: - Authorization: [] tags: - Single Message Payment Initiation Service summary: Get Payment QR Code description: | Retrieves a QR code image for the payment consent, allowing PSU to complete payment via mobile app. This endpoint generates a QR code that encodes the payment consent information, enabling easy payment authorisation through mobile banking applications or digital wallets. **Use Cases:** - **In-Store Payments**: Display QR code at point of sale for customer to scan - **E-commerce Checkout**: Show QR code on checkout page for mobile payment - **Invoice Payments**: Include QR code in digital or printed invoices - **Self-Service Kiosks**: Display QR code for contactless payment **Response Format:** - Returns QR code as an image (typically base64 encoded) - The QR code contains payment consent reference and payment details - QR code remains valid until consent expires or is revoked **Prerequisites:** - Payment consent must be in "Open" or "Authorised" status - Consent must not be expired or cancelled operationId: paymentQR parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/paymentId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: 200: description: Payment consent qr code image content: application/json: schema: $ref: '#/components/schemas/PaymentQrCodeResponse' headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /{paymentMean}/payments/{paymentId}/status: get: security: - Authorization: [] tags: - Single Message Payment Initiation Service summary: Status of the payment request description: | Use this operation to retrieve the status of a payment. operationId: paymentStatus parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/paymentId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: 200: description: | Successful headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' AspspScaApproach: $ref: '#/components/headers/AspspScaApproach' Signature: $ref: '#/components/headers/Signature' Digest: $ref: '#/components/headers/Digest' content: application/json: schema: $ref: '#/components/schemas/PaymentDetailedInformation' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /{paymentMean}/payments/{paymentId}: delete: security: - Authorization: [] summary: Payment cancellation request tags: - Single Message Payment Initiation Service description: | Use this operation to cancel a payment on behalf of the Payment Service User. Strong Customer Authentication might be required by the ASPSP, the response will indicate which step is required to complete the cancellation. operationId: paymentCancellation parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/paymentId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/InitiatingPartyReturnUrl' - $ref: '#/components/parameters/UseAuthorisationLandingPages' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: 200: description: | OK headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' AspspScaApproach: $ref: '#/components/headers/AspspScaApproach' content: application/json: schema: $ref: '#/components/schemas/PaymentCancellationResponse' 204: $ref: '#/components/responses/204' 405: $ref: '#/components/responses/405' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /psd2/bulk-payments: post: security: - Authorization: [] tags: - Single Message Bulk Payment Initiation Service summary: Payment initiation request description: | Use this operation to initiate a payment on behalf of the Payment Service User. Strong customer authentication might be required by the ASPSP, the response will indicate which step is required to complete the payment. operationId: bulkPaymentInitiate parameters: - $ref: '#/components/parameters/confirmForNotification' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/UseAuthorisationLandingPages' - $ref: '#/components/parameters/AppRedirectPreferred' - $ref: '#/components/parameters/Locale' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkPaymentInitiationRequest' required: true responses: 201: description: | Created headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' AspspScaApproach: $ref: '#/components/headers/AspspScaApproach' Signature: $ref: '#/components/headers/Signature' Digest: $ref: '#/components/headers/Digest' content: application/json: schema: $ref: '#/components/schemas/PaymentInitiationResponse' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' x-codegen-request-body-name: body /psd2/bulk-payments/{paymentId}/status: get: security: - Authorization: [] tags: - Single Message Bulk Payment Initiation Service summary: Status of the payment request description: | Use this operation to retrieve the status of a payment. operationId: bulkPaymentStatus parameters: - $ref: '#/components/parameters/paymentId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: 200: description: | Successful headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' AspspScaApproach: $ref: '#/components/headers/AspspScaApproach' Signature: $ref: '#/components/headers/Signature' Digest: $ref: '#/components/headers/Digest' content: application/json: schema: $ref: '#/components/schemas/PaymentDetailedInformation' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /psd2/bulk-payments/{paymentId}: delete: security: - Authorization: [] summary: Bulk Payment cancellation request tags: - Single Message Bulk Payment Initiation Service description: | Use this operation to cancel a payment on behalf of the Payment Service User. Strong Customer Authentication might be required by the ASPSP, the response will indicate which step is required to complete the cancellation. operationId: bulkPaymentCancellation parameters: - $ref: '#/components/parameters/paymentId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/InitiatingPartyReturnUrl' - $ref: '#/components/parameters/UseAuthorisationLandingPages' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: 200: description: | OK headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/PaymentCancellationResponse' 204: $ref: '#/components/responses/204' 405: $ref: '#/components/responses/405' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /exchangerate: post: security: - Authorization: [] tags: - Currency Conversion (Extended services) summary: Exchange rate request description: | Utilize this API to obtain exchange rate details relative to the payer's local currency and the merchant's currency as the base currency (EURO). This will allow you to calculate the total amount payable in the payer's local currency, including any markup for currency conversion fees. operationId: exchangeRate parameters: - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' requestBody: content: application/json: schema: $ref: '#/components/schemas/ExchangeRateRequest' required: false responses: 201: description: | Created headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/ExchangeRateResponse' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 500: $ref: '#/components/responses/500' 503: $ref: '#/components/responses/503' /{paymentMean}/refunds: post: security: - Authorization: [] tags: - Refund Initiation Service summary: Refund initiation request description: | Use this operation to initiate one or more refunds. For Wero refunds only one refund may be provide with each request. operationId: refundInitiate parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/confirmForNotification' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/UseAuthorisationLandingPages' - $ref: '#/components/parameters/AppRedirectPreferred' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Locale' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' requestBody: content: application/json: schema: $ref: '#/components/schemas/RefundInitiationRequest' required: false responses: 201: description: | Created headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' AspspScaApproach: $ref: '#/components/headers/AspspScaApproach' content: application/json: schema: $ref: '#/components/schemas/RefundDetailedInformation' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' /{paymentMean}/refunds/{refundId}/status: get: security: - Authorization: [] tags: - Refund Initiation Service summary: Status of the refund description: | Use this operation to retrieve the details of a refund. operationId: refundStatus parameters: - $ref: '#/components/parameters/paymentMean' - $ref: '#/components/parameters/refundId' - $ref: '#/components/parameters/X-Request-ID' - $ref: '#/components/parameters/MessageCreateDateTime' - $ref: '#/components/parameters/PsuIpAddress' - $ref: '#/components/parameters/Signature' - $ref: '#/components/parameters/Digest' responses: 200: description: | Successful headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' AspspScaApproach: $ref: '#/components/headers/AspspScaApproach' content: application/json: schema: $ref: '#/components/schemas/RefundDetailedInformation' 400: $ref: '#/components/responses/400' 401: $ref: '#/components/responses/401' 403: $ref: '#/components/responses/403' 404: $ref: '#/components/responses/404' 415: $ref: '#/components/responses/415' 500: $ref: '#/components/responses/500' 502: $ref: '#/components/responses/502' 503: $ref: '#/components/responses/503' 511: $ref: '#/components/responses/511' components: securitySchemes: Authorization: type: http scheme: bearer schemas: PaymentConsentResponse: allOf: - $ref: '#/components/schemas/PaymentConsentDetails' - $ref: '#/components/schemas/CommonPaymentDataDetails' PaymentConsentDetails: type: object description: | Payment Consent Details required: - PaymentConsentStatus - PaymentConsentId properties: PaymentConsentStatus: $ref: '#/components/schemas/PaymentConsentStatus' PaymentConsentId: type: string format: uuid description: | Unique identifier of the payment consent generated by the Open Banking Service. ExternalPaymentConsentId: type: string maxLength: 256 minLength: 1 description: | Unique identifier of the payment consent assigned by the ASPSP. This ID is used by the ASPSP to reference the consent in their internal systems. ExpiryDate: type: string format: date-time CancellationSource: type: string description: | Source of the consent cancellation. **Applicable For**: PaymentConsentStatus.value = Cancelled **Sources:** - `Consumer`: PSU revoked the consent via ASPSP interface - `ConsumerPSP`: ASPSP revoked the consent (e.g., security concern, account closure) - `AcceptorPSP`: TPP/CPSP cancelled the consent request enum: - Consumer - ConsumerPSP - AcceptorPSP PaymentConsentRequest: type: object description: | Payment Consent Request for creating single, subscription, or event-based payment consents. required: - InitiatingPartyReferenceId - PaymentPlan - Amount properties: PaymentProduct: enum: [PSD2-SCT, PSD2-SCT-Inst, PSD2-Target2, PSD2-Domestic, PSD2-Domestic-Inst] type: string description: Used only when paymentMean != Wero. InitiatingPartyReferenceId: maxLength: 36 minLength: 1 type: string description: | Reference to the payment created by the Initiating Party. This Id will not be visible to the Payment Service User. example: InitParty ref-id-23457890 EndToEndId: maxLength: 35 minLength: 1 type: string description: | Unique identification, as assigned by the initiating party, to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. Required for PSD2 payments example: ID-0123456789 ProductSpecificMasterData: type: array description: | The array is defined to mention the master data specific to selected payment product items: $ref: '#/components/schemas/ProductSpecificMasterData' PsuData: $ref: '#/components/schemas/PsuData' PaymentPlan: type: object required: - Type properties: Type: type: string enum: [SingleImmediate, EventBasedPayment, SubscriptionPayment] EventBasedPayment: type: object required: - CaptureTrigger - AmountPaymentType properties: CaptureTrigger: type: string description: | Event triggering capture. Allowed - Shipping - Delivery - Availability - ServiceFulFilment - Other minLength: 3 maxLength: 255 AmountPaymentType: type: string enum: [Pay, PayUpTo] description: | Indicates if the PSU must be charged the complete amount or up to the amount minLength: 3 maxLength: 255 MaxAuthToCaptureTime: type: integer format: int32 description: | The maximum time, in seconds, between authorisation and capture. The default value is 604800, which translates to one week. default: 604800 minimum: 1 maximum: 864000 MultiCapturesAllowed: type: boolean default: false description: | Indicates if multiple captures are allowed. The default value is false. Reason: type: string minLength: 1 maxLength: 128 ImplicitAuthorisation: type: boolean default: true SubscriptionPayment: type: object required: - StartDate - FirstPaymentDate - Frequency properties: StartDate: type: string format: date FirstPaymentDate: description: | The date and time when the first payment is captured. The payment capture can occur later than the value that is specified in the startAt field when there is a free-trial period at the beginning of the subscription. type: string format: date EndDate: type: string format: date Frequency: type: string enum: [Daily, Weekly, Monthly, Quarterly, HalfYearly, Yearly] description: | Values used for Wero: Weekly, Monthly, Quarterly, HalfYearly, Yearly ImplicitAuthCapture: type: boolean default: true Amount: $ref: '#/components/schemas/Amount' RemittanceInformation: maxLength: 140 minLength: 1 type: string description: | Information supplied to enable the matching of an entry with the items that the transfer is intended to settle. This information will be visible to the Payment Service User. For Wero payments the maxLenght is 128 RemittanceInformationStructured: $ref: '#/components/schemas/RemittanceInformationStructured' PrintOptions: $ref: '#/components/schemas/PrintOptions' DebtorAccount: type: object properties: SchemeName: $ref: '#/components/schemas/IdentificationTypeEnum' Identification: type: string description: | Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction. Currency: pattern: '[A-Z]{3,3}' type: string description: | A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". ShippingAddress: $ref: '#/components/schemas/AddressData' BillingAddress: $ref: '#/components/schemas/BillingAddress' EasyCheckout: type: object properties: PhoneNumber: type: boolean Email: type: boolean InitiatingPartyNotificationUrl: maxLength: 4000 minLength: 1 type: string description: | The URL which will be used for notification service request. Only v4 notification service is supported for v4 payments InitiatingPartyReturnUrl: maxLength: 4000 minLength: 1 type: string description: | The callback URL for the redirection back to the initiating party after authorization. example: https://www.example.org PaymentConsentStatus: type: object required: - Value - At properties: Value: type: string enum: [Open, Cancelled, Rejected, Expired, Authorised] At: type: string format: date-time description: ISO 8601 timestamp when the status was set example: "2025-06-06T07:59:52.047Z" description: | Enhanced status object for payment consent with timestamp and optional reason details The status value of the payment consent: - Open: Initial state when consent is requested but not yet granted - Cancelled: Consent was revoked - Rejected: Consent was denied - Expired: Consent expired (timed out) before being granted - Authorised: Consent was successfully granted and can proceed to authorisation `Wero Consent Status Mapping` | Value | Value at Wero's Consent | |------:|---------| | Open | Requested | | Cancelled | Revoked | | Rejected | Denied | | Expired | Timed Out | | Authorised | Granted | PaymentAuthorisationStatus: type: object required: - Value - At properties: Value: type: string enum: [Open, Authorised, Error, Cancelled, Rejected] At: type: string format: date-time description: ISO 8601 timestamp when the status was set example: "2025-06-06T07:59:52.047Z" Reason: type: string description: Human-readable reason for the status (especially relevant for error/rejection cases) example: "Insufficient funds" ReasonCode: type: string description: Machine-readable ISO 20022 reason code example: "AM04" description: | Enhanced status object for payment authorisation with timestamp and optional reason details The status value of the payment authorisation: - Initial: Authorisation was successfully initiated - Authorised: Authorisation was successfully granted (funds reserved) - Error: Authorisation failed - Cancelled: Authorisation was cancelled - Rejected: Authorisation was rejected `Wero Payment Status Mapping` | Value | Value at Wero's Consent | |------:|---------| | Open | Initial | | Authorised | Granted | | Error | Failed | | Cancelled | Cancelled | | Rejected | Rejected | CaptureStatus: type: object required: - Value - At properties: Value: type: string enum: [Open, SettlementInProcess, Pending, Error, Rejected, SettlementCompleted] At: type: string format: date-time description: ISO 8601 timestamp when the status was set example: "2025-06-06T07:59:52.047Z" Reason: type: string description: Human-readable reason for the status (especially relevant for error/cancellation cases) example: "Technical error during settlement" ReasonCode: type: string description: Machine-readable ISO 20022 reason code example: "TECH" description: | Enhanced status object for capture with timestamp and optional reason details The status value of an individual capture request: - Open: Capture request was accepted - SettlementInProcess: Capture is being processed - Pending: Capture is pending processing - Error: Capture request failed - Rejected: Capture request was rejected - SettlementCompleted: Capture has been settled successfully `Wero Capture Status Mapping` | Value | Value at Wero | |------:|---------| | Open | Accepted | | Pending | Pending | | Error | Failed | | Rejected | Rejected | | SettlementCompleted | Settled | SessionData: type: object description: | Contains all PSU session information, HTTP headers, device information, and locale settings captured from the PSU's interaction with the TPP. properties: LastLogin: type: string format: date-time description: | PSU Session information. The time when the PSU last logged in with the TPP. ISO 8601 DateTime. PsuIpPort: maxLength: 5 minLength: 1 type: string description: | PSU Session information. The forwarded IP Port header field consists of the corresponding HTTP request IP Port field between PSU and TPP, if available. HttpMethod: maxLength: 6 minLength: 3 type: string description: | PSU Session information. HTTP method used at the PSU-TPP interface. Available values - GET, POST, PUT, DELETE. enum: [GET, POST, PUT, DELETE] HttpHeaderUserAgent: maxLength: 500 minLength: 1 type: string description: | PSU Session information. The forwarded Agent header field of the HTTP request between PSU and TPP. HttpHeaderReferer: maxLength: 500 minLength: 1 type: string description: | PSU Session information. The forwarded Referer header field of the HTTP request between PSU and TPP. HttpHeaderAccept: maxLength: 500 minLength: 1 type: string description: | PSU Session information. The forwarded IP Accept header fields consist of the corresponding HTTP request Accept header fields between PSU and TPP. HttpHeaderAcceptCharset: maxLength: 500 minLength: 1 type: string description: | PSU Session information. The forwarded IP Accept-Charset header fields consist of the corresponding HTTP request Accept-Charset header fields between PSU and TPP. HttpHeaderAcceptEncoding: maxLength: 500 minLength: 1 type: string description: | PSU Session information. The forwarded IP Accept-Encoding header fields consist of the corresponding HTTP request Accept-Encoding header fields between PSU and TPP. HttpHeaderAcceptLanguage: maxLength: 500 minLength: 1 type: string description: | PSU Session information. The forwarded IP Accept-Language header fields consist of the corresponding HTTP request Accept-Language header fields between PSU and TPP. DeviceId: maxLength: 500 minLength: 1 type: string description: | UUID (Universally Unique Identifier) for a device, which is used by the PSU. UUID identifies either a device or a device dependent application installation. In case of an installation identification this ID need to be unaltered until removal from device. GeoLocation: maxLength: 500 minLength: 1 type: string description: | The forwarded Geo Location of the corresponding http request between PSU and TPP. PrintOptions: type: object properties: Lifetime: type: integer description: | The lifetime for the consent that is specified in minutes. Print artefacts such as invoices can use the lifetime value to highlight the time constraint on receiving payment. The default is 12 weeks (120,960 minutes), and the maximum allowed lifetime is 24 weeks (241,920 minutes). default: 120960 minimum: 1 maximum: 241920 Format: type: array items: $ref: '#/components/schemas/PrintOptionFormat' PrintOptionFormat: type: string enum: ["PrintQR", "PrintLink"] PsuData: type: object description: | Extended PSU data including ASPSP identification, PSU identification, and session information. This object consolidates all PSU-related data and session information from the PSU's interaction with the TPP. properties: PsuId: type: string description: | If this field is filled the Open Banking Service will try to retrieve previously stored information to complete the payment. The Open Banking Solution will check for a pre authentication token in case pre-authentication is available for the ASPSP. AspspId: minLength: 1 type: string description: | The Id of the ASPSP. The Open Banking Service needs this information for PSD2 payments to route the payment. It has to be either provided in this field or by the PSU in the Bank Selection Interface. AspspProductCode: type: string description: | This is describing the ProductCode as defined by the ASPSP. AspspPsuId: type: string example: Psu-12345 description: | PSU's Id at ASPSP. Allows the unique identification of the PSU at the ASPSP. AspspCustomerId: type: string example: Psu-12345 description: | PSU's second Id at ASPSP. Required for some ASPSPs AspspPsuIdType: type: string description: | Type of the ASPSP PSU-ID, needed in scenarios where PSU's have several PSU-IDs as access possibility. AspspPsuCorporateId: type: string description: | Identification of a Corporate in the Online Channels. AspspPsuCorporateIdType: type: string description: | This is describing the type of the identification needed by the ASPSP to identify the PsuCorporate-ID content. Country: type: string minLength: 2 maxLength: 2 pattern: '[A-Z]{2,2}' example: FR description: It is used to select a preferred country that is pre-selected on the bank selection page. SessionData: $ref: '#/components/schemas/SessionData' PaymentInitiationRequest: description: | Payment Initiation Request required: - CommonPaymentData properties: PaymentProduct: type: array description: | Multiple PaymentProducts can only be supplied if `UseAuthorisationLandingPages` equals `TRUE`. These will then influence ASPSPs visible to the PSU on the Bank Selection Interface. The IDEAL payment product cannot be mixed with the other PSD2-xxxx payment products, because it requires a separate subscription and therefore uses a different authorization token. items: $ref: '#/components/schemas/PaymentProductEnum' PaymentProductChangeable: type: boolean default: false description: | Allowing PSU to change pre-selected payment product if the ASPSP supports more than one from the list provided by the Initiating Party. Usable only if `UseAuthorisationLandingPages` equals `TRUE`. Otherwise will be ignored. ProductSpecificMasterData: type: array description: | The array is defined to mention the master data specific to selected payment product items: $ref: '#/components/schemas/ProductSpecificMasterData' PsuData: $ref: '#/components/schemas/PsuData' CommonPaymentData: $ref: '#/components/schemas/PaymentInitiationRequestBasic' InitiatingPartyNotificationUrl: maxLength: 4000 minLength: 1 type: string description: | The URL which will be used for notification service request. Only v4 notification service is supported for v4 payments InitiatingPartyReturnUrl: maxLength: 4000 minLength: 1 type: string description: | The callback URL for the redirection back to the initiating party after authorization. example: https://www.example.org PaymentInitiationRequestBasic: type: object required: - InitiatingPartyReferenceId - Amount properties: UsePreAuthentication: type: boolean default: false description: | This field is only applicable for Aspsp which support pre-authentication. It can also be filled in payments toward other ASPSP's, but the value will then be ignored. * If set to true the Open Banking Service will store the pre-authentication token for use with future payments. This will only work if also a PsuId is provided which is stored in the Open Banking Service. * If set to false the pre-authentication token will only be used to finish one payment. After which it will be discarded. EndToEndId: maxLength: 35 minLength: 1 type: string description: | Unique identification, as assigned by the initiating party, to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. Required for PSD2 payments example: ID-0123456789 InitiatingPartyReferenceId: maxLength: 36 minLength: 1 type: string description: | Reference to the payment created by the Initiating Party. This Id will not be visible to the Payment Service User. example: InitParty ref-id-23457890 PreferredScaMethod: type: array description: | Multiple preferred methods can be chosen. It is not guaranteed that the ASPSP will use the preferred method. items: type: string enum: - Redirect - Decoupled - Embedded Amount: $ref: '#/components/schemas/Amount' DebtorInformation: $ref: '#/components/schemas/DebtorInformation' CreditorInformation: $ref: '#/components/schemas/CreditorInformation' ChargeBearer: type: string description: | Charge bearer. Note - ISO20022 ChargeBearerType1Code. enum: - DEBT - CRED - SHAR - SLEV PurposeCode: type: string description: | Specifies the purpose code that resulted in a payment initiation. Fill with a 4 characters code from the ExternalPurpose1Code list published by ISO20022 or use the values 'Commerce', 'Carpark', 'Transport'. CategoryPurpose: $ref: '#/components/schemas/CategoryPurposeEnum' PaymentContext: $ref: '#/components/schemas/RiskInformation' CrossCurrencyPayments: $ref: '#/components/schemas/CrossCurrencyPayment' RegulatoryReportingCodes: maxItems: 10 minItems: 1 type: array description: | List of needed regulatory reporting codes for international payments items: $ref: '#/components/schemas/RegulatoryReportingCode' x-DefinitionType: ISO20022 RemittanceInformation: maxLength: 140 minLength: 1 type: string description: | Information supplied to enable the matching of an entry with the items that the transfer is intended to settle. This information will be visible to the Payment Service User. RemittanceInformationStructured: $ref: '#/components/schemas/RemittanceInformationStructured' PrintOptions: $ref: '#/components/schemas/PrintOptions' RequestedExecutionDate: type: string description: | Date of first payment execution. ISO 8601 DateTime. format: date-time description: | Basic type for Payment Initiation Request PaymentInitiationResponse: type: object properties: CommonPaymentData: $ref: '#/components/schemas/CommonPaymentDataResponse' Links: $ref: '#/components/schemas/Links' UseWaitingScreen: type: boolean description: | if `true` the IP should show a waiting screen even if the the RedirectUrl is provided. On the waiting screen a redirection button should be placed. Click on the button should redirect the PSU by the link from `RedirectUrl` description: | Payment Initiation Response CommonPaymentDataDetails: type: object properties: DebtorInformation: $ref: '#/components/schemas/DebtorInformationResponse' AmountRelatedDetails: $ref: '#/components/schemas/AmountRelatedDetails' AuthorisationRequiredData: $ref: '#/components/schemas/AuthorisationRequiredData' Links: $ref: '#/components/schemas/Links' PsuMessage: maxLength: 1024 minLength: 1 type: string description: | Text to be displayed to the PSU. CommonPaymentDataResponse: type: object required: - PaymentId - PaymentStatus properties: ExpiryDateTimestamp: type: string format: date-time description: | The timestamp from which the transaction operation will expire, expressed in UTC time format(YYYY-MM-DDThh:mm:ss.sssZ) PaymentStatus: $ref: '#/components/schemas/PaymentStatus' PaymentId: type: string format: uuid description: | Id generated by the Open Banking Service. This should be used to refer to this payment in subsequent api calls. ExternalPaymentId: maxLength: 256 minLength: 1 type: string description: | Id used by the ASPSP to refer to the payment. AspspId: maxLength: 35 minLength: 1 type: string description: | Id of the ASPSP selected by the PSU. AspspPsuId: type: string example: Psu-12345 description: | PSU's Id at ASPSP. Allows the unique identification of the PSU at the ASPSP. DebtorInformation: $ref: '#/components/schemas/DebtorInformationResponse' AmountRelatedDetails: $ref: '#/components/schemas/AmountRelatedDetails' AuthorisationRequiredData: $ref: '#/components/schemas/AuthorisationRequiredData' PsuMessage: maxLength: 1024 minLength: 1 type: string description: | Text to be displayed to the PSU. PaymentDetailedInformation: type: object properties: PaymentProductUsed: $ref: '#/components/schemas/PaymentProductEnum' CommonPaymentData: $ref: '#/components/schemas/CommonPaymentDataResponse' Links: $ref: '#/components/schemas/Links' UseWaitingScreen: type: boolean description: | if `true` the Initiating Party should show a waiting screen even if the the RedirectUrl is provided. On the waiting screen a redirection button should be placed. Click on the button should redirect the PSU to the link provided in the `RedirectUrl` field. description: | Payment Status Response BulkPaymentInitiationRequest: description: | Bulk Payment Initiation Request required: - CommonPaymentData properties: PaymentProduct: type: array description: | Multiple PaymentProducts can only be supplied if `UseAuthorisationLandingPages` equals `TRUE`. These will then influence ASPSPs visible to the PSU on the Bank Selection Interface. items: $ref: '#/components/schemas/PaymentProductEnum' PaymentProductChangeable: type: boolean default: false description: | Allowing a PSU to change the pre-selected payment product if the ASPSP supports more than one from the list provided by the Initiating Party. Usable only if `UseAuthorisationLandingPages` equals `TRUE`. Otherwise will be ignored. ProductSpecificMasterData: type: array description: | The array is defined to mention the master data specific to selected payment product items: $ref: '#/components/schemas/ProductSpecificMasterData' PsuData: $ref: '#/components/schemas/PsuData' CommonPaymentData: $ref: '#/components/schemas/BulkPaymentInitiationRequestBasic' InitiatingPartyNotificationUrl: maxLength: 4000 minLength: 1 type: string description: | The URL which will be used for notification service request. Only v4 notification service is supported for v4 payments InitiatingPartyReturnUrl: maxLength: 4000 minLength: 1 type: string description: | The callback URL for the redirection back to the initiating party after authorization. example: https://www.example.org BulkPaymentInitiationRequestBasic: type: object required: - InitiatingPartyReferenceId - Payments properties: UsePreAuthentication: type: boolean default: false description: | This field is only applicable for ASPSP's which support pre-authentication. It can also be filled in payments toward other ASPSP's, but the value will then be ignored. * If set to true the Open Banking Service will store the pre-authentication token for use with future payments. This will only work if also a PsuId is provided which is stored in the Open Banking Service. * If set to false the pre-authentication token will only be used to finish one payment. After which it will be discarded. InitiatingPartyReferenceId: maxLength: 36 minLength: 1 type: string description: | Reference to the payment created by the Initiating Party. This Id will not be visible to the Payment Service User. example: InitParty ref-id-23457890 PreferredScaMethod: type: array description: | Multiple preferred methods can be chosen. It is not guaranteed that the ASPSP will use the preferred method. items: type: string enum: - Redirect - Decoupled - Embedded DebtorInformation: $ref: '#/components/schemas/DebtorInformation' ChargeBearer: type: string description: | Charge bearer. Note - ISO20022 ChargeBearerType1Code. enum: - DEBT - CRED - SHAR - SLEV CategoryPurpose: $ref: '#/components/schemas/CategoryPurposeEnum' PaymentContext: $ref: '#/components/schemas/RiskInformation' Payments: type: array items: $ref: '#/components/schemas/BulkPaymentsDetails' description: | Basic type for Bulk Payment Initiation Request BulkPaymentsDetails: required: - EndToEndId - Amount type: object properties: EndToEndId: maxLength: 35 minLength: 1 type: string description: | Unique identification, as assigned by the Initiating Party, to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage: The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction. Required for PSD2 payments example: ID-0123456789 Amount: $ref: '#/components/schemas/Amount' CreditorInformation: $ref: '#/components/schemas/CreditorInformation' PurposeCode: type: string description: | Specifies the purpose code that resulted in a payment initiation. Fill with a 4 characters code from the ExternalPurpose1Code list published by ISO20022 or use the values 'Commerce', 'Carpark', 'Transport'. CrossCurrencyPayments: $ref: '#/components/schemas/CrossCurrencyPayment' RegulatoryReportingCodes: maxItems: 10 minItems: 1 type: array description: | List of needed regulatory reporting codes for international payments items: $ref: '#/components/schemas/RegulatoryReportingCode' x-DefinitionType: ISO20022 RemittanceInformation: maxLength: 140 minLength: 1 type: string description: | Information supplied to enable the matching of an entry with the items that the transfer is intended to settle. This information will be visible to the Payment Service User. RemittanceInformationStructured: $ref: '#/components/schemas/RemittanceInformationStructured' CommonPaymentDataAuthorisationResponse: type: object required: - PaymentId - PaymentStatus properties: PaymentId: type: string format: uuid description: | Id generated by the Open Banking Service. This should be used to refer to this payment in subsequent api calls. PaymentStatus: $ref: '#/components/schemas/PaymentStatus' TransactionFees: $ref: '#/components/schemas/TransactionFees' AuthorisationRequiredData: $ref: '#/components/schemas/AuthorisationRequiredData' PsuMessage: maxLength: 1024 minLength: 1 type: string description: | Text to be displayed to the PSU. PaymentCancellationResponse: type: object properties: CommonPaymentData: $ref: '#/components/schemas/CommonPaymentDataAuthorisationResponse' Links: $ref: '#/components/schemas/Links' PaymentProductEnum: type: string default: PSD2-SCT description: | Indicates the requested payment method. enum: - PSD2-SCT - PSD2-SCT-Inst - PSD2-Target2 - PSD2-Domestic - PSD2-Domestic-Inst - Wero ProductSpecificMasterData: type: object required: - ParamName - ParamValue properties: ParamName: type: string minLength: 1 maxLength: 250 description: | Name of the parameter exactly as required by the payment method. ParamValue: type: string minLength: 1 maxLength: 2048 description: | Actual value of the parameter. PaymentAuthorisationRequest: type: object required: - InstructedAmount properties: InitiatingPartyReferenceId: maxLength: 36 minLength: 1 type: string description: | Reference to the payment created by the Initiating Party. This Id will not be visible to the Payment Service User. Conditionally mandatory in case the `PaymentConsentId` is not presented example: InitParty ref-id-23457890 PaymentConsentId: type: string format: uuid description: | Unique identifier of the payment consent generated by the Open Banking Service. InstructedAmount: description: | Amount requested from the API client to be executed by the ASPSP. Mandatory for XDPIS, XDFPIS, XRPIS and XRFPIS. If not contained in a XMDPIS service, then this is a dedicated closing transaction. This amount shall be smaller or equal to the amount still being reserved in the XDPIS/XDFPIS/XMPIS/XMFPIS case (current reservedAmount) allOf: - $ref: '#/components/schemas/Amount' ProductSpecificMasterData: type: array description: | The array is defined to mention the master data specific to selected payment product items: $ref: '#/components/schemas/ProductSpecificMasterData' RemittanceInformation: maxLength: 140 minLength: 1 type: string description: | Information supplied to enable the matching of an entry with the items that the transfer is intended to settle. This information will be visible to the Payment Service User. RemittanceInformationStructured: $ref: '#/components/schemas/RemittanceInformationStructured' PaymentAuthorisationDetails: type: object description: | Payment Authorisation details required: - PaymentAuthorisationStatus - PaymentAuthorisationId properties: PaymentConsentId: type: string format: uuid description: | Unique identifier of the payment consent generated by the Open Banking Service. PaymentAuthorisationStatus: $ref: '#/components/schemas/PaymentAuthorisationStatus' PaymentAuthorisationId: type: string format: uuid description: | Unique identifier of the payment authorisation generated by the Open Banking Service. ExternalPaymentAuthorisationId: type: string maxLength: 256 minLength: 1 description: | Unique identifier of the payment authorisation assigned by the ASPSP. AspspPsuId: type: string example: Psu-12345 description: | PSU's Id at ASPSP. Allows the unique identification of the PSU at the ASPSP. TechnicalReason: type: string maxLength: 512 description: | Technical failure reason. **Applicable For**: PaymentAuthorisationStatus.value = Error Provides technical details about the failure, such as: - "Timeout communicating with authorisation system" - "Invalid account status" - "ASPSP system unavailable" DebtorInformation: $ref: '#/components/schemas/DebtorInformationResponse' CaptureRequest: type: object required: - InstructedAmount properties: InstructedAmount: description: | Amount requested from the API client to be executed by the ASPSP. Mandatory for XDPIS, XDFPIS, XRPIS and XRFPIS. If not contained in a XMDPIS service, then this is a dedicated closing transaction. This amount shall be smaller or equal to the amount still being reserved in the XDPIS/XDFPIS/XMPIS/XMFPIS case (current reservedAmount) allOf: - $ref: '#/components/schemas/Amount' ProductSpecificMasterData: type: array description: | The array is defined to mention the master data specific to selected payment product items: $ref: '#/components/schemas/ProductSpecificMasterData' RemittanceInformation: maxLength: 140 minLength: 1 type: string description: | Information supplied to enable the matching of an entry with the items that the transfer is intended to settle. This information will be visible to the Payment Service User. RemittanceInformationStructured: $ref: '#/components/schemas/RemittanceInformationStructured' ClosingFlag: description: | If true, then the TPP indicates that this is the last initiation on the related payment resource. As a consequence, the mechanism for securing the payment (e.g. reservation of funds) is closed in the ASPSP system. type: boolean CaptureDetails: type: object description: | Capture details required: - CaptureStatus - PaymentAuthorisationId - CaptureId properties: CaptureStatus: $ref: '#/components/schemas/CaptureStatus' PaymentAuthorisationId: type: string format: uuid description: | Identifier of the payment authorisation that this capture relates to. Links the capture back to the original authorisation where funds were reserved. CaptureId: type: string format: uuid description: | Unique identifier of the capture generated by Open Banking Services ExternalCaptureId: type: string maxLength: 256 minLength: 1 description: | Unique identifier of the capture assigned by the ASPSP. TechnicalReason: type: string maxLength: 512 description: | Technical failure reason. **Applicable For**: CaptureStatus.value = Error Provides technical details about the failure, such as: - "Settlement system timeout" - "Invalid capture request format" - "ASPSP settlement service unavailable" OriginatorPspReference: type: string maxLength: 35 description: | Originator PSP reference identifier. Reference assigned by the originating PSP (TPP) for tracking purposes. SettlementMethod: type: string description: | Settlement method used for the capture. **Applicable For**: CaptureStatus.value = SettlementCompleted **Settlement Methods:** - `SCTInst`: SEPA Credit Transfer Instant (real-time settlement) - `OnUs`: On-us transfer (same bank, instant settlement) - `FinancialGuarantees`: Settlement via financial guarantee mechanism enum: - SCTInst - OnUs - FinancialGuarantees Amount: required: - Amount type: object properties: Amount: pattern: ^\d{1,13}(\.\d{1,5})?$ type: string description: | Amount of the payment. The decimal separator is a dot. NOTE outgoing amount would be adjusted to the limitations of the recieving systems Example: BG standard requires a maximum of 3 digits after the dot 5877.783 example: "123.45" Currency: pattern: '[A-Z]{3,3}' type: string description: | Currency of the payment. ISO 4217 currency codes should be used. example: EUR default: EUR AmountRelatedDetails: type: object description: | contains additional information about the fees and estimated amount properties: FundsAvailable: type: boolean description: | Information whether sufficient funding is available. TransactionFees: $ref: '#/components/schemas/TransactionFees' ExchangeRateInformation: $ref: '#/components/schemas/ExchangeRateInformationResponse' CurrencyConversionFee: $ref: '#/components/schemas/CurrencyConversionFee' EstimatedTotalAmount: $ref: '#/components/schemas/EstimatedTotalAmount' EstimatedInterbankSettlementAmount: $ref: '#/components/schemas/EstimatedInterbankSettlementAmount' ValueAndSource: type: object properties: Value: type: string Source: type: string DebtorInformation: type: object description: | All debtor relavant data properties: Name: maxLength: 140 type: string description: | The name of the debtor. Agent: type: string pattern: '[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}' description: | BIC of the financial institution servicing an account for the debtor. Account: $ref: '#/components/schemas/DebtorAccount' UltimateDebtor: maxLength: 140 type: string description: | Ultimate party that owes an amount of money to the (ultimate) creditor. ShippingAddress: $ref: '#/components/schemas/AddressData' BillingAddress: $ref: '#/components/schemas/BillingAddress' DebtorAccount: required: - Identification type: object properties: SchemeName: $ref: '#/components/schemas/IdentificationTypeEnum' Identification: type: string description: | Unambiguous identification of the account of the debtor to which a debit entry will be made as a result of the transaction. SecondaryIdentification: type: string description: | Secondary identification of the Debtor Account, to which a debit entry will be made as a result of the transaction. (Only Openbank UK) Currency: pattern: '[A-Z]{3,3}' type: string description: | A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". DebtorInformationResponse: type: object description: | All debtor relavant data properties: Name: $ref: '#/components/schemas/ValueAndSource' Agent: type: string pattern: '[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}' description: | BIC of the financial institution servicing an account for the creditor. SchemeName: $ref: '#/components/schemas/IdentificationTypeEnum' Identification: $ref: '#/components/schemas/ValueAndSource' SecondaryIdentification: $ref: '#/components/schemas/ValueAndSource' Currency: pattern: '[A-Z]{3,3}' type: string description: | A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". ContactDetails: $ref: '#/components/schemas/DebtorContactDetailsResponse' ShippingAddress: $ref: '#/components/schemas/AddressData' BillingAddress: $ref: '#/components/schemas/AddressData' CreditorInformation: type: object description: | All creditor relavant data properties: InitiatingPartySubId: maxLength: 50 minLength: 1 type: string description: | External identification of the subsidiary initiating party. Name: type: string description: | The name of creditor. Can be given for P2P payments only. Account: $ref: '#/components/schemas/CreditorAccount' Agent: pattern: '[A-Z0-9]{4,4}[A-Z]{2,2}[A-Z0-9]{2,2}([A-Z0-9]{3,3}){0,1}' type: string description: | BIC of the financial institution servicing an account for the creditor. UltimateCreditor: maxLength: 140 type: string description: | Ultimate party to which an amount of money is due. PostalAddress: $ref: '#/components/schemas/AddressData' CreditorDateAndPlaceOfBirth: $ref: '#/components/schemas/CreditorDateAndPlaceOfBirth' CreditorAccount: type: object properties: SecondaryIdentification: type: string description: | Secondary identification of the Creditor Account, to which a credit entry will be made as a result of the transaction. (Only Openbank UK) SchemeName: $ref: '#/components/schemas/IdentificationTypeEnum' Identification: type: string description: | Identification of the Creditor Account. Can be given for P2P payments only. Currency: pattern: '[A-Z]{3,3}' type: string description: | A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". IdentificationTypeEnum: type: string description: | Type of the account number. enum: - IBAN - BBAN - SortCodeAccountNumber AuthorisationRequiredData: type: object description: | The data required for PSU authentication and transaction authorisation properties: AuthorisationId: type: string description: | The ID of the authorisation PsuCredentials: type: array description: | List of credentials the PSU has on the ASPSP's system. The PSU has to provide the CredentialValue for each of these (Username & Password). items: $ref: '#/components/schemas/PsuCredentials' ScaMethods: type: array description: | Array of available ScaMethods. items: $ref: '#/components/schemas/ScaMethods' ChosenScaMethod: $ref: '#/components/schemas/ScaMethods' ChallengeData: $ref: '#/components/schemas/ScaChallengeData' ScaMethods: required: - AuthenticationMethodId type: object properties: AuthenticationType: type: string description: | Type of the SCA authentication method. The following methods are commonly seen coming from the ASPSP. The list is not limited with provided examples - SMS_OTP: The PSU will receive a One Time Password via SMS - CHIP_OTP: The PSU will be presented with a picture or text to create a One Time Password using their bank card - PHOTO_OTP: The PSU will be presented with a picture to create a One Time Password - PUSH_OTP: The PSU will receive a One Time Password via push notification on their mobile device - SMTP_OTP: The PSU will receive a One Time Password via email AuthenticationMethodId: minLength: 1 type: string description: | Id of the authentication method. Used in subsequent API calls to refer to the authentication method. Version: minLength: 1 type: string description: | Version of the method. Name: minLength: 1 type: string description: | Name of the method in readable form. This name shall be used by the TPP when presenting a list of authentication methods to the PSU, if available. Explanation: minLength: 1 type: string description: | Detailed information about the SCA method, meant for the PSU. ScaChallengeData: type: object properties: AdditionalInformation: type: string description: | Additional Information for the PSU describing the method. Data: type: array description: | A collection of strings as challenge data. items: type: string Image: type: string description: | Image in base64 encoding ImageLink: type: string description: | URL of image OTPFormat: type: string description: | The OTP format. OTPMaxLength: type: integer description: | The maximum length for the OTP. format: int32 description: | JSON DTO used to represent challenge data. PsuCredentials: required: - CredentialsDetails type: object properties: AspspProductCode: type: string description: | Product Identification. Used to contextualize the credentials provided by the PSU for those ASPSP that need of it. CredentialsDetails: type: array description: Credentials Details items: $ref: '#/components/schemas/CredentialDetails' description: | PSU Credentials on the Bank system. CredentialDetails: required: - CredentialId - IsSecret - LabelList type: object properties: IsSecret: type: boolean description: | Binary identification of the transparency of the provided credentials by the PSU. Can have 2 values, * true * false Can be provided by ASPSP. If not provided by the ASPSP then by default, * true, if the CredentialId=ewl-password * false, if CredentialId=ewl-user-id CredentialId: type: string description: | Credential detail identification of the PSU credential at the bank (provided bi CBI if approach is Embedded). If not provided by the ASPSP, then default values should be, * ewl-user-id, when IsSecret=false * ewl-password, when IsSecret=true LabelList: type: array description: | The list of the labels to show to the PSU. They are internationalized. items: $ref: '#/components/schemas/CredentialLabel' description: | Credentials Details. CredentialLabel: required: - Label - Language type: object properties: Label: type: string description: | The label associated to the credentials to show to the PSU. Language: type: string description: | Label internationalization. It specifies the language of the label. The default value is EN DebtorContactDetailsResponse: type: object properties: FirstName: type: string description: | The first name of the debtor LastName: type: string description: | The last name of the debtor PhoneNumber: type: string description: | The phone number of the debtor in E.164 format pattern: "^\\+[1-9][0-9]{1,14}$" example: "+31612345678" Email: type: string description: | The e-mail address of the debtor format: email example: "bob.smith@mymail.com" minLength: 1 AddressData: type: object properties: FirstName: type: string description: | The first name of the debtor example: "Bob" minLength: 1 LastName: type: string description: | The last name of the debtor example: "Smith" minLength: 1 CompanyName: type: string description: | The company name of the debtor example: "Cookie factory" minLength: 1 PostCode: type: string description: | The postal code of the address without spaces example: "1234AB" minLength: 1 BuildingNumber: type: string description: | The house number of the address example: "100" minLength: 1 Floor: type: string description: | The addition of the address example: "3B" minLength: 1 StreetName: type: string description: | The street of the address example: "Coolsingel" minLength: 1 TownName: type: string description: | The city of the address example: "Rotterdam" minLength: 1 Country: type: string minLength: 2 maxLength: 2 pattern: '[A-Z]{2,2}' example: FR description: It is used to select a preferred country that is pre-selected on the bank selection page. CountrySubDivision: type: string description: | Country sub division. maxLength: 35 minLength: 1 BillingAddress: type: object properties: SameAsShippingAddress: type: boolean default: false description: | Indicates whether the billing address is the same with shipping address. If true the information provided under `BillingAddressDetails` will be ignored BillingAddressDetails: $ref: '#/components/schemas/AddressData' CreditorDateAndPlaceOfBirth: required: - BirthDate - CityOfBirth - CountryOfBirth type: object properties: BirthDate: type: string description: Date on which a person is born. format: date CityOfBirth: maxLength: 35 type: string description: City where a person was born. CountryOfBirth: pattern: '^[A-Z]{2,2}$' type: string description: Country where a person was born. description: | Date and place of birth of a person. This information must be requested for detection of Fraud, Money-Laundering and Terrorism Financing in case of international payment. x-DefinitionType: ISO20022 PaymentStatus: type: object required: - Value - At properties: Value: $ref: '#/components/schemas/PaymentStatusEnum' At: type: string format: date-time description: ISO 8601 timestamp when the status was set example: "2025-06-06T07:59:52.047Z" Reason: type: string description: Human-readable reason for the status (especially relevant for error/rejection cases) example: "Payee account not found" ReasonCode: type: string description: Machine-readable ISO 20022 reason code example: "AC01" description: | Enhanced status object for payment with timestamp and optional reason details PaymentStatusEnum: type: string description: | Payment status. enum: - Open - Authorised - PartiallyAuthorised - Pending - SettlementInProcess - SettlementCompleted - ReceivedByCreditorBank - ReceivedOnCreditorAccount - Rejected - Cancelled - CancelledAtTpp - TimeoutAtTpp - Error - Expired RiskInformation: type: object properties: PaymentContextCode: type: string description: | Specifies the payment context. Payments for EcommerceGoods and EcommerceServices will be expected to have a MerchantCategoryCode and MerchantCustomerIdentification populated. Payments for EcommerceGoods will also have the DeliveryAddress populated. enum: - BillPayment - ContactlessTravel - EcommerceGoods - EcommerceServices - Kiosk - Parking - P2P - BillingGoodsAndServicesInAdvance - BillingGoodsAndServicesInArrears - PispPayee - EcommerceMerchantInitiatedPayment - FaceToFacePointOfSale - TransferToSelf - TransferToThirdParty MerchantCategoryCode: maxLength: 4 minLength: 3 type: string description: | Category code conform to ISO 18245, related to the type of services or goods the merchant provides for the transaction. MerchantCustomerId: maxLength: 70 minLength: 1 type: string description: | The unique customer identifier of the PSU with the merchant. DeliveryAddress: allOf: - $ref: '#/components/schemas/AddressData' deprecated: true description: | The Object is deprecated and will be ignored in the current implementation. Use `DebtorInformation.ShippingAddress` from `CommonPaymentData` object instead ChannelType: type: string description: | Payment channel type. enum: - ContactLess - PointOfSale - Ecommerce - UnattendedTerminal ChannelMetaData: type: string description: | Additional information related to the channel. AppliedAuthenticationApproach: type: string description: | Indicates the Applied Authentication Approach enum: - CA - SCA ReferencePaymentOrderId: type: string description: | Indicates the Applied Authentication Approach maxLength: 128 description: | Information used for risk scoring by the ASPSP. TransactionFees: type: object properties: Currency: pattern: '[A-Z]{3,3}' type: string description: | A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". Amount: pattern: ^\d{1,13}(\.\d{1,5})?$ type: string description: | Amount of the fees. FeesApply: type: boolean default: false description: | Indicates if transaction fees are applicable on the payment. description: | Information used for transporting transaction fees by the ASPSP. CurrencyConversionFee: type: object required: - Currency - Amount properties: Currency: pattern: '[A-Z]{3,3}' type: string description: | A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". Amount: pattern: ^\d{1,13}(\.\d{1,5})?$ type: string description: | Amount of the fees. description: | Currency Conversion Fee CrossCurrencyPayment: type: object required: - CrossCurrencyTransaction properties: CrossCurrencyTransaction: type: boolean default: false description: | Set to true if a currency exchange is required. If set to true the ExchangeRateInformation section can be used. ExchangeRateInformation: $ref: '#/components/schemas/ExchangeRateInformationRequest' ExchangeRateInformationRequest: type: object properties: UnitCurrency: pattern: '[A-Z]{3,3}' type: string description: | Currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR, the unit currency is GBP. ExchangeRate: type: number description: | The factor used for conversion of an amount from one currency to another. This reflects the price at which one currency was bought with another currency. Rate expressed as a decimal, for example, 0.7 is 7/10 and 70%. RateType: type: string description: | Specifies the type used to complete the currency exchange. * Spot: Exchange rate applied is the spot rate. * Sale: Exchange rate applied is the market rate at the time of the sale. * Agreed: Exchange rate applied is the rate agreed between the parties. enum: - Spot - Sale - Agreed ContractIdentification: maxLength: 256 type: string description: | Unique and unambiguous reference to the foreign exchange contract agreed between the initiating party/creditor and the debtor agent. description: | Provides details on the currency exchange rate and contract. ExchangeRateInformationResponse: type: object properties: UnitCurrency: pattern: '[A-Z]{3,3}' type: string description: | Currency in which the rate of exchange is expressed in a currency exchange. In the example 1GBP = xxxCUR, the unit currency is GBP. ExchangeRate: type: number description: | The factor used for conversion of an amount from one currency to another. This reflects the price at which one currency was bought with another currency. Rate expressed as a decimal, for example, 0.7 is 7/10 and 70%. RateType: type: string description: | Specifies the type used to complete the currency exchange. * Spot: Exchange rate applied is the spot rate. * Sale: Exchange rate applied is the market rate at the time of the sale. * Agreed: Exchange rate applied is the rate agreed between the parties. enum: - Spot - Sale - Agreed ContractIdentification: maxLength: 256 minLength: 1 type: string description: | Unique and unambiguous reference to the foreign exchange contract agreed between the initiating party/creditor and the debtor agent. ExpirationDateTime: type: string description: | Expiration date time. ISO 8601 DateTime. format: date-time description: | Provides details on the currency exchange rate and contract. EstimatedTotalAmount: type: object required: - Currency - Amount properties: Currency: pattern: '[A-Z]{3,3}' type: string description: | A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". Amount: pattern: ^\d{1,13}(\.\d{1,5})?$ type: string description: | Amount description: | Estimated Total Amount. EstimatedInterbankSettlementAmount: type: object required: - Currency - Amount properties: Currency: pattern: '[A-Z]{3,3}' type: string description: | A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds". Amount: pattern: ^\d{1,13}(\.\d{1,5})?$ type: string description: | Amount description: | Estimated Interbank Settlement Amount. CategoryPurposeEnum: type: string description: | Specifies the high level purpose of the instruction based on a set of pre-defined categories. This is used by the initiating party to provide information concerning the processing of the payment. It is likely to trigger special processing by any of the agents involved in the payment chain. Not all of the given codes might be accepted by all banks. The standard for STET for example is limited to CASH, CORT, DVPM, INTC and TREA enum: - CASH - CORT - DIVI - DVPM - INTC - INTE - PENS - SALA - SSBE - SUPP - TAXS - TREA RegulatoryReportingCode: maxLength: 10 type: string description: | Information needed due to regulatory and statutory requirements. Economical codes to be used are provided by the National Competent Authority x-DefinitionType: ISO20022 RemittanceInformationStructured: required: - Reference type: object properties: Reference: type: string pattern: "[a-zA-Z0-9]{1,35}" maxLength: 255 minLength: 1 description: | The actual reference. For BG supporting ASPSPs the maxLength = 35 ReferenceType: maxLength: 35 minLength: 1 type: string description: | Reference type. ReferenceIssuer: maxLength: 35 minLength: 1 type: string description: | Identification of the issuer of the ReferenceType. ExchangeRateRequest: type: object additionalProperties: false properties: Amount: pattern: ^\d{1,13}\.\d{1,5}$ type: string description: | Amount of the payment. Amount to be converted. The decimal separator is a dot. example: "123.45" TargetCurrency: pattern: '[A-Z]{3,3}' type: string description: | Currency of the payment. The currency being referenced or converted from. ISO 4217 currency codes should be used. example: CHF UnitCurrency: pattern: '[A-Z]{3,3}' type: string description: | The currency against which the target currency is being measured. ISO 4217 currency codes should be used. example: EUR required: - Amount - TargetCurrency - UnitCurrency ExchangeRateResponse: type: object additionalProperties: false properties: ExchangeRateReferences: $ref: '#/components/schemas/ExchangeRateReferences' ExchangeRateInformation: $ref: '#/components/schemas/ExchangeRateInformation' CurrencyConversionFee: $ref: '#/components/schemas/CurrencyConversionFee' EstimatedTotalAmount: $ref: '#/components/schemas/EstimatedTotalAmount' ValidUntil: type: string description: | This exchange rate is valid until the next run of the scheduled batch to get new exchange rate details. ISO 8601 DateTime. format: date-time description: | ExchangeRateResponse required: - ExchangeRateInformation - CurrencyConversionFee - EstimatedTotalAmount - ValidUntil ExchangeRateReferences: type: object additionalProperties: false properties: SourceCurrencyReferenceId: maxLength: 35 minLength: 1 type: string description: | This should be used to refer to this exchange rate details for currency conversion from the new exchange rate table. TargetCurrencyReferenceId: maxLength: 35 minLength: 1 type: string description: | This should be used to reference the second entry ID in the exchange rate table row when cross-currency conversion is required, and two entries are selected for calculation. ExchangeRateInformation: type: object additionalProperties: false required: - UnitCurrency - ExchangeRate - RateType properties: UnitCurrency: pattern: '[A-Z]{3,3}' type: string description: | Currency in which the rate of exchange is expressed in a currency exchange. example: EUR ExchangeRate: type: number description: | The factor used for conversion of an amount from one currency to another. This reflects the price at which one currency was bought with another currency. Rate expressed as a decimal, for example, 0.7 is 7/10 and 70%. RateType: type: string description: | Specifies the type used to complete the currency exchange. * Spot: Exchange rate applied is the spot rate. enum: - Spot PaymentQrCodeResponse: type: object properties: MimeType: type: string example: image/png QrCodeImage: type: string format: byte RefundDetailedInformation: type: object additionalProperties: false required: - CommonPaymentData properties: CommonPaymentData: $ref: '#/components/schemas/CommonPaymentDataRefundResponse' Links: $ref: '#/components/schemas/Links' RefundInitiationRequest: type: object additionalProperties: false required: - InitiatingPartyReferenceId - Refunds properties: InitiatingPartyReferenceId: maxLength: 36 minLength: 1 type: string description: | Reference to the payment created by the Initiating Party. This Id will not be visible to the Payment Service User. example: InitParty ref-id-23457890 UsePreAuthentication: type: boolean default: false description: | Whether or not the pre-authentication token should be re-used. PreferredScaMethod: type: array items: type: string enum: - Redirect - Decoupled - Embedded PsuData: $ref: '#/components/schemas/PsuData' Refunds: type: array items: $ref: '#/components/schemas/Refund' description: | Refund Initiation Request CommonPaymentDataRefundResponse: type: object additionalProperties: false required: - RefundId - RefundStatus properties: RefundId: maxLength: 36 minLength: 1 type: string format: uuid description: | Id generated by the Open Banking Service. This should be used to refer to this refund in subsequent api calls. RefundStatus: $ref: '#/components/schemas/PaymentStatus' InitiatingPartyReferenceId: maxLength: 36 minLength: 1 type: string description: | Reference to the payment created by the Initiating Party. This Id will not be visible to the Payment Service User. example: InitParty ref-id-23457890 ExternalRefundId: maxLength: 256 minLength: 1 type: string description: | Reference to the refund created by the scheme. example: Refund reference scheme 71292111 AmountRelatedDetails: $ref: '#/components/schemas/AmountRelatedDetails' AuthorisationRequiredData: $ref: '#/components/schemas/AuthorisationRequiredData' PsuMessage: maxLength: 1024 minLength: 1 type: string description: | Text to be displayed to the PSU. AccountErrors: type: array items: $ref: '#/components/schemas/AccountError' description: | Basic type for Payment Initiation Response AccountError: type: object additionalProperties: false required: - PaymentId - Error properties: PaymentId: type: string format: uuid description: | Id generated by the Open Banking Service. This should be used to refer to this payment in subsequent api calls. Error: required: - Code - Message type: object additionalProperties: false properties: Code: pattern: '[0-9]{1,3}' type: string Message: maxLength: 140 minLength: 1 type: string description: | |Code |Description |-----|--------------------------------------- |001 |The payment is not authorized. |002 |The payment is not confirmed. |003 |The refund amount is above the payment amount or the remaning payment amount. |004 |The creditor account does not match the initial payment debtor account. |005 |No existing payment found for the paymentId you provided. |006 |Both Identification and SchemeName fields are mandatory for the CreditorAccount. |007 |The refund currency does not match the initial payment currency. |008 |The payment id is missing. |009 |The refund amount is missing. |010 |The refund currency is missing. |011 |The Creditor Account is missing. Refund: required: - Amount type: object additionalProperties: false description: | Either the 'PaymentId' or the 'CaptureId' must be filled to refer to the original payment. - PaymentId: is used for the refund of a Single Message Payment - CaptureId: is used for the refund of Multi Message Payment properties: PaymentId: type: string format: uuid description: | Conditionaly mandatory. Id generated by the Open Banking Service. This should be used to refer to this payment in subsequent api calls. CaptureId: type: string format: uuid description: | Conditionaly mandatory. Unique identifier of the capture generated by Open Banking Services EndToEndId: maxLength: 35 minLength: 1 type: string description: | Unique identification, as assigned by the initiating party, to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. example: ID-0123456789 RefundReason: type: string enum: - ReturnedGoods - WrongAmountCorrection - PreDisputeRefund - SubscriptionRefund - ServiceLateCancellation - Other description: | Select one of the following reasons for the refund. ConsumerFreeText: maxLength: 255 minLength: 1 type: string description: | Information provided by the acceptor to the consumer as part of a refund. Only characters from the SEPA character set are permitted: letters (a–z, A–Z), digits (0–9), and the symbols / ? : ( ) . , ' + - as well as whitespace. example: Refund because of wrong billing amount. RefundType: type: string enum: - FullRefund - PartialRefund - OverRefund description: | Select whether the refund is full, partial, or more than the original amount. Amount: $ref: '#/components/schemas/Amount' OverRefund: $ref: '#/components/schemas/OverRefund' CreditorInformation: $ref: '#/components/schemas/CreditorInformation' OverRefund: required: - Amount - Reason type: object additionalProperties: false properties: Amount: pattern: ^\d{1,13}\.\d{1,5}$ type: string description: | Amount of the over refund. This field contains the amount that is refunded on top of a full refund. For example, if a consumer orders goods for 100 euro, returns it, and receives a refund of 110EUR to cover shipping costs. The decimal separator is a dot. example: "10.00" Currency: pattern: '[A-Z]{3,3}' type: string description: | Currency of the payment. ISO 4217 currency codes should be used. example: EUR default: EUR Reason: type: string enum: - Goodwill - ReturnShippingCosts - MultipleSubscriptionRefund - AuxiliaryCostRefund - Other description: | Reason of the over refund example: Overrefund reason Links: type: object description: | A list of hyperlinks to be recognized by the Initiating Party. The actual hyperlinks used in the response depend on the dynamical decisions on authorization approach for example. Remark - All links are full links. * 'PreAuthenticationForEmbedded': In case of an embedded pre-authentication required by the ASPSP, the Initiating Party has to use this link. * 'RedirectUrl': In case of an Redirect approach, the Initiating Party has to use this link to redirect the PSU's browser session. * 'PostAuthorisationForExplicit': In case the ASPSP requires explicit start of authorization. * 'PostIdentificationForDecoupled': In case of a Decoupled approach, identification of the PSU required to start the decoupled authorization. * 'PutAuthorisationForEmbedded': In case of an embedded approach, endpoint to be called to add information to the Authorization. * 'SelectAuthenticationMethod': In case of an embedded approach, the Initiating Party has to use this link to pass the SCA method. * 'AuthorizeTransaction': In case of an embedded approach, the Initiating Party has to authorize the payment by providing the SCA OneTimePassword. * 'ConfirmationRequired': Endpoint to be called for payment confirmation for ASPSPs that require explicit confirmation of payments. * 'GetPrintLink': A link to return a payment link. The payment link can be used by the PSU to authorize the payment. Lifetime is dictated by the PrintOptions parameter. * 'GetQRCode': A link to retrieve a QR code. The QR code can be used by the PSU to authorize the payment. Lifetime is dictated by the PrintOptions parameter. properties: PreAuthenticationForEmbedded: $ref: '#/components/schemas/Link' RedirectUrl: $ref: '#/components/schemas/Link' PostAuthorisationForExplicit: $ref: '#/components/schemas/Link' PostIdentificationForDecoupled: $ref: '#/components/schemas/Link' PostAuthorisationForEmbedded: $ref: '#/components/schemas/Link' PutAuthorisationForEmbedded: $ref: '#/components/schemas/Link' SelectAuthenticationMethod: $ref: '#/components/schemas/Link' AuthorizeTransaction: $ref: '#/components/schemas/Link' ConfirmationRequired: $ref: '#/components/schemas/Link' Self: $ref: '#/components/schemas/Link' GetPrintLink: $ref: '#/components/schemas/Link' GetQRCode: $ref: '#/components/schemas/Link' Link: required: - Href type: object properties: Href: maxLength: 1024 minLength: 1 type: string Error: required: - Code - Message type: object properties: Code: pattern: '[0-9]{1,3}' type: string Message: maxLength: 140 minLength: 1 type: string Details: type: string Link: $ref: '#/components/schemas/Link' description: | |HTTP Status|Code |Description |-----------|-----|--------------------------------------- |400 |001 |Bad client request | |002 |The message does not comply the schema definition | |008 |Duplicate message | |101 |The client or merchant is unknown | |102 |The client or merchant is inactive | |105 |The aspsp is not active | |122 |The PSU payment consent is not valid | |133 |A conditional field is missing | |136 |Payment consent could not be found |401 |003 |Invalid signature | |021 |Unauthorized | |123 |The PSU payment consent is expired | |132 |A pre-authentication is required - but could not be found | |135 |The status of the payment does not allow cancellation. | |140 |The transaction authentication number is wrong | |141 |The transaction authentication number is not valid anymore. | |142 |The transaction authentication number has expired. | |143 |The transaction authentication number is not active anymore. | |144 |The user account is locked. | |145 |The user account is temporarily locked. | |146 |The user password has expired. | |147 |The user account does not support a second factor. | |148 |The user password has expired. | |149 |User credential validation failed. | |153 |The online refunds API has not been activated for your tenant. | |154 |Invalid digest |403 |007 |Initiating Party is not authorised | |017 |Initiating party access token is expired | |119 |A PSU subscription is present, but inactive | |120 |Payment status is not in the AUTHORISED state and cannot be confirmed | |134 |The payment amount is above the limit set in your PIS subscription |404 |104 |The Aspsp is unknown | |110 |Resource could not be found | |150 |No pre-authentication found |405 |137 |Request is not supported by Aspsp |415 |158 |Unsupported media type |500 |004 |An internal error occurred |502 |012 |Aspsp did not authorise | |116 |The aspsp responded with an error | |161 |Resource not found upstream | |152 |Invalid response from ASPSP |503 |016 |Request limit of the ASPSP server exceeded headers: X-Request-ID: required: true description: | UUID for unique request identification schema: type: string maxLength: 36 minLength: 1 example: abcdef2e-3000-4000-88cc-ae40e3b113d7 MessageCreateDateTime: required: true schema: type: string format: 'date-time' description: | The message create date time. ISO 8601 DateTime. example: "2020-09-25T08:15:00.856Z" AspspScaApproach: description: | Indicates whether a decoupled flow is used by the ASPSP to continue the Strong Customer Authentication. This field only returns the values 'Decoupled' or 'SuspectedDecoupled'. Other possible flow options are communicated within the Links section of the response. schema: type: string Signature: required: false schema: type: string Digest: description: Is contained if and only if the `Signature` element is contained in the header of the request. schema: type: string example: "SHA-256=hl1/Eps8BEQW58FJhDApwJXjGY4nr1ArGDHIT25vq6A=" parameters: paymentMean: name: paymentMean in: path required: true schema: type: string enum: [wero,psd2] source: name: source in: path schema: type: string enum: [payments,bulk-payments,payment-consents] required: true AppRedirectPreferred: name: AppRedirectPreferred in: header schema: type: boolean default: false description: | Indicates whether the user uses mobile device\tablet or PC PreferReservationOfFunds: paymentConsentId: name: paymentConsentId in: path description: | Unique identifier of the payment consent generated by the Open Banking Service. required: true schema: type: string example: 486215 captureId: name: captureId in: path description: | The Id used by the Open Banking Service to refer to a Capture. required: true schema: type: string example: 486215 paymentAuthorisationId: name: paymentAuthorisationId in: path description: | Unique identifier of the payment authorisation generated by the Open Banking Service. required: true schema: type: string example: 486215 sourceId: name: sourceId in: path description: | The Id used by the Open Banking Service to refer to a source resource (payment, bulk-payment, or payment-consent). required: true schema: type: string example: 486215 paymentId: name: paymentId in: path description: | The Id used by the Open Banking Service to refer to a payment. Optionally the payment can also be referred by the **InitiatingPartyReferenceId** or the **EndToEndId**, to do so start with **ref** or **e2e** prefixes followed by the respective identifier. required: true schema: type: string refundId: name: refundId in: path description: | The Id used by the Open Banking Service to refer to a refund. required: true schema: type: string InitiatingPartyReturnUrl: name: InitiatingPartyReturnUrl in: header schema: maxLength: 4000 minLength: 1 type: string description: | The callback URL for the redirection back to the initiating party after authorization. example: https://www.example.org confirmForNotification: name: confirm in: query description: | If set to 'true' the transaction will be immediately confirmed by the Open Banking Service if confirmation of the payment by the Initiating Party is required by the ASPSP.
**Note:** This field is only applicable when the notification service is used by the Initiating Party to receive the status of the payment. When the notification is not used this flag can be set in the GET status API. schema: type: string X-Request-ID: name: X-Request-ID in: header description: | UUID for unique request identification. required: true schema: maxLength: 36 minLength: 1 type: string example: "abcdef2e-3000-4000-88cc-ae40e3b113d7" MessageCreateDateTime: name: MessageCreateDateTime in: header description: | The message create date time. ISO 8601 DateTime. required: true schema: type: string format: date-time example: "2020-09-25T08:15:00.856Z" UseAuthorisationLandingPages: name: UseAuthorisationLandingPages in: header schema: type: boolean default: false description: | If true, Bank Selection Interface will be used to request required information from PSU directly Locale: name: Locale in: header schema: type: string description: | 2-digit ISO-639 code for the language in which the Bank Selection Interface are displayed. For special languages can be used 5-digit code like nl-BE, where first is ISO-639 language code and the second is ISO-3166 country code. If not set, the language of the Bank Selection Interface is taken over from the end user's browser configuration or the system configuration of the Bank Selection Interface server. PsuIpAddress: name: PsuIpAddress in: header description: | PSU Session information. The forwarded IP Address header field consists of the corresponding HTTP request IP Address field between PSU and TPP . It shall be contained if and only if this request was actively initiated by the PSU. schema: maxLength: 35 minLength: 1 type: string Signature: name: Signature in: header description: | The signature in the request should include a keyId with the value of fingerprint of the certificate schema: type: string Digest: name: Digest in: header description: Is contained if and only if the `Signature` element is contained in the header of the request. schema: type: string example: "SHA-256=hl1/Eps8BEQW58FJhDApwJXjGY4nr1ArGDHIT25vq6A=" responses: 400: description: | Bad Request headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/Error' 401: description: | Unauthorized headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/Error' 403: description: | Forbidden headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/Error' 404: description: | Not Found headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/Error' 415: description: | Unsupported Media Type headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/Error' 500: description: | Internal Server Error headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/Error' 502: description: | Bad Gateway headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/Error' 503: description: | Service Unavailable' headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/Error' 511: description: | Network Authentication Required headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/Error' 204: description: | No Content headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: {} 405: description: | Method not allowed headers: X-Request-ID: $ref: '#/components/headers/X-Request-ID' MessageCreateDateTime: $ref: '#/components/headers/MessageCreateDateTime' content: application/json: schema: $ref: '#/components/schemas/Error'