openapi: 3.0.1 info: title: DN Payment Initiation API description: 'Public Payment Initiation API (PI-API) of Diebold Nixdorf to access the Transaction Middleware. ' version: 1.9.11 contact: email: ronald.schmieder@dieboldnixdorf.com tags: - name: Payment Initiation API description: 'Public Payment Initiation API (PI-API) of DieboldNixdorf to access the Transaction Middleware. ' externalDocs: description: Find out more url: https://dieboldnixdorf.com externalDocs: description: Find out more about Swagger url: https://swagger.io paths: /pay/{merchantId}/initiateSession: post: summary: Initiate a payment session for token based payments like Google Pay or Apple Pay. description: 'Retrive the payment session object.
Please see https://developer.apple.com/documentation/apple_pay_on_the_web/apple_pay_js_api/requesting_an_apple_pay_payment_session ' operationId: initiateSession parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/TerminalIdParam' - $ref: '#/components/parameters/RetailUnitParam' tags: - Payment Initiation API requestBody: description: The request. It contains only the validation URL, if there is any required: true content: application/json: schema: $ref: '#/components/schemas/InitiateMerchantSessionRequest' responses: '200': description: 'Returns the opaque payment session object. ' content: application/json: schema: $ref: '#/components/schemas/InitiateMerchantSessionResponse' '500': $ref: '#/components/responses/InternalServerError500' /pay/{merchantId}/creditBalance: post: tags: - Payment Initiation API summary: The creditBalance API call returns the credit balance of a payer in case of success. description: 'The creditBalanceRequest is used to return the payer''s credit balance.
If the amount is insufficient, the call returns a 401 http status code. ' operationId: creditBalance parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/TerminalIdParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '200': description: 'In case of a successful call, a PI-API returns the credit a creditBalanceResponse. ' content: application/json: schema: $ref: '#/components/schemas/CreditBalanceResponse' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '409': $ref: '#/components/responses/Conflict409' '500': $ref: '#/components/responses/InternalServerError500' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreditBalanceRequest' description: The payment request required: true /pay/{merchantId}/authorize: post: tags: - Payment Initiation API summary: Authorizes a later cardless payment transaction. description: 'Used to authorize a later payment transaction, using a credit or debit card, without transferingt any money. ' operationId: authorizeCardlessPayment parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/TerminalIdParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '200': description: 'In case of a successful call, a http response code 200 is returned. ' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '409': $ref: '#/components/responses/Conflict409' '500': $ref: '#/components/responses/InternalServerError500' requestBody: content: application/json: schema: $ref: '#/components/schemas/AuthorizePaymentRequest' description: The payment request required: true /pay/{merchantId}/cardless: post: tags: - Payment Initiation API summary: Initiate a cardless payment transaction. description: 'Used to initiate a payment transaction without using a credit or debit card. ' operationId: cardlessPayment parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/TerminalIdParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '201': description: 'In case of a successful call, a PI-API transactionId is returned. This transactionId can be used in further request. ' content: application/json: schema: $ref: '#/components/schemas/InitiatePaymentResponse' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '500': $ref: '#/components/responses/InternalServerError500' requestBody: content: application/json: schema: $ref: '#/components/schemas/InitiateCardlessPaymentRequest' description: The payment request required: true /pay/{merchantId}/cardbased/{cardBasedTransactionType}: post: tags: - Payment Initiation API summary: Initiate a card based payment transaction. description: 'Used to initiate a credit or debit card payment or money transfer transaction. ' operationId: cardbasedPayment parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/CardBasedTransactionType' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/TerminalIdParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '200': description: 'In case of a successful call, a PI-API transactionId is returned. This transactionId can be used in further request. ' content: application/json: schema: $ref: '#/components/schemas/InitiateCardBasedPaymentResponse' '500': $ref: '#/components/responses/CardBasedInternalServerError500' '503': description: Service Unavailable requestBody: content: application/json: schema: $ref: '#/components/schemas/InitiateCardBasedPaymentRequest' description: The payment request required: true /pay/{merchantId}/confirm/{transactionId}: put: summary: Confirm a payment transaction description: Used to confirm a payment transaction approved by payment provider operationId: confirmPayment tags: - Payment Initiation API parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/PI-API-Transaction-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/TerminalIdParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '200': description: No further data are returned in case of a successful call. content: application/json: schema: $ref: '#/components/schemas/ConfirmResponse' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '405': $ref: '#/components/responses/MethodNotAllowed405' '500': $ref: '#/components/responses/InternalServerError500' /{merchantId}/payments: get: summary: Retrive a set of payment transactions. description: Used to retrive the state of a payment transaction. operationId: transactions tags: - Payment Initiation API parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/TerminalIdParam' - $ref: '#/components/parameters/RetailUnitParam' - name: fromDateTime in: query required: false description: '

Start of the time interval for which the transactions are requested. Default value fromDateTime = (now - 1h)

A timestamp containing date and a time as defined by RFC3339 time.
Please see: Date and Time on the Internet: Timestamps

' schema: type: string format: date-time example: '2018-04-28T06:00:00.000Z' - name: toDateTime in: query required: false description: '

End of the time interval for which the transactions are requested. Default value toDateTime = (fromDateTime + 1h)

A timestamp containing date and a time as defined by RFC3339 time.
Please see: Date and Time on the Internet: Timestamps

' schema: type: string format: date-time example: 2018-04-28T012:00:00.000Z - name: paymentProvider in: query required: false description: 'The identifier of the payment provider for which the transactions are requested. ' schema: $ref: '#/components/schemas/PaymentProvider' example: VISADIRECT - name: status in: query required: false description: 'Transaction status in which the transactions are requested. ' schema: $ref: '#/components/schemas/TransactionStatus' example: PENDING responses: '200': description: 'Returns an array of transactions for the specified selection parameters. ' content: application/json: schema: type: array items: oneOf: - $ref: '#/components/schemas/ExtendedTransactionData' - $ref: '#/components/schemas/CardbasedDetailsResponse' '400': $ref: '#/components/responses/BadRequest400' '401': $ref: '#/components/responses/Unauthorized401' '500': $ref: '#/components/responses/InternalServerError500' /payments/{merchantId}/{transactionId}: delete: tags: - Payment Initiation API summary: Cancel a payment transaction. description: 'Used to cancel an already initiated payment transaction. Idempotence key: transactionId ' operationId: cancel parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/PI-API-Transaction-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/TerminalIdParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '200': description: Only the 'retryFlag' is returned after a successful call. content: application/json: schema: $ref: '#/components/schemas/CancelResponse' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '405': $ref: '#/components/responses/MethodNotAllowed405' '500': $ref: '#/components/responses/InternalServerError500' put: tags: - Payment Initiation API summary: Refund a payment transaction. description: 'Used to refund an already initiated payment transaction. Idempotence key: transactionId ' operationId: refund parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/PI-API-Transaction-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/TerminalIdParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '200': description: No further data are returned in case of a successful call. content: application/json: schema: $ref: '#/components/schemas/RefundResponse' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '405': $ref: '#/components/responses/MethodNotAllowed405' '500': $ref: '#/components/responses/InternalServerError500' requestBody: content: application/json: schema: $ref: '#/components/schemas/RefundRequest' description: The refund payment request required: true get: summary: Retrive the details and state of a certain payment transaction. description: 'Retrive the details and state of a certain payment transaction. Idempotence key: transactionId ' operationId: transactionDetails tags: - Payment Initiation API parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/PI-API-Transaction-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/TerminalIdParam' - $ref: '#/components/parameters/RetailUnitParam' - name: refresh in: query required: false description: '

