openapi: 3.2.0 info: title: DN Payment Initiation 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 servers: - url: http://localhost:8080/pi-api/v1 - url: https://localhost:8080/pi-api/v1 security: - bearerAuth: [] - openId: [] 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 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… 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' components: schemas: 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 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' 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.

\nNote: Required if not provided during onboarding.\nNumeric value with total length of 4 digits\nPlease see: ISO 18245:2023, Merchant category codes\n" 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" 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' 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 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 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' 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' 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,
\nwhich V.I.P. forwards in requests and advices to issuers that have successfully tested to receive them.
\nThe subfield is dropped if issuers have not successfully completed testing or choose not to receive it.
\nRefer 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. ' 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 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 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' 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 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' 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. ' 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" 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' CurrencyExchangeRate: type: object required: - rate - decimals properties: rate: type: integer format: int64 decimals: type: integer OwnerType: type: string enum: - BUSINESS - INDIVIDUAL description: This field identifies if an entity is for a business or an individual. 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 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' CardbasedTransactionTypes: type: string description: "The type of a card based transaction, which can be one of the following:
\n\n" enum: - moneyTransferCredit - moneyTransferDebit - purchase example: moneyTransferCredit CardlessPaymentTransactionData: type: object required: - commonTransactionData - userAuthorizationData properties: commonTransactionData: $ref: '#/components/schemas/TransactionData' userAuthorizationData: $ref: '#/components/schemas/UserAuthorizationData' 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" MSISDN: type: object required: - MSISDN properties: MSISDN: $ref: '#/components/schemas/MsisdnString' 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' 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 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 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. ' 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' 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 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' 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' ParticipantAncillaryDetails: allOf: - $ref: '#/components/schemas/ParticipantName' 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. ' 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' CreditBalanceRequest: type: object required: - userAuthorizationData description: 'The CreditBalanceRequest is used to return the available credit balance
' properties: userAuthorizationData: $ref: '#/components/schemas/UserAuthorizationData' 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 InitiateCardBasedPaymentResponse: allOf: - $ref: '#/components/schemas/CardbasedPaymentBaseResponse' - type: object properties: detailedResponseCode: type: array items: $ref: '#/components/schemas/DetailedResponseCode' settlementInfo: $ref: '#/components/schemas/SettlementInfo' 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" CardBasedError: allOf: - $ref: '#/components/schemas/Error' - type: object properties: detailedResponseCode: type: array items: $ref: '#/components/schemas/DetailedResponseCode' transactionState: $ref: '#/components/schemas/TransactionStatus' 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' 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' 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" 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 AcquirerInformation: type: object required: - acquiringBin - acquirerCountryCode properties: acquiringBin: $ref: '#/components/schemas/BIN' acquirerCountryCode: $ref: '#/components/schemas/CountryCode' 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' 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 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 CardData: description: "Contains all card or account related data, which are used and specific for a card based payment.
\nAttention!
\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' PaymentAuthorizationData: description: The basic type of an amount. type: object required: - purchaseAmount - msisdn properties: amountToAuthorize: $ref: '#/components/schemas/Amount' msisdn: $ref: '#/components/schemas/MSISDN' 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' 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 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' PaymentProviderTransactionIdentifier: description: The transactionId in the payment providers domain/eco-system. type: string example: 343545544423-34344317 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. 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
    \n
  • CardlessPayment - Initiate a cardless payment transaction
  • \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\nsystem 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' parameters: 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 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' 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== CardBasedTransactionType: name: cardBasedTransactionType in: path required: true schema: $ref: '#/components/schemas/CardbasedTransactionTypes' example: moneyTransferCredit 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' 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\nand 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 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 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' 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 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 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 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 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 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 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 responses: InternalServerError500: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/Error' MethodNotAllowed405: description: Method Not Allowed content: application/json: schema: $ref: '#/components/schemas/Error' CardBasedInternalServerError500: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/CardBasedError' NotFound404: description: Not found content: application/json: schema: $ref: '#/components/schemas/Error' Conflict409: description: Conflict; The authorization has failed. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized401: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest400: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' 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 externalDocs: description: Find out more about Swagger url: https://swagger.io