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'