Indicates if the payment provider should be called to refresh the transaction status in the TM database or not. If set to "true", the payment provider''s system is called; otherwise, the last known transaction status is loaded from the TM database.

Default value is "true".

' schema: type: boolean example: true responses: '200': description: 'Returns an array of transactions if there are some in the given time frame. ' content: application/json: schema: oneOf: - $ref: '#/components/schemas/TransactionDetailsResponse' - $ref: '#/components/schemas/CardbasedDetailsResponse' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '500': $ref: '#/components/responses/InternalServerError500' /pkiKey: get: summary: Retrive the public (RSA) key of the server system. description: 'Retrive the a public (RSA) key, which is used later on to encrypt session keys. ' operationId: pki tags: - Accessibility API responses: '200': description: 'Returns apublic (RSA) key, which is used later on to encrypt session keys. ' content: application/json: schema: $ref: '#/components/schemas/PKIKeyResponse' '500': $ref: '#/components/responses/InternalServerError500' /{merchantId}/devices: get: tags: - Device API operationId: getDevices summary: Get all devices of a certain merchant. description: 'Used to retrieve all payment devices of a certain merchant. ' parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '200': description: 'In case of a successful call, the PI-API device data are returned. ' content: application/json: schema: $ref: '#/components/schemas/DevicesResponse' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '500': $ref: '#/components/responses/InternalServerError500' /device/{merchantId}/{terminalId}: post: tags: - Device API summary: Create a payment device such as a POS terminal or a mobile device. description: 'Used to create and/or initialize a payment device. ' operationId: initializeDevice parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/Terminal-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '201': description: 'In case of a successful call, a PI-API a http status code 201 is returned. ' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '500': $ref: '#/components/responses/InternalServerError500' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateDeviceRequest' description: The request required: true put: tags: - Device API operationId: updateDevice summary: Update a payment device such as a POS terminal or a mobile device. description: 'Used to get, update or delete a payment device. ' parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/Terminal-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '200': description: 'In case of a successful call, a http status code 200 is returned. ' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '500': $ref: '#/components/responses/InternalServerError500' requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateDeviceRequest' description: The request required: true get: tags: - Device API operationId: getDevice summary: Get device info of a payment device such as a POS terminal or a mobile device. description: 'Used to create and/or initialize a payment device. ' parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/Terminal-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '200': description: 'In case of a successful call, the PI-API device data are returned. ' content: application/json: schema: $ref: '#/components/schemas/DeviceInfoResponse' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '500': $ref: '#/components/responses/InternalServerError500' delete: tags: - Device API operationId: deleteDevice summary: Delete a payment device such as a POS terminal or a mobile device. description: 'Used to create and/or initialize a payment device. ' parameters: - $ref: '#/components/parameters/PI-API-Merchant-ID' - $ref: '#/components/parameters/Terminal-ID' - $ref: '#/components/parameters/X-Request-ID-Param' - $ref: '#/components/parameters/TimestampParam' - $ref: '#/components/parameters/PSU-IP-AddressParam' - $ref: '#/components/parameters/PSU-User-AgentParam' - $ref: '#/components/parameters/PSU-GEO-LocationParam' - $ref: '#/components/parameters/SessionKeyParam' - $ref: '#/components/parameters/CredentialsTypeParam' - $ref: '#/components/parameters/CredentialsParam' - $ref: '#/components/parameters/StoreIdParam' - $ref: '#/components/parameters/CashierIdParam' - $ref: '#/components/parameters/PaymentProviderParam' - $ref: '#/components/parameters/RetailUnitParam' responses: '200': description: 'In case of a successful call, a http status code 200 is returned. ' '401': $ref: '#/components/responses/Unauthorized401' '404': $ref: '#/components/responses/NotFound404' '500': $ref: '#/components/responses/InternalServerError500' servers: - url: http://localhost:8080/pi-api/v1 - url: https://localhost:8080/pi-api/v1 components: securitySchemes: bearerAuth: type: http description: 'When using the bearer authentication method an access token has to be provided in the HTTP authorization header ' scheme: bearer openId: type: openIdConnect openIdConnectUrl: https://login.microsoftonline.com/52846f0f-bc96-4a36-939b-f4d04bb473a0/v2.0/.well-known/openid-configuration responses: BadRequest400: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized401: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' NotFound404: description: Not found content: application/json: schema: $ref: '#/components/schemas/Error' MethodNotAllowed405: description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' Conflict409: description: Conflict; The authorization has failed. content: application/json: schema: $ref: '#/components/schemas/Error' InternalServerError500: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' CardBasedInternalServerError500: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/CardBasedError' parameters: PI-API-Merchant-ID: name: merchantId in: path required: true description: 'ID of the merchant in the PI API. ' schema: type: string minLength: 1 maxLength: 64 example: TM-Merchant-ID CardBasedTransactionType: name: cardBasedTransactionType in: path required: true schema: $ref: '#/components/schemas/CardbasedTransactionTypes' example: moneyTransferCredit Terminal-ID: name: terminalId in: path required: true schema: type: string minLength: 1 maxLength: 64 description: 'UUID (Universally Unique Identifier) for a device, which is used by the PSU, if available. UUID identifies either a device or a device dependant application installation. In case of an installation identification this ID need to be unaltered until removal from device. ' example: terminal1 PI-API-Transaction-ID: name: transactionId in: path required: true description: 'A unique identifier of a transaction in the PI-API backend domain. This transaction number must not be confused with the merchantTransactionId. This PI-API transaction number is generated by the PI-API server and is unique within the whole PI-API server domain. ' schema: type: string minLength: 6 maxLength: 40 example: '843409084374847833' X-Request-ID-Param: name: X-Request-ID in: header required: true description: 'ID of the request, unique to the call, as determined by the initiating party.
he X-Request-ID is used to identify a certain PI-API call uniquely. ' schema: type: string minLength: 6 maxLength: 40 example: 99391c7e-ad88-49ec-a2ad-99ddcb1f7721 TimestampParam: name: Timestamp in: header required: true description: 'The timestamp when the PI-API call was initiated by the PI-API client. The format is defined by RFC3339 date-time.
Please see: Date and Time on the Internet: Timestamps ' schema: type: string format: date-time example: '2017-10-02T15:34:12.345Z' SessionKeyParam: name: SessionKey in: header required: true description: "

The SessionKey parameter contains an base64 encoded AES-128bit\n(AES128) key, which is used\ \ to encrypt the AuthorizationType and\nAuthorizationToken.

\n\n

Moreover, where appropriate,\ \ other parts of the request and/or response message are encrypted too, such as\n'buyerIdentityToken' in the 'UserAuthorizationData'\ \ of a\nInitiateCardlessPayment request.

\n\n

If the SessionKey is an empty string (with a zero\ \ length), it is assumed, that the\nAuthorizationType and AuthorizationToken are transmitted\nunencrypted, which is by no means recommended and -\nwhenever possible - should be avoided.

\n\ \n

If a part of a request or response message is or can be encrypted, this is explicitly\nindicated in the description.

\ \ \n\n

