openapi: 3.2.0 info: title: Ppro Payment Agreements API version: v1 description: 'Operations tagged Payment Agreements across 2 of this provider''s published API definitions: ppro-payment-agreements-openapi.yml, ppro-payment-agreements.json. Each path carries the servers of the definition it was published in.' servers: - url: https://api.sandbox.eu.ppro.com description: Production - Sandbox environment for integration testing - url: https://api.qa.eu.ppro.com/v1/payment-agreements description: QA security: - bearer_token: [] tags: - name: Payment Agreements paths: /v1/payment-agreements: post: tags: - Payment Agreements summary: Create a Payment Agreement operationId: createAgreement parameters: - name: Merchant-Id in: header description: The merchant identifier. required: true schema: type: string example: merch_cb6RQnZbBwSBkn34QYXhr requestBody: content: application/json: schema: $ref: '#/components/schemas/AgreementRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AgreementResponse' '504': description: Call to the upstream dependency timed out. content: application/json: schema: $ref: '#/components/schemas/ExceptionResponseBody' servers: - url: https://api.sandbox.eu.ppro.com description: Production - Sandbox environment for integration testing - url: https://api.qa.eu.ppro.com/v1/payment-agreements description: QA /v1/payment-agreements/{agreement-id}: get: tags: - Payment Agreements summary: Retrieve a Payment Agreement operationId: fetchPaymentAgreement parameters: - name: agreement-id in: path required: true schema: type: string - name: Merchant-Id in: header description: The merchant identifier. required: true schema: type: string example: merch_cb6RQnZbBwSBkn34QYXhr responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AgreementResponse' '504': description: Call to the upstream dependency timed out. content: application/json: schema: $ref: '#/components/schemas/ExceptionResponseBody' servers: - url: https://api.sandbox.eu.ppro.com description: Production - Sandbox environment for integration testing - url: https://api.qa.eu.ppro.com/v1/payment-agreements description: QA components: schemas: AdditionalData: type: object properties: merchantAdviceCode: type: string description: Merchant Advice Code (MAC) returned by the payment network on decline, indicating whether and when the payment may be retried. merchantAdviceCodeText: type: string description: Human-readable explanation of the Merchant Advice Code (MAC). RedirectAuthenticationSettingsDetails: type: object properties: returnUrl: type: string description: The page where the consumer should be redirected to after the payment succeeds. example: https://example.com/order_details?order_id=12345 AuthenticationMethod: type: object discriminator: propertyName: type mapping: APP_INTENT: '#/components/schemas/AppIntentAuthenticationMethod' 3DS: '#/components/schemas/ThreeDsAuthenticationMethod' SCAN_CODE: '#/components/schemas/ScanCodeAuthenticationMethod' MULTI_FACTOR: '#/components/schemas/MultiFactorAuthenticationMethod' APP_NOTIFICATION: '#/components/schemas/AppNotificationAuthenticationMethod' REDIRECT: '#/components/schemas/RedirectAuthenticationMethod' properties: details: {} type: type: string enum: - REDIRECT - SCAN_CODE - APP_INTENT - APP_NOTIFICATION - MULTI_FACTOR - EXTERNAL_3DS - 3DS RawCardInstrument: allOf: - $ref: '#/components/schemas/PaymentInstrument' - properties: details: description: The card details properties: brand: description: The card brand.
The value must be provided in uppercase. example: VISA number: description: The primary account number (PAN) of the card used for the payment. example: '4444333322221111' cvv: description: Card Verification Value used to authenticate the card during a payment. example: '123' holderName: description: The full name of the cardholder as it appears on the card. example: John Smith expiryMonth: format: int32 description: The two-digit expiration month of the card. example: '1' maximum: 12 minimum: 1 expiryYear: format: int32 description: The four-digit expiration year of the card. example: '2031' minimum: 2000 required: - expiryMonth - expiryYear - holderName - number validate: description: If included, PPRO will try to validate the instrument with a nominal-amount authorization. If validation fails, the instrument creation request will fail properties: currency: description: ISO 4217 3-letter currency code. example: EUR maxLength: 3 minLength: 3 taxIdentification: description: The consumer's tax identification number, like CUIT in Argentina, CPF in Brazil, RUT in Chile, NIF in Spain or Portugal, Numéro fiscal in France, and Codice Fiscale in Italy, or the equivalent tax identifier applicable in the consumer's country. example: '798154336790' required: - currency type: description: The `RAW_CARD` payment instrument type. enum: - RAW_CARD required: - details title: Payment Instrument (RAW_CARD) HistoryEntryResponse: type: object properties: id: type: string description: The history entry ID example: ahist_pmCQxjxTj35kx6KaSgOJh status: type: string description: The history entry status enum: - INITIALIZING - AUTHENTICATION_PENDING - AUTHORIZATION_PROCESSING - ACTIVE - REVOKED_BY_CONSUMER - REVOKED_BY_MERCHANT - REVOKED_BY_PROVIDER - FAILED example: ACTIVE failure: type: 'null' $ref: '#/components/schemas/ProcessingFailure' description: The processing failure, if the operation failed. createdAt: type: string format: date-time description: The history entry timestamp example: '2023-03-26T20:24:27.123Z' ExternalThreeDs: type: object properties: authenticationStatus: type: string description: The 3DS authentication status code. enum: - SUCCESS - ATTEMPT_ACKNOWLEDGED - FAILED - AUTHENTICATION_UNAVAILABLE authenticationStatusReason: type: string description: The 3DS authentication status reason. enum: - CARD_AUTHENTICATION_FAILED - UNKNOWN_DEVICE - UNSUPPORTED_DEVICE - EXCEEDS_AUTHENTICATION_FREQUENCY_LIMIT - EXPIRED_CARD - INVALID_CARD_NUMBER - INVALID_TRANSACTION - NO_CARD_RECORD - SECURITY_FAILURE - STOLEN_CARD - SUSPECTED_FRAUD - TRANSACTION_NOT_PERMITTED_TO_CARDHOLDER - CARDHOLDER_NOT_ENROLLED_IN_SERVICE - TRANSACTION_TIMED_OUT_AT_THE_ACS - LOW_CONFIDENCE - MEDIUM_CONFIDENCE - HIGH_CONFIDENCE - VERY_HIGH_CONFIDENCE - EXCEEDS_ACS_MAXIMUM_CHALLENGES - NON_PAYMENT_TRANSACTION_NOT_SUPPORTED - THREE_RI_TRANSACTION_NOT_SUPPORTED authenticationValue: type: string description: The 3DS authentication CAVV. authenticationAlgorithm: type: string description: The 3DS authentication CAVV algorithm used. authenticationMode: type: string description: The 3DS authentication mode. enum: - SCA - FRICTIONLESS eci: type: string description: The 3DS authentication ECI. version: type: string description: The 3DS authentication version. externalId: type: string description: The 3DS authentication transaction identifier. externalAcsId: type: string description: The 3DS universally unique transaction identifier assigned by the ACS to identify a single transaction. Canonical format as defined in IETF RFC 4122. example: 4dc406b0-038d-43ef-a96c-c85352c5e2c0 score: type: string description: The 3DS score. challenge: $ref: '#/components/schemas/Challenge' description: The 3DS authentication challenge details. outOfScope: $ref: '#/components/schemas/OutOfScope' description: The 3DS out of scope object, to be used if the payment is out of scope of SCA RedirectAuthenticationDetails: type: object properties: requestUrl: type: string description: The URL where the consumer should be redirected in order to authenticate the agreement. requestMethod: type: string description: The redirect HTTP method. enum: - GET - POST MultiFactorAuthenticationSettingsDetails: type: object properties: verificationCode: type: string description: Code generated to authenticate the user. example: '777123' AirlineIndustryData: allOf: - $ref: '#/components/schemas/IndustryData' - type: object properties: details: $ref: '#/components/schemas/AirlineDetails' description: The airline industry specific details. type: type: string description: The AIRLINE industry data type. enum: - AIRLINE required: - details title: Industry Data (AIRLINE) RevocationResponse: type: object properties: id: type: string description: The revocation ID example: rev_pmCQxjxTj35kx6KaSgOJh revocationStatus: type: string description: The revocation status enum: - REVOKED_BY_CONSUMER - REVOKED_BY_PROVIDER - REVOKED_BY_MERCHANT - REVOCATION_FAILED example: ACTIVE failure: type: 'null' $ref: '#/components/schemas/ProcessingFailure' description: The processing failure, if revocation failed. createdAt: type: string format: date-time description: The revocation timestamp example: '2023-03-26T20:24:27.123Z' Challenge: type: object properties: preference: type: string description: The 3DS authentication challenge initialization preference. enum: - NO_PREFERENCE - NO_CHALLENGE_REQUESTED - CHALLENGE_REQUESTED - CHALLENGE_MANDATED - DATA_ONLY outcome: type: string description: The 3DS authentication challenge outcome. enum: - CHALLENGE - FRICTIONLESS - DATA_ONLY exemptionReason: type: string description: The 3DS authentication challenge exemption reason. enum: - LOW_VALUE - LOW_RISK - TRUSTED_BENEFICIARY - FIXED_RECURRING cancellationReason: type: string description: The 3DS challenge cancellation indicator.Mandatory for CB transactions. enum: - CARDHOLDER_CANCELLED - REQUESTOR_CANCELLED - TRANSACTION_ABANDONED - TRANSACTION_TIMEOUT_ACS_OTHER - TRANSACTION_TIMEOUT_ACS_CREQ_NOT_RECEIVED - TRANSACTION_ERROR - UNKNOWN ProcessingFailure: type: object properties: failureType: type: string description: The failure type. enum: - INTERNAL_ERROR - INTERNAL_DECLINE - PROVIDER_ERROR - PROVIDER_DECLINE failureCode: type: string description: The failure code. providerFailureCode: type: string description: The payment provider failure code. failureMessage: type: string description: The failure message. isRetryable: type: boolean description: Indicates whether the merchant should create a fresh new attempt, where initiating a fresh new attempt at a later time may potentially result in a successful outcome. additionalData: $ref: '#/components/schemas/AdditionalData' TravelDetails: type: object properties: travelType: type: string description: The travel type enum: - UNKNOWN - ONE_WAY - TWO_WAY - MULTIPLE example: MULTIPLE departureDate: type: string format: date description: Departure date example: '2025-06-10' returnDate: type: string format: date description: Return date example: '2025-06-15' departureLocation: type: string description: Departure location, if flight then provide IATA Airport Code example: Berlin arrivalLocation: type: string description: Arrival location, if flight then provide IATA Airport Code example: Madrid destinationCountry: type: string description: Destination country example: ES travelCompany: type: string description: Travel company name example: My Travel Company GmbH travelerCount: type: integer format: int64 description: Total number of travelers example: 4 buyerAmongTravelers: type: boolean description: Is the buyer consumer among travelers? example: true travelClass: type: string description: The class of travel example: PREMIUM travelInsured: type: boolean description: Whether the travel is insured? example: true travelDiscountVoucher: type: string description: Travel discount voucher example: TWENTY-OFF luggageSupplement: type: boolean description: Whether availing luggage supplement? example: true travelCanBeModifiedOrCanceled: type: boolean description: Can the travel be modified or canceled? example: true stayCompany: type: string description: Stay company name example: Hotel XYZ stayDestination: type: string description: Stay destination example: Madrid stayNightsCount: type: integer format: int64 description: Stay nights count example: 4 stayRoomRange: type: string description: Stay room category example: 4_STARS BancontactAccountDetails: type: object properties: bin: type: string description: The bank identification number example: '1234' maxLength: 8 minLength: 6 pattern: ^(\d{6}|\d{8})$ last4Digits: type: string description: The last 4 digits of the card example: '1234' maxLength: 4 minLength: 4 pattern: ^\d+$ expiryMonth: type: integer format: int32 description: The card expiration month example: 1 maximum: 12 minimum: 1 expiryYear: type: integer format: int32 description: The card expiration year example: 2024 minimum: 2000 panAlias: type: string description: The card PAN alias minLength: 1 required: - bin - expiryMonth - expiryYear - last4Digits - panAlias AirlineDetails: type: object properties: pnr: type: string description: The passenger number record example: SKJ2NS01AS minLength: 1 numberOfPassengers: type: integer format: int32 description: The number of passengers example: 1 minimum: 1 airlineCode: type: string description: The airline code example: '016' passengerEmail: type: string description: The passenger email example: john@gmail.com passengerPhone: type: string description: The passenger phone number example: '14082319231' passengerName: type: string description: The passenger name example: John Doe carrierCode: type: string description: The airline carrier code example: '016' tripSegments: type: array description: The trip segment details items: $ref: '#/components/schemas/AirlineTripSegment' required: - pnr ScanCodeAuthenticationSettings: allOf: - $ref: '#/components/schemas/AuthenticationSettings' - type: object properties: settings: $ref: '#/components/schemas/ScanCodeAuthenticationSettingsDetails' description: The SCAN_CODE authentication settings. type: type: string description: The SCAN_CODE authentication type settings. enum: - SCAN_CODE title: Authentication Settings (SCAN_CODE) AppIntentAuthenticationMethod: allOf: - $ref: '#/components/schemas/AuthenticationMethod' - type: object properties: details: $ref: '#/components/schemas/AppIntentAuthenticationDetails' description: The APP_INTENT authentication details. type: type: string description: The APP_INTENT authentication type. enum: - APP_INTENT title: Authentication Method (APP_INTENT) RedirectAuthenticationSettings: allOf: - $ref: '#/components/schemas/AuthenticationSettings' - type: object properties: settings: $ref: '#/components/schemas/RedirectAuthenticationSettingsDetails' description: The REDIRECT authentication settings. type: type: string description: The REDIRECT authentication type settings. enum: - REDIRECT title: Authentication Settings (REDIRECT) AuthenticationSettings: discriminator: propertyName: type mapping: 3DS: '#/components/schemas/ThreeDsAuthenticationSettings' SCAN_CODE: '#/components/schemas/ScanCodeAuthenticationSettings' EXTERNAL_3DS: '#/components/schemas/ExternalThreeDsAuthenticationSettings' MULTI_FACTOR: '#/components/schemas/MultiFactorAuthenticationSettings' APP_NOTIFICATION: '#/components/schemas/AppNotificationAuthenticationSettings' REDIRECT: '#/components/schemas/RedirectAuthenticationSettings' properties: type: type: string required: - type AppNotificationAuthenticationSettings: allOf: - $ref: '#/components/schemas/AuthenticationSettings' - type: object properties: settings: $ref: '#/components/schemas/AppNotificationAuthenticationSettingsDetails' description: The APP_NOTIFICATION authentication settings. type: type: string description: The APP_NOTIFICATION authentication type settings. enum: - APP_NOTIFICATION title: Authentication Settings (APP_NOTIFICATION) ScanCodeAuthenticationDetails: type: object properties: codeType: type: string description: The type of the scan or of the code payload. enum: - QR - UPC - ITF - CODE128 - PAYMENT_REFERENCE codeImage: type: string description: The pre-generated scan code image for the ease of integration. example: https://authman-mobileapp.ppro.com/qr.png?payload=dXBpR2xvYmFsOi8vc3RhcnRfdHJhbnNhY3Rpb24/dHI9MTIzJmZyb21fcXI9dHJ1ZQ== codePayload: type: string description: The payload for the scan code or for the reference to construct the image or the UX on the partners side. example: upiGlobal://pay?tr=123&from_desktop=true codeDocument: type: string description: The URL of the pdf/html pay slip document. example: https://urltodocument.com codeProviderEntityId: type: string description: The provider entity ID.The identifier of the code provider entity. example: '45648' scanBy: type: string format: date-time description: The custom expiry timestamp (ISO 8601 format) before which the consumer is expected to complete the payment. example: '2023-03-26T20:24:27.123Z' RedirectAuthenticationMethod: allOf: - $ref: '#/components/schemas/AuthenticationMethod' - type: object properties: details: $ref: '#/components/schemas/RedirectAuthenticationDetails' description: The REDIRECT authentication details. type: type: string description: The REDIRECT authentication type. enum: - REDIRECT title: Authentication Method (REDIRECT) AppNotificationAuthenticationDetails: {} ExternalThreeDsAuthenticationSettings: allOf: - $ref: '#/components/schemas/AuthenticationSettings' - type: object properties: settings: $ref: '#/components/schemas/ExternalThreeDs' description: The EXTERNAL_3DS authentication settings. type: type: string description: The `EXTERNAL_3DS` authentication type. enum: - EXTERNAL_3DS title: Authentication Settings (EXTERNAL_3DS) Client: type: object properties: ip: type: string description: The IP address of the client example: 11.22.22.33 userAgent: type: string description: The user agent of the client device example: Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36 maxLength: 500 minLength: 0 MultiFactorAuthenticationSettings: allOf: - $ref: '#/components/schemas/AuthenticationSettings' - type: object properties: settings: $ref: '#/components/schemas/MultiFactorAuthenticationSettingsDetails' description: The MULTI_FACTOR authentication settings. type: type: string description: The MULTI_FACTOR authentication type settings. enum: - MULTI_FACTOR title: Authentication Settings (MULTI_FACTOR) Frequency: type: object properties: type: type: string description: The type of frequency between consecutive payment charges. enum: - DAILY - WEEKLY - MONTHLY - YEARLY example: MONTHLY interval: type: integer format: int32 default: 1 description: The interval between consecutive payment charges. The unit of the interval depends on the frequency type. For example, if type is MONTHLY and interval is 3, it means every 3 months. example: 3 maximum: 1000 minimum: 1 required: - type Consumer: type: object properties: name: type: string description: The consumer name. example: John Smith email: type: string description: The consumer email. example: johnsmith@example.com phone: type: string description: The consumer phone number. example: '+491521111111' birthDate: type: string format: date description: The consumer birth date. example: '1995-06-06' country: type: string description: 2-letter ISO code of the country where the payment instrument or account has been issued or established (for example GB, US, DE). example: DE locale: type: string description: The locale describing the preferred language of the consumer example: de-DE client: $ref: '#/components/schemas/Client' description: Consumer's client data taxIdentification: type: string description: The consumer's tax identification number, like CUIT in Argentina, CPF in Brazil, RUT in Chile, NIF in Spain or Portugal, Numéro fiscal in France, and Codice Fiscale in Italy, or the equivalent tax identifier applicable in the consumer's country. example: 0798154336790 merchantConsumerReference: type: string description: The merchant provided reference for the consumer. example: 5c019979-0751-469e-96e0-b67f1d95c577 billingAddress: $ref: '#/components/schemas/Address' description: The consumer's billing address. profile: $ref: '#/components/schemas/Profile' description: The consumer's profile details as available from the merchant required: - country UpiAutopayInstrument: allOf: - $ref: '#/components/schemas/PaymentInstrument' - type: object properties: type: type: string description: The UPI_AUTOPAY payment instrument type enum: - UPI_AUTOPAY title: Payment Instrument (UPI_AUTOPAY) AgreementResponse: type: object properties: id: type: string description: The payment agreement ID example: agr_pmCQxjxTj35kx6KaSgOJh status: type: string description: The payment agreement status enum: - INITIALIZING - AUTHENTICATION_PENDING - AUTHORIZATION_PROCESSING - ACTIVE - REVOKED_BY_CONSUMER - REVOKED_BY_MERCHANT - REVOKED_BY_PROVIDER - FAILED example: ACTIVE failure: $ref: '#/components/schemas/ProcessingFailure' description: The latest payment agreement processing failure. description: type: string description: The description of the agreement merchantPaymentAgreementReference: type: string description: The merchant payment agreement reference paymentMethod: type: string description: The payment method which was used to process the payment charge. example: UPI_AUTOPAY frequency: $ref: '#/components/schemas/Frequency' description: The frequency of payment charges startDate: type: string format: date-time description: The start date of the agreement example: '2023-03-26T20:24:27.123Z' endDate: type: string format: date-time description: The end date of the agreement example: '2023-03-26T20:24:27.123Z' amount: $ref: '#/components/schemas/Money' description: Defines the amount of each subsequent payment charge. Defined in conjunction with 'amountType'. instrumentId: type: string description: The ID of the payment instrument associated with the agreement. instrumentUpdated: type: boolean description: Indicates that the Payment Instrument has been updated during processing. Query Payment Instruments to retrieve the new details. amountType: type: string description: Defines if the provided 'amount' is a maximum value or an exact value. enum: - MAX - EXACT - VARIABLE consumer: $ref: '#/components/schemas/Consumer' description: The consumer details to be used in subsequent payment charges. authenticationMethods: type: array description: The available authentication methods for the authorization. items: oneOf: - $ref: '#/components/schemas/AppIntentAuthenticationMethod' - $ref: '#/components/schemas/AppNotificationAuthenticationMethod' - $ref: '#/components/schemas/MultiFactorAuthenticationMethod' - $ref: '#/components/schemas/RedirectAuthenticationMethod' - $ref: '#/components/schemas/ScanCodeAuthenticationMethod' - $ref: '#/components/schemas/ThreeDsAuthenticationMethod' history: type: array description: History of changes regarding the agreement status example: - id: ahist_ufJuwjMY21NVK4dkjee3 status: SUCCEDED createdAt: '2023-03-26T20:24:27.123Z' items: $ref: '#/components/schemas/HistoryEntryResponse' revocations: type: array description: Agreement revocation attempts example: - id: rev_ufJuwjMY21NVK4dkjee3 revocationStatus: REVOKED_BY_MERCHANT createdAt: '2023-03-26T20:24:27.123Z' items: $ref: '#/components/schemas/RevocationResponse' initialPaymentChargeId: type: string description: The payment charge ID of the initial charge generated by this agreement initialSchemeAuthorizationReference: type: string description: The initial scheme authorization reference, eg. for cards network transaction identifier (NTI) example: XPTO initialTransactionLinkReference: type: string description: 'Transaction Link Reference or Id (ex: Mastercard TLID) is a unique identifier for a transaction, used by some card networks for transaction chain linking, this is in addition to Network Transaction Identifiers. Provide the initial TLID when creating the subsequent Merchant-Initiated-Transactions.' example: atf3_8msFoZ6klReRDlQwn createdAt: type: string format: date-time description: The agreement creation timestamp in ISO 8601 format. example: '2023-03-26T20:24:27.123Z' updatedAt: type: string format: date-time description: The agreement update timestamp in ISO 8601 format. example: '2023-03-26T20:24:27.123Z' labels: type: object additionalProperties: type: string example: GTM_Campaign maxLength: 200 description: Custom labels associated with this payment agreement. maxProperties: 50 propertyNames: type: string example: consumer_origin maxLength: 50 AirlineTripSegment: type: object properties: fareBasisCode: type: string description: The fare basis code example: YE3MGB departureAirportCode: type: string description: The departure airport code example: MAN destinationAirportCode: type: string description: The destination airport code example: SYD flightNumber: type: string description: The flight number example: BA98 departureDate: type: string format: date description: The departure date example: '2025-01-01' flightCarrierCode: type: string description: The flight carrier code example: '016' segmentId: type: string description: The trip segment ID example: '1' ConsumerUpdate: type: object properties: taxIdentification: type: string description: The consumer's tax identification number, like CUIT in Argentina, CPF in Brazil, RUT in Chile, NIF in Spain or Portugal, Numéro fiscal in France, and Codice Fiscale in Italy, or the equivalent tax identifier applicable in the consumer's country. example: '798154336790' client: $ref: '#/components/schemas/Client' description: Consumer's client data ScanCodeAuthenticationMethod: allOf: - $ref: '#/components/schemas/AuthenticationMethod' - type: object properties: details: $ref: '#/components/schemas/ScanCodeAuthenticationDetails' description: The SCAN_CODE authentication details. type: type: string description: The SCAN_CODE authentication type. enum: - SCAN_CODE title: Authentication Method (SCAN_CODE) MultiFactorAuthenticationDetails: {} PaymentCharge: type: object properties: initiator: type: string description: The charge initiator enum: - MERCHANT - CONSUMER scheduleType: type: string description: Indicates the type of payment charge being processed. Use UNSCHEDULED for a one-off charge not tied to a schedule. Use SCHEDULED for charge that is part of a recurring schedule. Use SCHEDULED_RETRY for a retry attempt of a previously failed scheduled payment. The RECURRING enum is planned for deprecation and should not be used in new implementations. enum: - SCHEDULED - SCHEDULED_RETRY - UNSCHEDULED - RECURRING paymentDescriptor: type: string description: The transaction descriptor (arbitrary string). May be presented to the consumer. example: PPRO - ORDER 1234 amount: $ref: '#/components/schemas/Money' description: The amount to be authorized. autoCapture: type: boolean description: Indicates whether the payment charge should be automatically captured after a successful authorization. example: false order: $ref: '#/components/schemas/Order' description: The order details. merchantPaymentChargeReference: type: string description: The merchant payment charge reference. Aka, Transaction Reference. example: 5c019979-0751-469e-96e0-b67f1d95c577 webhooksUrl: type: string description: The URL to which the payment charge state changes will be notified pattern: ^(https)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|] authenticationSettings: type: array description: The authorization authentication settings. items: discriminator: propertyName: type mapping: REDIRECT: '#/components/schemas/RedirectAuthenticationSettings' EXTERNAL_3DS: '#/components/schemas/ExternalThreeDsAuthenticationSettings' 3DS: '#/components/schemas/ThreeDsAuthenticationSettings' SCAN_CODE: '#/components/schemas/ScanCodeAuthenticationSettings' APP_NOTIFICATION: '#/components/schemas/AppNotificationAuthenticationSettings' MULTI_FACTOR: '#/components/schemas/MultiFactorAuthenticationSettings' oneOf: - allOf: - $ref: '#/components/schemas/RedirectAuthenticationSettings' title: Authentication Settings - allOf: - $ref: '#/components/schemas/ExternalThreeDsAuthenticationSettings' title: Authentication Settings - allOf: - $ref: '#/components/schemas/ThreeDsAuthenticationSettings' title: Authentication Settings - allOf: - $ref: '#/components/schemas/ScanCodeAuthenticationSettings' title: Authentication Settings - allOf: - $ref: '#/components/schemas/AppNotificationAuthenticationSettings' title: Authentication Settings - allOf: - $ref: '#/components/schemas/MultiFactorAuthenticationSettings' title: Authentication Settings consumer: $ref: '#/components/schemas/ConsumerUpdate' description: The consumer details to override the agreement consumer. labels: type: object additionalProperties: type: string example: GTM_Campaign maxLength: 200 description: Custom labels associated with the payment agreement charge. maxProperties: 50 propertyNames: type: string example: consumer_origin maxLength: 50 title: Add Labels required: - amount ThreeDsAuthenticationMethod: allOf: - $ref: '#/components/schemas/AuthenticationMethod' - type: object properties: details: $ref: '#/components/schemas/ThreeDsAuthenticationDetails' description: The 3DS authentication details. type: type: string description: The `3DS` authentication type. enum: - 3DS title: Authentication Method (3DS) ExceptionResponseBody: type: object properties: status: type: integer format: int32 failureMessage: type: string timestamp: type: string format: date-time extensions: type: object additionalProperties: {} ThreeDsAuthenticationSettingsDetails: type: object properties: returnUrl: type: string description: The URL to which the consumer is redirected after completing the 3D Secure authentication flow. example: https://www.ppro.com/ preference: type: string description: The preferred 3D Secure authentication flow. enum: - CHALLENGE - FRICTIONLESS ThreeDsAuthenticationSettings: allOf: - $ref: '#/components/schemas/AuthenticationSettings' - type: object properties: settings: $ref: '#/components/schemas/ThreeDsAuthenticationSettingsDetails' description: The 3DS authentication settings. type: type: string description: The `3DS` authentication type. enum: - 3DS title: Authentication Settings (3DS) Profile: type: object properties: createdDate: type: string format: date description: Profile creation date example: '2025-01-01' firstOrderDate: type: string format: date description: Date of first order example: '2025-01-05' lastOrderDate: type: string format: date description: Date of recent order example: '2025-06-06' lifetimeOrderCount: type: integer format: int64 description: Total number of successful orders example: 10 lifetimeOrderValue: type: integer format: int64 description: Total lifetime order value example: 1000 lifetimeCanceledOrderCount: type: integer format: int64 description: Total number of canceled orders example: 1 ScanCodeAuthenticationSettingsDetails: type: object properties: scanBy: type: string format: date-time description: Custom expiry date in ISO 8601 format. example: '2023-03-26T20:24:27.123Z' Address: type: object properties: firstName: type: string description: The address first name. example: John lastName: type: string description: The address last name. example: Smith phoneNumber: type: string description: The address phone number. example: '01522113356' street: type: string description: Street name, house number and other details such as apartment number or door number example: Maple Street 102/B postalCode: type: string description: The address postal code. example: '41460' city: type: string description: The address city. example: Berlin region: type: string description: The address region. example: Berlin country: type: string description: The address country. example: DE PassthroughWalletDetails: type: object properties: fundingType: type: string description: The type of funding to be used by the provider for the agreement or the charge enum: - CREDIT - DEBIT CardNetworkTokenDetails: type: object properties: brand: type: string description: The card brand example: VISA minLength: 1 holderName: type: string description: The card holder name example: John Smith minLength: 1 expiryMonth: type: integer format: int32 description: The network token expiration month example: 1 maximum: 12 minimum: 1 expiryYear: type: integer format: int32 description: The network token expiration year example: 2024 minimum: 2000 tokenNumber: type: string description: The network token number defined by the card network example: '5598830000009001' minLength: 1 eci: type: string description: The electronic commerce indicator from the card issuer example: '07' cryptogram: type: string description: The network token cryptogram example: CCADBxYzRTBBXXXXXXXYZa0AbZD= required: - brand - expiryMonth - expiryYear - holderName - tokenNumber ThreeDsAuthenticationDetails: type: object properties: requestUrl: type: string description: The URL where the consumer should be redirected in order to complete the 3D Secure authentication. example: https://authman.sandbox.lp-pl.ppro.com/v0/pages/?redirection_token=token requestMethod: type: string description: The redirect HTTP method. enum: - GET - POST AgreementRequest: type: object properties: paymentMethod: type: string description: The payment method which should be used to process the payment charge. example: UPI_AUTOPAY minLength: 1 paymentMedium: type: string default: ECOMMERCE description: The payment medium. enum: - ECOMMERCE - MOTO - POS example: ECOMMERCE description: type: string description: The description of the agreement maxLength: 100 minLength: 0 merchantPaymentAgreementReference: type: string description: The merchant payment agreement reference. example: 5c019979-0751-469e-96e0-b67f1d95c577 frequency: $ref: '#/components/schemas/Frequency' description: The frequency of payment charges startDate: type: string format: date-time description: The start date of the agreement example: '2023-03-26T20:24:27+00:00' endDate: type: string format: date-time description: The end date of the agreement example: '2023-11-27T09:30:00+00:00' amount: $ref: '#/components/schemas/Money' description: Defines the amount of each subsequent payment charge. Defined in conjunction with 'amountType'. amountType: type: string description: Defines if the provided 'amount' is a maximum value or an exact value. enum: - MAX - EXACT - VARIABLE instrumentId: type: string description: The identifier of an existing payment instrument. Instruments are used for account on file payments. example: instr_SNaRMvhYNFpXhEhgTVSed instrument: description: The payment instrument oneOf: - $ref: '#/components/schemas/BancontactAccountInstrument' - $ref: '#/components/schemas/BankAccountInstrument' - $ref: '#/components/schemas/CardNetworkTokenInstrument' - $ref: '#/components/schemas/MockInstrument' - $ref: '#/components/schemas/PassthroughWalletInstrument' - $ref: '#/components/schemas/UpiAutopayInstrument' - $ref: '#/components/schemas/RawCardInstrument' paymentSessionId: type: string description: The identifier of the associated payment-session. Payment-sessions are created by the drop-in UI. example: sess_hb8BQ2kbhpHRmE29T6ajx consumer: $ref: '#/components/schemas/Consumer' description: The consumer details. webhooksUrl: type: string description: The URL to which the agreement state changes will be notified pattern: ^(https)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|] initialPaymentCharge: $ref: '#/components/schemas/PaymentCharge' description: An initial payment charge to be created when initializing the agreement in a "link and pay" journey authenticationSettings: type: array description: The authorization authentication settings. items: discriminator: propertyName: type mapping: REDIRECT: '#/components/schemas/RedirectAuthenticationSettings' EXTERNAL_3DS: '#/components/schemas/ExternalThreeDsAuthenticationSettings' 3DS: '#/components/schemas/ThreeDsAuthenticationSettings' SCAN_CODE: '#/components/schemas/ScanCodeAuthenticationSettings' APP_NOTIFICATION: '#/components/schemas/AppNotificationAuthenticationSettings' MULTI_FACTOR: '#/components/schemas/MultiFactorAuthenticationSettings' oneOf: - allOf: - $ref: '#/components/schemas/RedirectAuthenticationSettings' title: Authentication Settings - allOf: - $ref: '#/components/schemas/ExternalThreeDsAuthenticationSettings' title: Authentication Settings - allOf: - $ref: '#/components/schemas/ThreeDsAuthenticationSettings' title: Authentication Settings - allOf: - $ref: '#/components/schemas/ScanCodeAuthenticationSettings' title: Authentication Settings - allOf: - $ref: '#/components/schemas/AppNotificationAuthenticationSettings' title: Authentication Settings - allOf: - $ref: '#/components/schemas/MultiFactorAuthenticationSettings' title: Authentication Settings initialSchemeAuthorizationReference: type: string description: The initial scheme authorization reference, eg. for cards network transaction identifier (NTI) example: XPTO initialTransactionLinkReference: type: string description: 'Transaction Link Reference or Id (ex: Mastercard TLID) is a unique identifier for a transaction, used by some card networks for transaction chain linking, this is in addition to Network Transaction Identifiers. Provide the initial TLID when creating the subsequent Merchant-Initiated-Transactions.' example: atf3_8msFoZ6klReRDlQwn labels: type: object additionalProperties: type: string example: GTM_Campaign maxLength: 200 description: Custom labels associated with the payment agreement. maxProperties: 50 propertyNames: type: string example: consumer_origin maxLength: 50 title: Add Labels required: - consumer - paymentMethod AppNotificationAuthenticationSettingsDetails: type: object properties: instrumentProviderIdentity: type: string description: App identifier, for instance email, phone number example: '+34700000000' MultiFactorAuthenticationMethod: allOf: - $ref: '#/components/schemas/AuthenticationMethod' - type: object properties: details: $ref: '#/components/schemas/MultiFactorAuthenticationDetails' description: The MULTI_FACTOR authentication details. type: type: string description: The MULTI_FACTOR authentication type. enum: - MULTI_FACTOR title: Authentication Method (MULTI_FACTOR) MockInstrument: allOf: - $ref: '#/components/schemas/PaymentInstrument' - type: object properties: details: type: object additionalProperties: type: string description: The MOCK payment details type: type: string description: The MOCK payment instrument type enum: - MOCK title: Payment Instrument (MOCK) IndustryData: discriminator: propertyName: type mapping: AIRLINE: '#/components/schemas/AirlineIndustryData' TRAVEL: '#/components/schemas/TravelIndustryData' EDUCATION: '#/components/schemas/EducationIndustryData' properties: type: type: string required: - type OutOfScope: type: object properties: reason: type: string description: The 3DS out of scope reason, to be used to indicate the reason if the payment is out of scope of SCA enum: - MIT - MOTO - ONE_LEG_OUT - ANONYMOUS AppNotificationAuthenticationMethod: allOf: - $ref: '#/components/schemas/AuthenticationMethod' - type: object properties: details: $ref: '#/components/schemas/AppNotificationAuthenticationDetails' description: The APP_NOTIFICATION authentication details. type: type: string description: The APP_NOTIFICATION authentication type. enum: - APP_NOTIFICATION title: Authentication Method (APP_NOTIFICATION) PaymentInstrument: discriminator: propertyName: type mapping: RAW_CARD: '#/components/schemas/RawCardInstrument' BANK_ACCOUNT: '#/components/schemas/BankAccountInstrument' UPI_AUTOPAY: '#/components/schemas/UpiAutopayInstrument' CARD_NETWORK_TOKEN: '#/components/schemas/CardNetworkTokenInstrument' PASSTHROUGH_WALLET: '#/components/schemas/PassthroughWalletInstrument' MOCK: '#/components/schemas/MockInstrument' BANCONTACT_ACCOUNT: '#/components/schemas/BancontactAccountInstrument' properties: type: type: string required: - type OrderItem: type: object properties: sku: type: string description: The order item SKU. example: LS123456789 category: type: string description: The order item category. example: Apparel subCategory: type: string description: The order item sub category. example: Sports Wear name: type: string description: The order item name. example: Runnershub DryFit minLength: 1 quantity: type: integer format: int32 description: The order item quantity. example: 1 amount: type: integer format: int64 description: The amount to pay for each individual item in the payment charge currency's smallest unit. example: 1000 required: - amount - name - quantity BancontactAccountInstrument: allOf: - $ref: '#/components/schemas/PaymentInstrument' - type: object properties: details: $ref: '#/components/schemas/BancontactAccountDetails' description: The bancontact account details type: type: string description: The BANCONTACT_ACCOUNT payment instrument type enum: - BANCONTACT_ACCOUNT title: Payment Instrument (BANCONTACT_ACCOUNT) TravelIndustryData: allOf: - $ref: '#/components/schemas/IndustryData' - type: object properties: details: $ref: '#/components/schemas/TravelDetails' description: The travel industry specific details. type: type: string description: The TRAVEL industry data type. enum: - TRAVEL required: - details title: Industry Data (TRAVEL) CardNetworkTokenInstrument: allOf: - $ref: '#/components/schemas/PaymentInstrument' - type: object properties: details: $ref: '#/components/schemas/CardNetworkTokenDetails' description: The card network token details type: type: string description: The CARD_NETWORK_TOKEN payment instrument type enum: - CARD_NETWORK_TOKEN title: Payment Instrument (CARD_NETWORK_TOKEN) AppIntentAuthenticationDetails: type: object properties: mobileIntentUri: type: string description: Intent URI to be used for app-to-app mobile flows. example: upiGlobal://pay?tr=123&from_app=true Order: type: object properties: orderItems: type: array description: The list of order items. items: $ref: '#/components/schemas/OrderItem' shippingMethod: type: string description: 'Digital goods/services: VIRTUAL, Physical goods:TRACKED_DELIVERY, UNTRACKED_DELIVERY, IN_STORE_PICKUP, LOCKER_PICKUP or HYBRID' example: VIRTUAL shippingAddress: $ref: '#/components/schemas/Address' description: The shipping address details. industryData: type: array description: The list of industry specific data. items: discriminator: propertyName: type mapping: AIRLINE: '#/components/schemas/AirlineIndustryData' EDUCATION: '#/components/schemas/EducationIndustryData' TRAVEL: '#/components/schemas/TravelIndustryData' oneOf: - allOf: - $ref: '#/components/schemas/AirlineIndustryData' title: Industry Data - allOf: - $ref: '#/components/schemas/EducationIndustryData' title: Industry Data - allOf: - $ref: '#/components/schemas/TravelIndustryData' title: Industry Data orderReferenceNumber: type: string description: The merchant's internal order reference (if different from merchantPaymentChargeReference) totalTaxAmount: type: integer format: int64 description: The total tax value paid by the consumer for the order (in same currency units as specified by amount.currency) installmentPlan: $ref: '#/components/schemas/InstallmentPlan' description: Describes the financing details chosen by the consumer for this order BankAccountDetails: type: object properties: accountNumber: type: string description: The account number. example: '007123456' holderName: type: string description: The account holder name. example: John Doe iban: type: string description: The IBAN. example: DE75512108001245126199 swiftCode: type: string description: The SWIFT code. example: DEUTDEFF123 bankName: type: string description: The bank name. example: My Bank bankCode: type: string description: The bank code. example: '12341234' debitMandateId: type: string description: The reference id for a mandate that allows debit charges on the bank account. debitMandateIdMigrated: type: boolean description: A merchant-provided indicator specifying whether the payment instrument was migrated from a different provider. InstallmentPlan: type: object properties: numberOfInstallments: type: integer format: int32 description: The number of installments the consumer will split the payment into. example: 1 feePaidBy: type: string description: 'Indicates which party bears the installment fees (e.g.: for BNPL installments).' enum: - MERCHANT - CONSUMER example: MERCHANT required: - numberOfInstallments Money: type: object properties: value: type: integer format: int64 description: The amount in the payment charge currency's smallest unit. example: 1000 currency: type: string description: ISO 4217 3-letter currency code. example: EUR maxLength: 3 minLength: 3 required: - currency - value EducationIndustryData: allOf: - $ref: '#/components/schemas/IndustryData' - type: object properties: type: type: string description: The EDUCATION industry data type. enum: - EDUCATION title: Industry Data (EDUCATION) BankAccountInstrument: allOf: - $ref: '#/components/schemas/PaymentInstrument' - type: object properties: details: $ref: '#/components/schemas/BankAccountDetails' description: The bank account details type: type: string description: The BANK_ACCOUNT payment instrument type enum: - BANK_ACCOUNT required: - details title: Payment Instrument (BANK_ACCOUNT) PassthroughWalletInstrument: allOf: - $ref: '#/components/schemas/PaymentInstrument' - type: object properties: details: $ref: '#/components/schemas/PassthroughWalletDetails' description: The passthrough wallet details type: type: string description: The PASSTHROUGH_WALLET payment instrument can be associated to payments where the money is debited directly from the card or bank account linked to it enum: - PASSTHROUGH_WALLET title: Payment Instrument (PASSTHROUGH_WALLET) securitySchemes: bearer_token: type: http scheme: bearer x-refined-from: - ppro-payment-agreements-openapi.yml - ppro-payment-agreements.json