The key is separated from the InitializationVector using a '-' (Minus sign/Separator) like 'AESKey InitializationVector'.\n" schema: type: string example: QmFzZTY0IGVuY29kaW5nIHNjaGVtZXMgYXJlIGNvbW1vbmx5VGhlIHBhcnRpY3VsYXIgY2hvaWNlIA== CredentialsTypeParam: name: AuthorizationType in: header required: true description: 'AuthorizationType describes the kind of CredentialsParam. Based on the AuthorizationType the AuthorizationToken is evaluated and checked. ' schema: type: string enum: - OAUTH - USERNAME_PASSWORD example: USERNAME_PASSWORD CredentialsParam: name: AuthorizationToken in: header required: true description: "

The contents and usage of the AuthorizationToken header field\ndepends on the authentication\ \ type as defined by the\nAuthorizationType header field.

\n\n

When using the OAUTH approach,\ \ consequent API requests are being authorized using the\nrespective OAuth Access Token. The access token is sent\ \ to the API using the AuthorizationToken header\nfield and the BEARER authentication schema as defined in RFC 6750.\n\
Example: 'Bearer SlAV32hkKG'

\n\n

If USERNAME_PASSWORD is used as AuthorizationType a JSON\ \ object\nlike: { 'username': 'Tester', 'password': 'thePassword' } is expected.\nThe given user must have the an\ \ appropriate group to access the system\nusing the CHANNEL_REST. Please see the TM documentation how to create\n\ and assign right, roles and groups to user.

\n" schema: type: string minLength: 4 maxLength: 256 PaymentProviderParam: name: PaymentProvider in: header required: true schema: $ref: '#/components/schemas/PaymentProvider' example: HUMM StoreIdParam: name: StoreId in: header required: true description: '

An unique identifier of store within the merchant''s eco-system.

' schema: type: string minLength: 4 maxLength: 256 example: '1234' CashierIdParam: name: CashierId in: header required: true description: "

An unique identifier of a cashier - a natural person - within the\nmerchant's eco-system.

\n" schema: type: string minLength: 4 maxLength: 256 example: cashier1 TerminalIdParam: name: TerminalId in: header schema: type: string minLength: 1 maxLength: 64 required: true description: 'UUID (Universally Unique Identifier) for a device, which is used by the PSU, if available. UUID identifies either a device or a device dependant application installation. In case of an installation identification this ID need to be unaltered until removal from device. ' example: terminal1 PSU-IP-AddressParam: name: PSU-IP-Address in: header required: false description: The IP-Address of the client. schema: type: string minLength: 8 maxLength: 48 example: 192.168.8.1 PSU-User-AgentParam: name: PSU-User-Agent in: header required: false description: 'The user agent string of the client. ' schema: type: string minLength: 5 maxLength: 255 example: Mozilla/5.0(IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko PSU-GEO-LocationParam: name: PSU-GEO-Location in: header required: false description: 'The (optional) GEO location of the client, if available. ' schema: type: string minLength: 8 maxLength: 255 pattern: GEO:(-?\d+(\.\d+)?),\s*(-?\d+(\.\d+)?) example: GEO:52.506931,13.144558 RetailUnitParam: name: RetailUnit in: header required: false description: 'The ID of the retail unit. ISO-3166 2 letter country code as a possibility, e.g. "se" for Sweden, "de" for Germany and "us" for USA. ' schema: type: string minLength: 2 maxLength: 10 example: se schemas: Error: description: "The error property is optional. \nIt is set only if an error has been detected.\n" type: object properties: message: description: An optional, additional message which describes the error. type: string maxLength: 256 example: 'Internal server error. A database connection could not be established. ' paymentProviderErrorCode: description: An error code as outlined in the PI-API documentation. type: string example: SysErr#765 errorCode: description: An error code as outlined in the PI-API documentation. type: string example: HOST_CANCEL transactionId: $ref: '#/components/schemas/TransactionIdentifier' CardBasedError: allOf: - $ref: '#/components/schemas/Error' - type: object properties: detailedResponseCode: type: array items: $ref: '#/components/schemas/DetailedResponseCode' transactionState: $ref: '#/components/schemas/TransactionStatus' DetailedResponseCode: type: string enum: - CURRENT_CVV2_VALID - CURRENT_CVV2_INVALID - CURRENT_CVV2_NOT_PROCESSED - CVV2_UNVERIFIED - CURRENT_CAVV_INVALID - CURRENT_CAVV_VALID - CAVV_UNVERIFIED - AVS_ZIP_MATCH_ADDRESS_MATCH - AVS_ZIP_MISSING_ADDRESS_MATCH - AVS_ZIP_MATCH_ADDRESS_NO_MATCH - AVS_NOTHING_MATCHES - AVS_ZIP_UNVERIFIED - AVS_ZIP_RETRY - NVS_NAME_MATCH - NVS_PARTIAL_NAME_MATCH - NVS_NO_NAME_MATCH PKIPublicKey: description: A public (RSA) key. type: object required: - modulus - exponent properties: modulus: description: The base64 encoded modulus part off the public key. type: string example: MTI4MzI1Mjc2NTI= exponent: description: The base64 encoded exponent of the public key. type: string example: OTYyMzgz KeyValuePair: description: A key value pair to store/retrieve a key and a value as strings in a generic way. Used in some API calls/objects. type: object required: - key - value properties: key: description: A unique key which identifies a certain value. type: string minimum: 1 maximum: 255 example: this-is-a-sample-key value: description: 'The assigned value of the key. It contains a maximum of 2MB data. ' type: string minLength: 0 maxLength: 2097152 example: this-is-a-sample-value Date: type: string pattern: ([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])) description: '

The date pattern is defined "YYYY-MM-DD", with YYYY as 4-digit year, MM as 2-digit month and DD as 2-digit day of month.

Date string as defined by date-time - RFC3339 Please see: Date and Time on the Internet: Timestamps

' example: '2020-01-31' MsisdnString: type: string format: ^\+(?:[0-9]\x20?){6,14}[0-9]$ description: 'The numbers must start with a plus sign, followed by the country code and national number regarding ITU-T E.123 and ITU-T E.164 Phone numbers cannot contain more than 15 digits. The shortest international phone numbers in use contain seven digits. ' MSISDN: type: object required: - MSISDN properties: MSISDN: $ref: '#/components/schemas/MsisdnString' CountryCode: type: string minLength: 3 maxLength: 3 pattern: \d{3,3}|[A-Z]{3,3} description: 'Refer to ISO Codes

https://en.wikipedia.org/wiki/ISO_3166-1_numeric

https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3

' example: 276 BIN: type: string minLength: 6 maxLength: 9 description: 'The Bank Identification Number (BIN) under which, e.g. the Visa Direct solution is registered.
' example: 12030000 BusinessApplicationId: type: string description: 'This description refers to VISA Direct, but can be used also for other purposes.
As used if the payment provider is VISA Direct:
- Identifies the programs'' business application type for VisaNet transaction processing.
- For Money Transfer, AA applies to transactions where the sender and recipient are the same person and PP applies to transactions where the sender and recipient are not the same person.
- For Money Transfer, CD (Cash Deposit) applies to cash funded transactions.
- For Argentina domestic purchase transactions the value should be "PS".
- For Request To Pay, city will carry Invoice Id which will be used for C2B use case in the CEMEA region where payee initiates the OCT to the payer.
' example: PP MerchantCategoryCode: type: string pattern: '[0-9]{4,4}' description: "Conditional.
\nIf provided, then the value overrides the one present in onboarding data.
\ \ \nIf the merchantCategoryCode value is not populated in onboarding data then this field is mandatory.

\n\ Note: Required if not provided during onboarding.\nNumeric value with total length of 4 digits\nPlease\ \ see: ISO 18245:2023, Merchant category codes\n" PanEntryMode: type: string description: "An identifier that identifies the method used to enter the cardholder account number and card \nexpiration\ \ date. This code specifies e.g. whether the entire magnetic stripe is included in an \nauthorization or financial\ \ request.

\nPlease take a look into the TM programmer manual to discover: \ncom.dieboldnixdorf.txm.core.businessobjects.switching.PanEntryMode.java\n" enum: - UNKNOWN - MANUAL_ENTRY - MAG_STRIPE_READ - BARCODE_READ - OCR_READ - ICC_READ - MANUAL_KEY_ENTERED - ICC_FALLBACK_TO_MAGSTRIPE - ICC_FALLBACK_TO_MANUAL_ENTRY - CONTACTLESS_READ - FULL_MAG_STRIPE_READ - CONTACTLESS_MAGNETIC_STRIPE_READ - ICC_CVV_UNRELIABLE - CONTACTLESS_ICC_READ - STORED - DIGITALLY_STORED - MICR_READ - ELECTRONIC_COMMERCE - ON_FILE - ECOMMERCE_WITH_CRYPTOGRAM - SERVER - ONLINE_TELLER_MANUAL - POS_DEVICE - ATM - DISK_INPUT - MERCHANT_POS - ONLINE_TELLER example: MANUAL_ENTRY PinEntryMode: type: string description: "An identifier that identifies the method used to enter the cardholders PIN.

\nPlease take a look\ \ into the TM programmer manual to discover: \ncom.dieboldnixdorf.txm.core.businessobjects.switching.PinEntryMode.java\n" enum: - UNSPECIFIED - TERM_HAS_PINENTRY_CAP - TERM_HAS_NO_PINENTRY_CAP - MPOS_SOFTWARE_BASED_PINENTRY_CAP - PINPAD_CURRENTLY_NOT_OPERATIVE example: UNSPECIFIED SourceOfFundsCode: type: string example: 2 description: "Depends on the payment provider!\nFor example, if VISA Direct is used as the payment provider,\ \ the following explanation is valid:
\nminLength: 2
\nmaxLength: 2
\nConditional.
If the transaction\ \ is a money transfer, the field is required and must contain a valid \nsourceOfFundsCode.
Please see table below\ \ Code that matches the funding instrument.
\nIf the transaction is a funds disbursement, the field is required\ \ and most likely\ncontains a \"05\" as shown in the table below.\nThe code is used to identify that the merchant\ \ or government entity used a\ndeposit account to fund the disbursement
\nIf the transaction is a pre-paid load,\ \ the field is required if the transaction is\nnon-U.S. domestic.
\nIf the transaction is a credit bill pay, the\ \ field is required if the transaction is non-U.S. \ndomestic, and the code must not contain a \"01\" or \"06\".
\n\ \n \n \n \n \n \n \n \n\ \ \n \n \n \n \n \n \n \ \ \n \n \n \n \n \n \n \n\ \ \n \n \n \n \n \n
CodeDescription
01Visa credit
02Visa debit
03Visa prepaid
04Cash
05Debit/deposit access accounts other than those linked to a Visa card (includes checking/savings accounts\ \ and proprietary debit/ATM cards).
06Credit accounts other\ \ than those linked to a Visa card (includes credit cards and proprietary credit lines).
\n" Amount: description: The basic type of an amount. type: object required: - value - currency properties: value: description: 'The amount value of the given currency. As defined by ISO 20022, CurrencyAndAmount. ' type: string pattern: '[0-9]{1,13}\.[0-9]{1,5}' minimum: 0 example: 345.67 currency: description: 'The currency code as defined by ISO 20022, ActiveCurrencyCode See also: https://en.wikipedia.org/wiki/ISO_4217 ' type: string minLength: 3 maxLength: 3 pattern: '[A-Z]{3,3}' example: USD OrderItemData: description: "Details of an order item.\nThe refered amounts are:\n total: Line total\n unitPrice: Unit price\n discount:\ \ Discount amount\n" type: object required: - itemDesc - itemCount - total - taxRate properties: itemId: description: Item POS ID type: string minLength: 4 maxLength: 128 example: 21478 itemDesc: description: Item description type: string minLength: 5 maxLength: 256 example: PAX itemCount: description: Amount of items when purchasing more than one of a kind (including weighted items or bulk goods) type: number format: double minimum: 0.0 example: 5.5 quantityUnit: description: The quantity unit of the item. Default is "piece" type: string minLength: 1 example: cm,m,g,kg,L total: $ref: '#/components/schemas/Amount' unitPrice: $ref: '#/components/schemas/Amount' discount: $ref: '#/components/schemas/Amount' taxRate: description: Rate of taxation in percent type: number format: double minimum: 0.0 example: 24.0 PaymentAuthorizationData: description: The basic type of an amount. type: object required: - purchaseAmount - msisdn properties: amountToAuthorize: $ref: '#/components/schemas/Amount' msisdn: $ref: '#/components/schemas/MSISDN' TransactionData: type: object required: - orderTitle - orderAmount properties: merchantTransactionId: type: string minLength: 6 maxLength: 40 description: "(Conditional) This is a required field in the following APIs:\n\nA unique identifier of a transaction in the merchant\ \ system.\n

This transaction number must not be confused with the\nPI-API transaction number!

\ \ The PI-API transaction number\n(transactionId) is generated by the PI-API server and is unique\nwithin the whole\ \ PI-API server domain.
The merchant\ntransaction number (merchantTransactionId) is generated by merchant\n\ system and must be unique only within the merchant's domain.\n
Not the worst idea is simply to use\ \ a UUID as described in\nhttps://en.wikipedia.org/wiki/Universally_unique_identifier and\ndefined by https://tools.ietf.org/html/rfc4122\ \
\n" example: 7FD98487-15B1-4918-AEE2-D903C22A6BC3 orderTitle: type: string minLength: 1 maxLength: 256 description: 'Short information regarding the order, such as ''Women Summer Dress'' ' example: Women Summer Dress orderDetail: type: string minLength: 1 maxLength: 512 description: 'Longer information regrading the order. ' example: 'New White Lace Sleeveless Cute Casual Summer Dresses Vestidos roupas femininas WQW10 ' orderItems: type: array items: $ref: '#/components/schemas/OrderItemData' description: 'List of order items ' orderAmount: $ref: '#/components/schemas/Amount' financeAmount: $ref: '#/components/schemas/Amount' storeName: type: string minLength: 1 maxLength: 256 description: The name of the store, which has initiated/requested the payment. example: Zara-Store#30 terminalId: type: string minLength: 1 maxLength: 64 description: The ID of the store, which has initiated/requested the payment. example: '1234567890' additionalData: description: 'A list of addtional properties. ' type: array items: $ref: '#/components/schemas/KeyValuePair' CardbasedTransactionData: allOf: - $ref: '#/components/schemas/TransactionData' - type: object properties: paymentProviderMerchantId: type: string minLength: 8 maxLength: 64 description: 'A merchant identifier assigned by the payment provider (e.g. by Visa). ' processingType: $ref: '#/components/schemas/ProcessingType' sourceAmount: $ref: '#/components/schemas/Amount' CardData: description: "Contains all card or account related data, which are used and specific for a card based payment.
\n\ Attention!
\nIf parameter 'sessionKey' is set in the request header, this is used to \ \ encrypt the cardNumber, \ncardExpiryDate, cardCvv2Value, track1 and track2
if these vales are provided.\n" type: object required: - cardNumber properties: cardNumber: type: string minLength: 12 maxLength: 19 description: 'The unique number of that card in the system, also known as PAN.
The length is determined by the ISO/IEC 7812 standard.
If parameter ''sessionKey'' is set in the request header, this field must be sent encrypted. ' example: 378282246310005 cardSequenceNumber: type: string minLength: 1 maxLength: 4 description: 'The card sequence number. ' example: 2 cardExpiryDate: type: string pattern: (0[1-9]|1[1,2,0])(/|-)(20)\d{2} description: 'The expiry date as two digit month followed by the separator sign / and four digit year.
If parameter ''sessionKey'' is set in the request header, this field must be sent encrypted. ' example: 10/2025 cardCvv2Value: type: string pattern: \d{3,4} description: 'The cardCvv2Value provided by the account holder for the cardNumber in the request.
If parameter ''sessionKey'' is set in the request header, this field must be sent encrypted. ' example: '371' track2: type: string pattern: (\d{1,19})(D)(D|\d{4})(D|\d{3})(\d*) description: 'The track 2 data of the card.
If parameter ''sessionKey'' is set in the request header, this field must be sent encrypted. ' example: 4761739001010010D10122011143878089 track1: type: string pattern: (\d{1,19})(D)(D|\d{4})(D|\d{3})(\d*) description: 'The track 1 data of the card.
If parameter ''sessionKey'' is set in the request header, this field must be sent encrypted. ' example: 4761739001010010D10122011143878089 FIID: type: string minLength: 3 maxLength: 128 description: 'Financial institution ID. A unique identifier assigned to each specific bank or financial institution. ' example: '802' additionalData: description: 'A list of additional properties. ' type: array items: $ref: '#/components/schemas/KeyValuePair' PointOfServiceData: type: object description: 'Contains a code identifying transaction conditions at the point-of-sale or point of service.
For messages that follow an original request, this code identifies the type of processing being done.
Note: For a CardPresent Transactions, this field is required. ' required: - motoECIIndicator - panEntryMode - posConditionCode properties: motoECIIndicator: type: string pattern: ^[0-9]{1}$ description: "Identifies the level of security used in an electronic commerce transaction over an open network
\n\ (for example, the Internet) or the type of mail or telephone order. Acquirers supply indicator values,
\n\ which V.I.P. forwards in requests and advices to issuers that have successfully tested to receive them.
\n\ The subfield is dropped if issuers have not successfully completed testing or choose not to receive it.
\n\ Refer to Moto ECI Codes e.g.\ \ for VISA Direct.\n" panEntryMode: $ref: '#/components/schemas/PanEntryMode' pinEntryMode: $ref: '#/components/schemas/PinEntryMode' posEnvironment: type: string pattern: ^[0-9,CIR]{1}$ description: 'Conditional

This field is required to identify whether a transaction is merchant-initiated.
Refer to POS Environment Codes e.g. for VISA Direct ' posConditionCode: type: string description: 'Contains a code identifying transaction conditions at the point of sale or point of service.
For messages that follow an original request, this code identifies the type of processing being done.
Note: For CAVV and/or TAVV transaction, the POS condition code must be set to 59.
Refer to POS Condition Codes e.g. for VISA Direct ' specialConditionIndicatorMerchant: type: string pattern: ^[0-9]{1}$ description: 'Cryptocurrency indicator with the value of “7” can be used to identify the purchase of cryptocurrency,
thereby providing greater visibility to the issuers. ' CardbasedTransactionTypes: type: string description: "The type of a card based transaction, which can be one of the following:
\n
    \n
  • moneyTransferCredit
  • \n\ \
  • moneyTransferDebit
  • \n
  • purchase
  • \n
\n" enum: - moneyTransferCredit - moneyTransferDebit - purchase example: moneyTransferCredit PaymentProvider: type: string description: 'The identifier of the payment provider.
The payment provider ''TM'' indicates, that the transaction middleware server - aka. the TM server - should decide which payment provider has to be used at the end, e.g. based on the card data. ' enum: - AGOS - ALIPAY - APPLEPAY - BLUECODE - DANISH_MOBILEPAY - GOOGLEPAY - HUMM - IKEAREFUNDCARD - RAIFFEISEN - SATISPAY - SEPAINSTANTPAYMENT - SIMULATOR - SWISH - SWISHMCOMMERCE - SWISSBILLING - TM - VIPPS - VISADIRECT - WECHAT - WOSAIPAY example: ALIPAY TransactionStatus: type: string enum: - NEW - PENDING - APPROVED - FINISHED - CANCELED - TO_BE_CANCELLED description: "The last known state of a transaction. \n\n\n \n \n \n\ \ \n\n \n \n \n \n \n \n\ \ \n\ \ \n \n \n \n\ \ \n \n \n \n \n \n \n \n\ \ \n
NameDescription
NEWThe transaction is initiated/in progress but the backend has not yet\ \ been called or the backend has not sent a status in the response.
PENDINGThe transaction is still in progress, the backend has been called and is waiting for the buyer's confirmation.
FINISHEDThe transaction has been finished. Means for initiatePayment: The\ \ goods were payed. Means for cancelPayment: The cancel took place. Means for refundPayment: The refund took place.
CANCELEDThe transaction is CANCELED, e.g. because of an unrecoverable error\ \ or a Cancel transaction.
TO_BE_CANCELLEDThe transaction has been marked\ \ for cancellation by the regular cancellation job. The job contacts the backend to complete the cancellation.
\n" example: PENDING TransactionIdentifier: type: string minLength: 6 maxLength: 40 description: 'A unique identifier of a transaction in the PI-API backend domain.

This transaction number must not be confused with the merchantTransactionId.

This PI-API transaction number is generated by the PI-API server and is unique within the whole PI-API server domain.
' example: '434354659863230244' PaymentProviderTransactionIdentifier: description: The transactionId in the payment providers domain/eco-system. type: string example: 343545544423-34344317 UserAuthorizationData: description: 'These data are used to identify and authorize the cardless payment request. ' type: object required: - buyerIdentityToken - buyerCodeType properties: buyerIdentityToken: type: string description: 'Used as identification for example of an Alipay user and must be read from the user''''s Alipay wallet in real time, because it''s a dynamic value. If parameter ''sessionKey'' is set in the request header with a length > 0, it is assumed, that this ''sessionKey'' is used to encrypt the ''buyerIdentityToken'' In case of a token based transaction, such as Apple Pay oder Google Pay the buyerIdentityToken contains the encrypted payment token. ' minLength: 1 maxLength: 8192 example: '283323458639276347' buyerCodeType: type: string description: 'The type of the code, if there was any, which was used to initiate the payment. For Alipay for example only ''BARCODE'' and ''QRCODE'' are valid. ' enum: - BARCODE - QRCODE - NFC - TOKEN example: BARCODE paymentProvider: $ref: '#/components/schemas/PaymentProvider' addinitonalData: description: 'A list of additional properties. ' type: array items: $ref: '#/components/schemas/KeyValuePair' AccountNumber: description: "The account number.
\nThe length varies greatly. In Europe defined by ISO 13616/2007
\nSee also:\ \ https://en.wikipedia.org/wiki/International_Bank_Account_Number
\nIn case of VISA Direct is used as payment\ \ provider for example the following explanation is valid:
\n\"Conditional.
\nIf the transaction is a\ \ money transfer, pre-paid load, or credit card bill pay, and if the sender\nintends to fund the transaction with\ \ a financial instrument (for example, debit card), this field \nis required and must contain the sender's account\ \ number.
\nIf the transaction is a funds disbursement, the field is not required.
\nNote: This is a 16-digit\ \ PAN or token which defines the account of the consumer (sender of push payment).
\nNote: PAN or a network token\ \ must not be used if Payment Credential Reference is used to send
\nsender's PCI Token Reference ID.
\nOnly\ \ one of 'senderAccountNumber' and 'senderPaymentCredentialReference' is provided in a request\n" type: string minLength: 2 maxLength: 32 example: DE19123412341234123412 SwiftCode: description: 'Contains the BIC (aka. bank identifier code)
The BIC - also known as SWIFT-code - as defined by ISO 9362 is required in/for cross border transfers/transactions.
Please see: https://en.wikipedia.org/wiki/ISO_9362
This field can also be used to send/receive an ABA RTN (ABA routing transit number) or Canadian TN (Canadian transit number).
See also: https://en.wikipedia.org/wiki/Routing_transit_number
' type: string pattern: ^[A-Z0-9]+$ minLength: 8 maxLength: 11 AccountType: type: string enum: - NOT_SPECIFIED - GIRO - LOAN - SAVINGS - SECURITIES_DEPOSIT - SAVINGS_SECURITIES_DEPOSIT - GIRO_SECURITIES_DEPOSIT - FIXED_TERM_DEPOSIT - CREDIT_CARD - MORTGAGE - FOREIGN_CURRENCY - EXTERNAL - CHECKING - UNIVERSAL - SPENDING_POWER - FEE_COLLECTION_ACCOUNT - ATM - VENDOR - SHAREHOLDER - GENERAL_LEDGER - CASH_RESERVE - LOAN_DENIAL - LEASE - CONSUMER_LOAN - COMMERCIAL_LOAN - RETIREMENT_LOAN - EXTERNAL_LOAN - SHARE - INDIVIDUAL_RETIREMENT - CARD_PAN - HEALTH_SAVINGS - CREDIT - CREDIT_LINE - CERTIFIED_DEPOSIT - INSTALLMENT example: GIRO description: 'The default account type is 820000 (NOT_SPECIFIED). ' AcquirerInformation: type: object required: - acquiringBin - acquirerCountryCode properties: acquiringBin: $ref: '#/components/schemas/BIN' acquirerCountryCode: $ref: '#/components/schemas/CountryCode' ParticipantInformation: type: object properties: nationality: $ref: '#/components/schemas/CountryCode' countryOfBirth: $ref: '#/components/schemas/CountryCode' occupation: type: string minLength: 1 maxLength: 35 description: account owner occupation dateOfBirth: type: string format: date description: account owner date of birth example: '2020-02-12' emailAddress: type: string format: email minLength: 1 maxLength: 99 description: account owner email address example: john.doe@gmail.com BaseAddress: type: object properties: street: type: string maxLength: 255 description: The name of the street. example: Mainstreet streetNo: type: string maxLength: 255 description: The street number of this address. example: '119' zipCode: type: string maxLength: 255 description: The zip code of this city. example: NY 5467 county: maxLength: 50 minLength: 1 type: string description: 'Conditional.
Must be the county of the Merchant/Originator.
Required, e.g. if the payment provider is VISA Direct and if country is "USA". ' state: maxLength: 2 minLength: 2 type: string description: "Conditional.
\nUse a 2-character abbreviated states code or territory code as the state\ \ value.
\nRequired, e.g. if the payment provider is VISA Direct and if country is \"USA\". \n" Address: allOf: - $ref: '#/components/schemas/BaseAddress' - type: object properties: city: type: string maxLength: 255 description: The name of the city. example: New York countryCode: $ref: '#/components/schemas/CountryCode' PaymentFacilitator: type: object required: - id - name - subMerchantId properties: id: maxLength: 11 minLength: 1 type: string description: 'Payment Facilitator ID or Marketplace ID (MasterCard). ' name: maxLength: 25 minLength: 1 type: string description: 'Payment facilitator name in OCTs. This field is conditionally required when a payment facilitator is involved. ' subMerchantId: maxLength: 15 minLength: 1 type: string description: 'Sub-Merchant ID containing the sponsored merchant ID. ' address: $ref: '#/components/schemas/Address' CardAcceptorAddress: allOf: - $ref: '#/components/schemas/BaseAddress' - type: object required: - countryCode - city properties: city: type: string maxLength: 255 description: The name of the city. example: New York countryCode: $ref: '#/components/schemas/CountryCode' CardAcceptor: description: 'These data describes the card acceptor of this transaction.
' type: object required: - address - cardAcceptorId - name properties: address: $ref: '#/components/schemas/CardAcceptorAddress' cardAcceptorId: maxLength: 15 minLength: 1 type: string description: 'An unique identifier for the participant, e.g. VISA Direct Originator.
This value should be unique for each CardAcceptor for whom you are sending transactions. ' name: type: string minLength: 1 description: 'The name of the payment card acceptor.
E.g. for VISA Direct P2P payments, the name must contain the sender name.
For a funds disbursement, must contain either the name of the merchant or government entity sending the funds disbursement.
For pre-paid loads, must contain either the name of the load partner providing the reload service or the bank designated service name, if offered over bank channels.
For credit card bill payment, must contain either the name of the entity providing the credit card bill pay service or the bank designated service name, if offered over bank channels.
' taxId: maxLength: 35 minLength: 1 type: string description: 'Conditional.
This field contains the identifier of the acceptor issued by a taxation authority.
This field is conditionally required e.g. for all MasterCard transactions. ' legalBusinessName: maxLength: 25 minLength: 1 type: string description: 'Acceptor’s legal business name associated with the card acceptor identification code. ' TransactionParticipant: allOf: - $ref: '#/components/schemas/ParticipantInformation' - type: object description: 'These data describes a participant of a payment, which holds an normal account or an card account.
Optional required. For cardBasedTransactionType = moneyTransferDebit the sender data must be set. For cardBasedTransactionType = moneyTransferCredit the beneficiary data must be set. ' required: - cardData properties: name: type: string minLength: 1 description: 'The name of the payment participant.
E.g. for VISA Direct P2P payments, the name must contain the sender name.
For a funds disbursement, must contain either the name of the merchant or government entity sending the funds disbursement.
For pre-paid loads, must contain either the name of the load partner providing the reload service or the bank designated service name, if offered over bank channels.
For credit card bill payment, must contain either the name of the entity providing the credit card bill pay service or the bank designated service name, if offered over bank channels.
' example: Doe John A detailedName: $ref: '#/components/schemas/ParticipantName' address: $ref: '#/components/schemas/Address' cardData: $ref: '#/components/schemas/CardData' identification: type: array items: $ref: '#/components/schemas/ParticipantIdentification' description: Identification list of participant. ancillaryDetails: type: array items: $ref: '#/components/schemas/ParticipantAncillaryDetails' description: Ancillary participant details. CardlessPaymentTransactionData: type: object required: - commonTransactionData - userAuthorizationData properties: commonTransactionData: $ref: '#/components/schemas/TransactionData' userAuthorizationData: $ref: '#/components/schemas/UserAuthorizationData' CardbasedPaymentTransactionData: type: object required: - commonTransactionData properties: acquirerInformation: $ref: '#/components/schemas/AcquirerInformation' beneficiary: $ref: '#/components/schemas/TransactionParticipant' businessApplicationId: $ref: '#/components/schemas/BusinessApplicationId' cardAcceptor: $ref: '#/components/schemas/CardAcceptor' commonTransactionData: $ref: '#/components/schemas/CardbasedTransactionData' pointOfServiceData: $ref: '#/components/schemas/PointOfServiceData' sender: $ref: '#/components/schemas/TransactionParticipant' sourceOfFundsCode: $ref: '#/components/schemas/SourceOfFundsCode' paymentFacilitator: $ref: '#/components/schemas/PaymentFacilitator' enablerVerificationValue: type: string maxLength: 5 description: "Enabler Verification Value (EVV) is a Visa assigned value \nthat is used to identify enablers that\ \ participate in certain programs. \nThe EVV is unique to the enabler.\n" example: abcd1 merchantCategoryCode: $ref: '#/components/schemas/MerchantCategoryCode' ExtendedTransactionData: type: object required: - transactionId - transactionState - transactionType - transactionTimestamp - storeId - cashierId properties: transactionId: $ref: '#/components/schemas/TransactionIdentifier' transactionState: $ref: '#/components/schemas/TransactionStatus' transactionType: type: string enum: - PAYMENT - CANCEL - REFUND - REFUNDCREDIT description: "The type of a transaction. \n\n\n \n \n \n \n\ \n \n \n \n \n \n \n\ \ \n \n \n \n \n\ \ \n \n \n \n \n\
NameDescription
PAYMENTA regular payment transaction
CANCELA cancel payment transaction
REFUNDA refund transaction
REFUNDCREDITA refund transaction without related payment
\n" example: PAYMENT transactionTimestamp: type: string format: date-time description: 'A timestamp containing date and a time as defined by RFC3339 time.
Please see: Date and Time on the Internet: Timestamps ' example: '2018-04-28T06:14:50.142Z' storeId: type: string minLength: 4 maxLength: 256 description: A unique identifier to identify a store in the merchants domain.
example: Zara#34 cashierId: type: string minLength: 4 maxLength: 256 description: 'A unique identifier to identify a certain cashier in the merchants domain.
' example: '00635' referenceId: type: string minLength: 6 maxLength: 40 description: 'The referenceId is set for/in CANCEL and REFUND transactions. This transactionId references the transactions the cancel or refund was made for. ' example: '434354659863230244' transactionData: $ref: '#/components/schemas/TransactionData' paymentProviderErrorCode: description: An error code as outlined in the PI-API documentation. type: string example: SysErr#765 paymentProviderTransactionId: $ref: '#/components/schemas/PaymentProviderTransactionIdentifier' cardlessUserAuthorizationData: $ref: '#/components/schemas/UserAuthorizationData' cardData: $ref: '#/components/schemas/CardData' DeviceData: type: object description: This data contains all information about an external devices such as an POS or mobile device required: - softwareVersion - vendor properties: externalDeviceIdentifier: type: string minLength: 3 maxLength: 255 description: A identifier which identifies the device in an/the external eco system. example: 60480F44-413E-47F8-85AF-8B233A9A1680 softwareVersion: type: string minLength: 3 maxLength: 255 description: The software verion of that device. example: 'Darwin Kernel Version 19.6.0: Thu Jun 18 20:49:00 PDT 2020' vendor: type: string minLength: 1 maxLength: 255 description: The vendor of that device. example: DieboldNixdorf addinitonalData: description: 'A list of addtional properties. ' type: array items: $ref: '#/components/schemas/KeyValuePair' InitiateMerchantSessionRequest: type: object required: - validationURL description: 'The InitiateMerchantSessionRequest is used to initiate a merchant session in front of a payment request for token based payment like Apple Pay or Google Pay. ' properties: validationURL: type: string description: '''The URI is use to validate itself and obtain a merchant session object. ' example: https://apple-pay-gateway.apple.com/paymentservices/paymentSession CreditBalanceRequest: type: object required: - userAuthorizationData description: 'The CreditBalanceRequest is used to return the available credit balance
' properties: userAuthorizationData: $ref: '#/components/schemas/UserAuthorizationData' CreditBalanceResponse: type: object required: - creditBalance description: 'The CreditBalanceResponse contains the available (credit) amount. ' properties: creditBalance: $ref: '#/components/schemas/Amount' expiry: type: string format: date-time description: "A timestamp until the CreditBalance is valid. It contains a date and a time as defined by RFC3339\ \ time.
\nPlease see: Date and Time on the Internet: Timestamps\n" AuthorizePaymentRequest: type: object required: - authorizePymentRequestData description: "The AuthorizePaymentRequest is used to initiate a authorization of a payment request \nfrom the cashiers\ \ desk.\n" properties: authorizePymentRequestData: $ref: '#/components/schemas/PaymentAuthorizationData' InitiateCardlessPaymentRequest: type: object required: - initiatePaymentRequestData description: 'The initiatePaymentRequest is used to initiate a payment request from the cashiers desk to the payment provider.
The transactionId return in the initiatePaymentResponse should be used as a reference to the PI-API transaction for example in further refund request or in back office processing. ' properties: initiatePaymentRequestData: $ref: '#/components/schemas/CardlessPaymentTransactionData' InitiateCardBasedPaymentRequest: type: object required: - initiatePaymentRequestData description: 'The initiatePaymentRequest is used to initiate a payment request from the cashiers desk to the payment provider.
The transactionId return in the initiatePaymentResponse should be used as a reference to the PI-API transaction for example in further refund request or in back office processing. ' properties: initiatePaymentRequestData: $ref: '#/components/schemas/CardbasedPaymentTransactionData' CardbasedPaymentBaseResponse: type: object required: - transactionId - transactionState - transactionTimestamp description: 'The InitiateCardBasedPaymentResponse contains some information''s from the payment provider. ' properties: transactionId: $ref: '#/components/schemas/TransactionIdentifier' transactionState: $ref: '#/components/schemas/TransactionStatus' transactionTimestamp: type: string format: date-time description: 'A timestamp containing date and a time as defined by RFC3339 time.
Please see: Date and Time on the Internet: Timestamps ' example: '2018-04-28T06:14:50.142Z' paymentProviderTransactionId: $ref: '#/components/schemas/PaymentProviderTransactionIdentifier' InitiateCardBasedPaymentResponse: allOf: - $ref: '#/components/schemas/CardbasedPaymentBaseResponse' - type: object properties: detailedResponseCode: type: array items: $ref: '#/components/schemas/DetailedResponseCode' settlementInfo: $ref: '#/components/schemas/SettlementInfo' CardbasedDetailsResponse: allOf: - $ref: '#/components/schemas/CardbasedPaymentBaseResponse' - type: object properties: message: description: An optional, additional message which describes the error. type: string maxLength: 256 example: 'Internal server error. A database connection could not be established. ' paymentProviderErrorCode: description: An error code as outlined in the PI-API documentation. type: string example: SysErr#765 errorCode: description: An error code as outlined in the PI-API documentation. type: string example: HOST_CANCEL transactionType: $ref: '#/components/schemas/CardbasedTransactionTypes' storeId: type: string minLength: 4 maxLength: 256 description: 'The unique identifier to identify a store in the merchants domain. ' example: Zara#34 cashierId: type: string minLength: 4 maxLength: 256 description: 'The unique identifier to identify a certain cashier in the merchants domain. ' example: '00635' terminalId: type: string minLength: 1 maxLength: 64 description: 'The ID of the terminal, which has initiated/requested the payment. ' example: '1234567890' InitiatePaymentResponse: type: object description: 'The InitiatePaymentResponse contains more or less only the PI-API transaction number. ' properties: href: type: string description: 'The URI used e.g. to cancel this transaction. Please see also https://en.wikipedia.org/wiki/HATEOAS ' example: http://pisp-pi-api-webapp/pi-api/v1/payments/123123123 paymentTransactionData: $ref: '#/components/schemas/ExtendedTransactionData' CancelResponse: type: object description: The CancelPaymentResponse contains more or less only the retryFlag properties: href: type: string description: 'The URI used e.g. to cancel this transaction. Please see also https://en.wikipedia.org/wiki/HATEOAS ' example: http://pisp-pi-api-webapp/pi-api/v1/payments/123123123 retryFlag: type: boolean description: 'true: The cancel failed due to retriable error.
false: The cancel failed due to non-retriable error. ' example: 'true' RefundRequest: type: object required: - refundAmount - refundReason description: The refundPaymentRequest is used to refund an already processed payment. properties: refundAmount: $ref: '#/components/schemas/Amount' refundReason: type: string minLength: 1 maxLength: 512 description: A free text field e.g. for the reason of the refund. example: Late delivery refundItems: type: array items: $ref: '#/components/schemas/OrderItemData' additionalData: description: 'A list of addtional properties. ' type: array items: $ref: '#/components/schemas/KeyValuePair' RefundResponse: type: object description: 'The Refund Response contains more or less only the link to the transaction ' properties: href: type: string description: 'The URI used e.g. to cancel this transaction. Please see also https://en.wikipedia.org/wiki/HATEOAS ' example: http://pisp-pi-api-webapp/pi-api/v1/payments/123123123 ConfirmResponse: type: object description: 'The Confirm Response contains more or less only the link to the transaction ' properties: href: type: string description: 'The URI used e.g. to cancel this transaction. Please see also https://en.wikipedia.org/wiki/HATEOAS ' example: http://pisp-pi-api-webapp/pi-api/v1/payments/123123123 TransactionDetailsResponse: type: object required: - paymentTransactionData description: 'The GetTransactionsResponse contains a set of already processed payment transactions in the given timeframe. ' properties: paymentTransactionData: $ref: '#/components/schemas/ExtendedTransactionData' PKIKeyResponse: type: object required: - publicKey description: 'The GetTransactionsResponse contains a set of already processed payment transactions in the given timeframe. ' properties: publicKey: $ref: '#/components/schemas/PKIPublicKey' InitiateMerchantSessionResponse: type: object required: - merchantSessionPromise description: 'The GetTransactionsResponse contains a set of already processed payment transactions in the given timeframe. ' properties: merchantSessionPromise: type: string minLength: 1 description: 'The opaque merchant session object. Basically it is a JSON Object. ' example: "{\n \"nonce\": \"1f39c07a\",\n \"retries\": 0,\n \"operationalAnalyticsIdentifier\": \"Apple Pay Demo:A77873CD368A460BD5D3325AD76B01C16BB7F838CFFF654F9A993F4B6A9B4098\"\ ,\n \"displayName\": \"Apple Pay Demo\",\n \"domainName\": \"applepaydemo.apple.com\",\n \"merchantIdentifier\"\ : \"REDACTED\",\n \"epochTimestamp\": 1639123825804,\n \"expiresAt\": 1639127425804,\n \"merchantSessionIdentifier\"\ : \"REDACTED\",\n \"signature\": \"REDACTED\"\n}\n" CreateDeviceRequest: type: object required: - deviceData description: 'This request creates and initializes an external device such as a mobile device or a POS terminal. ' properties: deviceData: $ref: '#/components/schemas/DeviceData' UpdateDeviceRequest: type: object required: - deviceData description: 'This request creates and initializes an external device such as a mobile device or a POS terminal. ' properties: deviceData: $ref: '#/components/schemas/DeviceData' DevicesResponse: type: object required: - devices description: 'The Transaction Response contains an array with links to the transactions ' properties: devices: type: array items: $ref: '#/components/schemas/DeviceData' DeviceInfoResponse: type: object required: - deviceData description: 'The Returns the device info. ' properties: deviceData: $ref: '#/components/schemas/DeviceData' ParticipantName: type: object properties: firstName: type: string minLength: 1 maxLength: 35 description: This field contains participant's first name example: John middleName: type: string minLength: 1 maxLength: 35 description: This field contains participant's middle name example: A lastName: type: string minLength: 1 maxLength: 35 description: This field contains participant's last name example: Doe ParticipantIdentification: type: object required: - idType - idNumber properties: idType: type: string enum: - CUSTOMER_IDENTIFICATION - NATIONAL_IDENTIFICATION_ID - PASSPORT - DRIVERS_LICENSE - TAX_ID - COMPANY_REGISTRATION_NO - PROXY_ID - SOCIAL_SECURITY_NO - ALIEN_REGISTRATION - LAW_ENFORCEMENT - MILITARY_ID - TRAVEL_ID - EMAIL - PHONE_NO - DATE_OF_BIRTH description: This field will contain the type of participant identification. idNumber: type: string minLength: 1 maxLength: 35 description: This field will contain a value associated with the Identification Type in field idType. example: '1234567890' issueCountryCode: $ref: '#/components/schemas/CountryCode' ownerType: $ref: '#/components/schemas/OwnerType' description: "This field denotes whether the Tax ID is a business or individual's Tax ID \nwhen idType contains\ \ the value of TAX_ID (Tax identification).\n" ParticipantAncillaryDetails: allOf: - $ref: '#/components/schemas/ParticipantName' OwnerType: type: string enum: - BUSINESS - INDIVIDUAL description: This field identifies if an entity is for a business or an individual. CurrencyExchangeRate: type: object required: - rate - decimals properties: rate: type: integer format: int64 decimals: type: integer SettlementInfo: type: object required: - settlementAmount properties: settlementAmount: $ref: '#/components/schemas/Amount' exchangeRate: $ref: '#/components/schemas/CurrencyExchangeRate' description: 'Exchange Rate used to convert the transaction amount to settlement amount in case of multi-currency. ' ProcessingType: type: object required: - requestType properties: requestType: type: string enum: - NOT_DEFERRED - ORIGINATOR_HOLD - PAYMENT_PROVIDER_DEFERRED - RECYCLING_PAYOUT description: "The type of a card based transaction, which can be one of the following:
\n
    \n
  • NOT_DEFERED\ \ - Not deferred transaction
  • \n
  • ORIGANATOR_HOLD - This value indicates that the originating acquirer\ \ has held the transaction for \n a period of time before sending to payment provider and is requesting for\ \ payment provider \n to treat the transaction as a deferred transaction.
  • \n
  • PAYMENT_PROVIDER_DEFERRED\ \ - This value indicates that the originating acquirer is requesting \n payment provider to apply the default\ \ holding period (if deferredDataTime is not set) upon receipt and process the request as a deferred transaction.
  • \n\ \
  • RECYCLING_PAYOUT
  • \n
\n" example: NOT_DEFERRED deferredDateTime: type: string format: date-time description: 'The field identifies when the transaction needs to be processed by payment provider.
A timestamp containing date and a time as defined by RFC3339 time.
Please see: Date and Time on the Internet: Timestamps ' example: '2018-04-28T06:14:50.142Z' security: - bearerAuth: [] - openId: []