openapi: 3.0.0
info:
  title: PayPaga Integration API
  version: 2.0.0
  description: |
    ## Errors Handling

    The PayPaga API uses conventional HTTP response codes to indicate the success or failure of an API request.

    Some 4xx errors that could be handled programmatically (e.g., Request validation failed) include additional information such as an error code to enable more nuanced error handling..

    | HTTP Status | Description |
    |-------------|-------------|
    | 200 | Request processed normally. |
    | 400 | Problem consuming the request due to not adhering to the API specification. |
    | 401 | Authorization required due to invalid, expired or missing authorization token. |
    | 402 | Request processing failure. |
    | 403 | The authorization token does not have permissions to perform the request. |
    | 404 | The requested resource does not exist. |
    | 500 502 503 504 | Server could not process the request due to an unexpected condition. We work hard to make them as rare as possible. |

    ### Error Response Format

    All error responses follow this structure:
    ```json
    "error": {
      {
        "code": "ERROR_CODE",
        "message": "Human-readable error description",
        "details": {} // Optional additional context
      }
    }
    ```

    Error codes are uppercase strings with underscores, designed to be machine-readable for programmatic error handling, for example: `VALIDATION_ERROR`, `UNAUTHORIZED`, `INTERNAL_ERROR`.

    ### Common Error Codes
      | HTTP status | Error code | Description | Additional details |
      |---|---|---|---|
      | 400 | BAD_REQUEST | Failed to parse the request body | Returned when the request body is malformed or cannot be parsed as valid JSON. Applicable to POST and PUT endpoints. |
      | 400 | VALIDATION_ERROR | Request validation failed | Returned when validation of the request body or query parameters fails. The response may include details about which fields failed validation and why. |
      | 400 | CONFIGURATION_NOT_AVAILABLE | No configuration available for the requested parameters | Returned when there is no available configuration for the requested combination of parameters (e.g., country, currency, payment method). |
      | 401 | UNAUTHORIZED | Missing or invalid authorization token | Returned when the authorization token is missing, invalid, or expired. |
      | 403 | FORBIDDEN | You do not have permission to access this resource | Returned when the authorization token does not have the necessary permissions to perform the requested operation. |
      | 404 | NOT_FOUND | Requested resource not found | Returned when the requested resource does not exist. |
      | 409 | MERCHANT_REFERENCE_ALREADY_EXISTS | Merchant transaction reference already exists | Returned when a transaction with the same merchant reference already exists. |
      | 500 | INTERNAL_ERROR | Unexpected server error | Returned when an unexpected error occurs on the server. |

    Particular list of possible errors can be found in the documentation of each endpoint.

    ## Standard Codes and Values

    Standards that define the possible values for common data types used in all APIs.

    **Country**

    ISO 3166-1 Alpha 2 is the standard used for country codes, see [ISO 3166-1 Alpha-2 codes for further reference](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

    **Currency**

    ISO 4217 alphabetic code is the standard used for currency codes, see [ISO 4217 for further reference](https://en.wikipedia.org/wiki/ISO_4217).

    **Date and Time Formats**

    All date-time fields in requests and responses is in UTC timezone (Coordinated Universal Time).
    The format for date-time fields is RFC 3339 (a profile of [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)), and represented as a string in the format `YYYY-MM-DDThh:mm:ss[.SSS]Z`. For example, `2024-01-01T00:00:00Z` represents January 1st, 2024 at midnight UTC.

    ## OpenAPI Document

    The fully bundled OpenAPI document is available at [https://api.paypaga.com/v2/spec.yaml](https://api.paypaga.com/v2/spec.yaml).
  termsOfService: https://www.paypaga.com/terms-and-conditions/
servers:
  - url: https://api.paypaga.com
    description: Production
  - url: https://api.v2.stg.paypaga.com
    description: Public sandbox with synthetic funds
security:
  - OAuth2: []
tags:
  - name: Pay-in Transactions
  - name: Pay-in Examples
  - name: Pay-out Transactions
  - name: Transactions Configuration
  - name: Pay URLs
  - name: Balances
  - name: Catalog
  - name: Settlements
  - name: Reference Data
  - name: Development Utilities
paths:
  /v2/transactions/pay-in/config:
    get:
      tags:
        - Transactions Configuration
      summary: List available pay-in configurations.
      description: |
        Can be used to dynamically populate checkout options.  Configuration contains payment methods supported for the merchant along with fees, limits, and required fields.

        ### Fee Mode
        - `fixed`: The fee charged to the customer will be the fixed fee amount. Fixed fee is fixed amount in the payment currency.
        - `percentage`: The fee charged to the customer will be the percentage fee amount. Percentage fee is calculated as (percentage_fee / 100) * transaction_amount.
        - `both`: The fee charged to the customer will be the sum of the fixed fee and the percentage fee. Calculated as fixed_fee + ((percentage_fee / 100) * transaction_amount).
        - `greater`: The fee charged to the customer will be the greater of the fixed fee or the percentage fee.

        ### Error codes for List Available Pay-In Configurations
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getPayInTransactionConfig
      parameters:
        - name: country
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/Country'
          description: Country code (ISO 3166-1 alpha-2) for which to retrieve payment options.
        - name: payment_method
          in: query
          schema:
            $ref: '#/components/schemas/PaymentMethod'
          description: Filter by specific payment method. If omitted, all available payment methods for the country will be returned.
      responses:
        '200':
          description: Payment options for the merchant.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaymentOption'
              example:
                - currency: COP
                  fee_mode: greater
                  fixed_fee: 2
                  minimum_fee: 1
                  payment_method: pse
                  percentage_fee: 3
                  required_fields:
                    - name: first_name
                      pattern: ^\p{L}*(?:[ '-]\p{L}+)*$
                      type: string
                    - name: last_name
                      pattern: ^\p{L}*(?:[ '-]\p{L}+)*$
                      type: string
                    - name: document_type
                      options:
                        CC: Cédula de Ciudadanía
                        CE: Cédula de Extranjería
                        PP: Pasaporte
                        TE: Tarjeta de Extranjería
                      type: string
                    - name: document_number
                      type: string
                    - name: bank_code
                      options:
                        '1001': BANCO DE BOGOTA
                        '1002': BANCO POPULAR
                        '1006': BANCO ITAU
                        '1007': BANCOLOMBIA
                        '1009': CITIBANK
                        '1012': BANCO GNB SUDAMERIS
                        '1013': BANCO BBVA COLOMBIA S.A.
                        '1019': SCOTIABANK COLPATRIA
                        '1023': BANCO DE OCCIDENTE
                        '1032': BANCO CAJA SOCIAL
                        '1040': BANCO AGRARIO
                        '1047': BANCO MUNDO MUJER S.A.
                        '1051': BANCO DAVIVIENDA
                        '1052': BANCO AV VILLAS
                        '1059': BANCAMIA S.A.
                        '1060': BANCO PICHINCHA S.A.
                        '1061': BANCOOMEVA S.A.
                        '1062': BANCO FALABELLA
                        '1063': BANCO FINANDINA S.A. BIC
                        '1065': BANCO SANTANDER COLOMBIA
                        '1066': BANCO COOPERATIVO COOPCENTRAL
                        '1069': BANCO SERFINANZA
                        '1070': LULO BANK
                        '1071': BANCO J.P. MORGAN COLOMBIA S.A.
                        '1097': DALE
                        '1121': FINANCIERA JURISCOOP SA COMPAÑÍA DE FINANCIAMIENTO
                        '1283': CFA COOPERATIVA FINANCIERA
                        '1286': JFK COOPERATIVA FINANCIERA
                        '1289': COTRAFA
                        '1292': CONFIAR COOPERATIVA FINANCIERA
                        '1303': BANCO UNION antes GIROS
                        '1370': COLTEFINANCIERA
                        '1507': NEQUI
                        '1551': DAVIPLATA
                        '1558': BAN100
                        '1637': IRIS
                        '1801': MOVII S.A.
                        '1802': DING
                        '1803': POWWI
                        '1804': UALÁ
                        '1808': BOLD CF
                        '1809': NU
                        '1811': RAPPIPAY
                        '1812': COINK SA
                        '1814': GLOBAL66
                        '1815': ALIANZA FIDUCIARIA
                        '1816': CREZCAMOS
                      type: string
                    - name: email
                      pattern: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
                      type: string
                    - name: phone
                      pattern: ^\d+$
                      type: string
                    - name: address
                      pattern: ^[\p{L}0-9][\p{L}0-9\s,'#/.°-]+$
                      type: string
                - currency: ARS
                  fee_mode: greater
                  fixed_fee: 1
                  optional_fields:
                    - name: bank_code
                      options:
                        banco_nacion: Banco Nación
                        banco_provincia: Banco Provincia
                        bbva: BBVA
                        brubank: Brubank
                        galicia: Galicia
                        icbc: ICBC
                        lemon: Lemon
                        macro: Macro
                        mercado_pago: Mercado Pago
                        naranja_x: Naranja X
                        personal_pay: Personal Pay
                        prex: Prex
                        santander: Santander
                        uala: Ualá
                      type: string
                  payment_method: cvu
                  required_fields:
                    - name: first_name
                      pattern: ^\p{L}*(?:[ '-]\p{L}+)*$
                      type: string
                    - name: last_name
                      pattern: ^\p{L}*(?:[ '-]\p{L}+)*$
                      type: string
                    - name: document_number
                      pattern: ^(20|23|24|25|26|27|30|33|34)(-?\d{8}-?\d|\d{8}\d)$
                      type: string
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/transactions/pay-in:
    get:
      tags:
        - Pay-in Transactions
      summary: Search pay-in transactions
      description: |
        Returns a paginated list of pay-in transactions matching the provided query parameters sorted by creation date in descending order.

        Can be used to search and filter pay-in transactions for the merchant.
        Use this endpoint to query Pay In transactions data for custom reports or reconciliation purposes.

        ⚠️ **When using date criteria, the maximum allowable duration is 2 months.**

        ### Transaction statuses
        Initiated - The transaction has been initiated
        Created - The transaction has been created and is ready to send to partner
        Pending - The transaction has been sent to a partner, and is awaiting confirmation of payment
        Approved - The transaction has been confirmed by the partner
        Expired - A pay-in transaction hasn't been paid in the allowed amount of time
        Failed - An error occurred while sending the transaction to a partner
        Refunded - The transaction has been refunded
        Rejected - the transaction has been rejected by a partner

        ### Error codes for Query Pay-in Transactions
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getPayInTransactions
      parameters:
        - $ref: '#/components/parameters/LookupQuery'
        - name: merchant_order_reference
          in: query
          schema:
            $ref: '#/components/schemas/MerchantOrderReference'
          description: Filter by merchant order reference.
        - name: country
          in: query
          schema:
            $ref: '#/components/schemas/Country'
          description: Filter by country code (ISO 3166-1 alpha-2) where the pay-in was processed. If omitted, transactions from all countries will be returned.
        - name: currency
          in: query
          schema:
            $ref: '#/components/schemas/Currency'
          description: Filter by currency (ISO 4217) of the pay-in transaction. If omitted, transactions in all currencies will be returned.
        - name: payment_method
          in: query
          schema:
            $ref: '#/components/schemas/PaymentMethod'
          description: Filter by payment method used in the pay-in transaction. If omitted, transactions with all payment methods will be returned.
        - name: status
          in: query
          schema:
            $ref: '#/components/schemas/PayInTransactionStatus'
          style: form
          explode: true
          description: Filter by status of the pay-in transaction. Multiple statuses can be provided.  If omitted, transactions with all statuses will be returned.
        - name: date_from
          in: query
          schema:
            type: string
            format: date-time
            example: '2024-08-01T00:00:00Z'
          description: Start date for filtering transactions based on their creation date (inclusive). If omitted, no lower date limit is applied.
        - name: date_to
          in: query
          schema:
            type: string
            format: date-time
            example: '2024-08-31T23:59:59Z'
          description: End date for filtering transactions based on their creation date (inclusive). If omitted, no upper date limit is applied.
        - $ref: '#/components/parameters/PageQuery'
        - $ref: '#/components/parameters/PageSizeQuery'
      responses:
        '200':
          description: Paginated pay-in list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayInTransactionListResponse'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
    post:
      tags:
        - Pay-in Transactions
      summary: Create a pay-in transaction.
      description: |
        Method initiates a new pay-in transaction for the merchant and returns its details.

        ### Typical Flow:
        1. Create a pay-in transaction
        2. Present payment instructions to customer
        3. Monitor transaction status via callbacks or polling [Get Pay-in Transaction endpoint](#operation/getPayInTransactionByID).
        4. Handle approved/failed states accordingly

        Executes a Pay In payment transaction, indicating the selected payment method and supplying any payment method specific data.

        Required fields by country and payment method (details and definitions provided in the [List available pay-in configurations](#operation/getPayInTransactionConfig))
        Request bodies and responses for different payment methods can be found in the examples section of this endpoint.


        All Pay In transactions where asynchronous end user interaction is required will transition to an **Expired** status if the payment remains in a Pending status after a time limit.

        To check the current status of a transaction, use the [Get Pay-in Transaction endpoint](#operation/getPayInTransactionByID).

        A transaction in **Initiated** state where no Payment Method has been selected will transition to an **Expired** status after 96 hours. A notification will be sent when a transaction has expired as described in [Transactions Status Notification](#operation/listNotificationStatusCallbacks).

        ### Error codes for Pay-in Payment Processing
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | BAD_REQUEST | Failed to parse the request body |
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 409 | MERCHANT_REFERENCE_ALREADY_EXISTS | Merchant transaction reference already exists |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: createPayInTransaction
      parameters:
        - $ref: '#/components/parameters/DisablePartnerMockHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePayInRequest'
            examples:
              ArgentinaCVU:
                $ref: '#/components/examples/request'
              BrazilPIX:
                $ref: '#/components/examples/request-2'
              ChileBankTransfer:
                $ref: '#/components/examples/request-3'
              ColombiaDale:
                $ref: '#/components/examples/request-4'
              ColombiaDaviplata:
                $ref: '#/components/examples/request-5'
              ColombiaEfecty:
                $ref: '#/components/examples/request-6'
              ColombiaGana:
                $ref: '#/components/examples/request-7'
              ColombiaMovii:
                $ref: '#/components/examples/request-8'
              ColombiaNequi:
                $ref: '#/components/examples/request-9'
              ColombiaPSE:
                $ref: '#/components/examples/request-10'
              ColombiaRappiPay:
                $ref: '#/components/examples/request-11'
              ColombiaReFacil:
                $ref: '#/components/examples/request-12'
              ColombiaSusuerte:
                $ref: '#/components/examples/request-13'
              ColombiaWesternUnion:
                $ref: '#/components/examples/request-14'
              EcuadorBemovil:
                $ref: '#/components/examples/request-15'
              EcuadorMiNegocioEfectivo:
                $ref: '#/components/examples/request-16'
              EcuadorOmniswitch:
                $ref: '#/components/examples/request-17'
              EcuadorRapiActivo:
                $ref: '#/components/examples/request-18'
              EcuadorWesternUnion:
                $ref: '#/components/examples/request-19'
              ElSalvadorBancoCuscatlán:
                $ref: '#/components/examples/request-20'
              ElSalvadorPuntoxpress:
                $ref: '#/components/examples/request-21'
              GuatemalaBAMEfectivo:
                $ref: '#/components/examples/request-22'
              GuatemalaBAMTransferencia:
                $ref: '#/components/examples/request-23'
              GuatemalaBancoIndustrial:
                $ref: '#/components/examples/request-24'
              GuatemalaAkisiPronet:
                $ref: '#/components/examples/request-25'
              MexicoPayWithCash:
                $ref: '#/components/examples/request-26'
              MexicoSPEI:
                $ref: '#/components/examples/request-27'
              PeruBBVA:
                $ref: '#/components/examples/request-28'
              PeruBCP:
                $ref: '#/components/examples/request-29'
              PeruBCPEfectivo:
                $ref: '#/components/examples/request-30'
              PeruCellPower:
                $ref: '#/components/examples/request-31'
              PeruKasNet:
                $ref: '#/components/examples/request-32'
              PeruQRInteroperable:
                $ref: '#/components/examples/request-33'
              PeruPlin:
                $ref: '#/components/examples/request-34'
              PeruYape:
                $ref: '#/components/examples/request-35'
              EcuadorBankTransfer:
                $ref: '#/components/examples/request-36'
              EcuadorBancoGuayaquil:
                $ref: '#/components/examples/request-37'
              EcuadorDeuna:
                $ref: '#/components/examples/request-38'
              ChileKhipu:
                $ref: '#/components/examples/request-39'
      responses:
        '201':
          description: Pay-in accepted.
          headers:
            Location:
              description: Canonical transaction URL.
              schema:
                type: string
                format: uri
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePayInResponse'
              examples:
                ArgentinaCVU:
                  $ref: '#/components/examples/response'
                BrazilPIX:
                  $ref: '#/components/examples/response-2'
                ChileBankTransfer:
                  $ref: '#/components/examples/response-3'
                ColombiaDale:
                  $ref: '#/components/examples/response-4'
                ColombiaDaviplata:
                  $ref: '#/components/examples/response-5'
                ColombiaEfecty:
                  $ref: '#/components/examples/response-6'
                ColombiaGana:
                  $ref: '#/components/examples/response-7'
                ColombiaMovii:
                  $ref: '#/components/examples/response-8'
                ColombiaNequi:
                  $ref: '#/components/examples/response-9'
                ColombiaPSE:
                  $ref: '#/components/examples/response-10'
                ColombiaRappiPay:
                  $ref: '#/components/examples/response-11'
                ColombiaReFacil:
                  $ref: '#/components/examples/response-12'
                ColombiaSusuerte:
                  $ref: '#/components/examples/response-13'
                ColombiaWesternUnion:
                  $ref: '#/components/examples/response-14'
                EcuadorBemovil:
                  $ref: '#/components/examples/response-15'
                EcuadorMiNegocioEfectivo:
                  $ref: '#/components/examples/response-16'
                EcuadorOmniswitch:
                  $ref: '#/components/examples/response-17'
                EcuadorRapiActivo:
                  $ref: '#/components/examples/response-18'
                EcuadorWesternUnion:
                  $ref: '#/components/examples/response-19'
                ElSalvadorBancoCuscatlán:
                  $ref: '#/components/examples/response-20'
                ElSalvadorPuntoxpress:
                  $ref: '#/components/examples/response-21'
                GuatemalaBAMEfectivo:
                  $ref: '#/components/examples/response-22'
                GuatemalaBAMTransferencia:
                  $ref: '#/components/examples/response-23'
                GuatemalaBancoIndustrial:
                  $ref: '#/components/examples/response-24'
                GuatemalaAkisiPronet:
                  $ref: '#/components/examples/response-25'
                MexicoPayWithCash:
                  $ref: '#/components/examples/response-26'
                MexicoSPEI:
                  $ref: '#/components/examples/response-27'
                PeruBBVA:
                  $ref: '#/components/examples/response-28'
                PeruBCP:
                  $ref: '#/components/examples/response-29'
                PeruBCPEfectivo:
                  $ref: '#/components/examples/response-30'
                PeruCellPower:
                  $ref: '#/components/examples/response-31'
                PeruKasNet:
                  $ref: '#/components/examples/response-31'
                PeruQRInteroperable:
                  $ref: '#/components/examples/response-32'
                PeruPlin:
                  $ref: '#/components/examples/response-33'
                PeruYape:
                  $ref: '#/components/examples/response-34'
                EcuadorBankTransfer:
                  $ref: '#/components/examples/response-35'
                EcuadorBancoGuayaquil:
                  $ref: '#/components/examples/response-36'
                EcuadorDeuna:
                  $ref: '#/components/examples/response-37'
                ChileKhipu:
                  $ref: '#/components/examples/response-38'
        '400':
          $ref: '#/components/responses/ValidationAndBadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          $ref: '#/components/responses/DuplicateMerchantReference'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/transactions/pay-in/{lookup}:
    parameters:
      - name: lookup
        in: path
        required: true
        schema:
          type: string
          pattern: ^[a-zA-Z0-9\-_]{1,64}$
          maxLength: 64
        description: Transaction ID or merchant transaction reference.
    get:
      tags:
        - Pay-in Transactions
      summary: Retrieve a pay-in transaction.
      description: |
        Can be used to get the status and details of a specific pay-in by its transaction ID or merchant transaction reference.

        ### Transaction statuses
        Initiated - The transaction has been initiated
        Created - The transaction has been created and is ready to send to partner
        Pending - The transaction has been sent to a partner, and is awaiting confirmation of payment
        Approved - The transaction has been confirmed by the partner
        Expired - A pay-in transaction hasn't been paid in the allowed amount of time
        Failed - An error occurred while sending the transaction to a partner
        Refunded - The transaction has been refunded
        Rejected - the transaction has been rejected by a partner

        ### Error codes for Get Pay In Transaction
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 404 | NOT_FOUND | Pay-in transaction not found |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getPayInTransactionByID
      responses:
        '200':
          description: Pay-in transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayInTransaction'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ErrorDetail'
                example:
                  error:
                    code: NOT_FOUND
                    message: Pay-in transaction not found
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/test/transactions/pay-in/{lookup}/status:
    parameters:
      - name: lookup
        in: path
        required: true
        schema:
          type: string
          pattern: ^[a-zA-Z0-9\-_]{1,64}$
          maxLength: 64
        description: Transaction ID or merchant transaction reference.
    post:
      tags:
        - Development Utilities
      summary: Override a pay-in transaction status
      description: |
        Available only in the sandbox environment, this endpoint allows overriding the status of a pay-in transaction for testing purposes.

        Use this endpoint to simulate different transaction states and test your integration with various scenarios.

        Doesn't work if the transaction created with mock_configuration.disable_partner_mock set to true or if the DisablePartnerMock header is set to true.

        Doesn't work if the transaction is already in a final state (approved, failed, expired).

        ### Error codes for Override Pay In Status
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 400 | BAD_REQUEST | Failed to parse the request body |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 404 | NOT_FOUND | Pay-in transaction not found |
          | 409 | INVALID_STATUS_TRANSITION | Unsupported pay-in transaction status transition |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: overridePayInStatus
      servers:
        - url: https://api.dev.paypaga.com/v2
          description: Development environment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayInTransactionStatusOverrideRequest'
      responses:
        '200':
          description: Updated transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayInTransaction'
        '400':
          $ref: '#/components/responses/ValidationAndBadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Pay-in transaction not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ErrorDetail'
                example:
                  error:
                    code: NOT_FOUND
                    message: Pay-in transaction not found
        '409':
          description: Unsupported status transition.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ErrorDetail'
                example:
                  error:
                    code: INVALID_STATUS_TRANSITION
                    message: Unsupported pay-in transaction status transition
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/transactions/pay-out/config:
    get:
      tags:
        - Transactions Configuration
      summary: List available pay-out configurations.
      description: |
        Can be used to dynamically populate checkout options. Configuration contains payment methods supported for the merchant along with fees, limits, and required fields.

        ### Error codes for List Available Pay-Out Configurations
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getPayOutTransactionConfig
      parameters:
        - name: country
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/Country'
          description: Country code (ISO 3166-1 alpha-2) for which to retrieve payment options.
        - name: payment_method
          in: query
          schema:
            $ref: '#/components/schemas/PaymentMethod'
          description: Filter by specific payment method. If omitted, all available payment methods for the country will be returned.
      responses:
        '200':
          description: Payment options for the merchant.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaymentOption'
              example:
                - currency: MXN
                  fee_mode: greater
                  minimum_fee: 1.15
                  optional_fields:
                    - name: email
                      type: string
                  payment_method: spei
                  percentage_fee: 2.51
                  required_fields:
                    - name: name
                      type: string
                    - name: account_number
                      pattern: ^\d+$
                      type: string
                    - name: bank_code
                      options:
                        '2001': BANXICO
                        '37006': BANCOMEXT
                        '37009': BANOBRAS
                        '37019': BANJERCITO
                        '37135': NAFIN
                        '37166': BaBien
                        '37168': HIPOTECARIA FED
                        '40002': BANAMEX
                        '40012': BBVA MEXICO
                        '40014': SANTANDER
                        '40021': HSBC
                        '40030': BAJIO
                        '40036': INBURSA
                        '40042': MIFEL
                        '40044': SCOTIABANK
                        '40058': BANREGIO
                        '40059': INVEX
                        '40060': BANSI
                        '40062': AFIRME
                        '40072': BANORTE
                        '40106': BANK OF AMERICA
                        '40108': MUFG
                        '40110': JP MORGAN
                        '40112': BMONEX
                        '40113': VE POR MAS
                        '40124': CITI MEXICO
                        '40127': AZTECA
                        '40128': AUTOFIN
                        '40129': BARCLAYS
                        '40130': COMPARTAMOS
                        '40132': MULTIVA BANCO
                        '40133': ACTINVER
                        '40136': INTERCAM BANCO
                        '40137': BANCOPPEL
                        '40138': ABC CAPITAL
                        '40140': CONSUBANCO
                        '40141': VOLKSWAGEN
                        '40143': CIBANCO
                        '40145': BBASE
                        '40147': BANKAOOL
                        '40148': PAGATODO
                        '40150': INMOBILIARIO
                        '40151': DONDE
                        '40152': BANCREA
                        '40154': BANCO COVALTO
                        '40155': ICBC
                        '40156': SABADELL
                        '40157': SHINHAN
                        '40158': MIZUHO BANK
                        '40159': BANK OF CHINA
                        '40160': BANCO S3
                        '90600': MONEXCB
                        '90601': GBM
                        '90602': MASARI
                        '90605': VALUE
                        '90608': VECTOR
                        '90616': FINAMEX
                        '90617': VALMEX
                        '90620': PROFUTURO
                        '90630': CB INTERCAM
                        '90631': CI BOLSA
                        '90634': FINCOMUN
                        '90638': NU MEXICO
                        '90646': STP
                        '90652': CREDICAPITAL
                        '90653': KUSPIT
                        '90656': UNAGRA
                        '90659': ASP INTEGRA OPC
                        '90661': KLAR
                        '90670': LIBERTAD
                        '90677': CAJA POP MEXICA
                        '90680': CRISTOBAL COLON
                        '90683': CAJA TELEFONIST
                        '90684': TRANSFER
                        '90685': FONDO (FIRA)
                        '90688': CREDICLUB
                        '90689': FOMPED
                        '90699': FONDEADORA
                        '90703': TESORED
                        '90706': ARCUS FI
                        '90710': NVIO
                        '90715': Cartera Digital
                        '90722': Mercado Pago W
                        '90723': Cuenca
                        '90728': SPIN BY OXXO
                        '90732': Peibo
                        '90901': CLS
                        '90902': INDEVAL
                        '90903': CoDi Valida
                      type: string
                    - name: document_number
                      type: string
                    - name: payout_concept
                      type: string
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/transactions/pay-out:
    get:
      tags:
        - Pay-out Transactions
      summary: Search pay-out transactions
      description: |
        Returns a paginated list of pay-out transactions matching the provided query parameters sorted by creation date in descending order.

        Use this endpoint to query pay-out transactions data for custom reports or reconciliation purposes.

        ⚠️ **When using date criteria, the maximum allowable duration is 2 months.**

        ### Transaction statuses
        Initiated - The transaction has been initiated
        Created - The transaction has been created and is ready to send to partner
        Pending - The transaction has been sent to a partner, and is awaiting confirmation of payment
        Approved - The transaction has been confirmed by the partner
        Failed - An error occurred while sending the transaction to a partner
        Rejected - the transaction has been rejected by a partner

        ### Error codes for Query Pay-out Transactions
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getPayOutTransactions
      parameters:
        - $ref: '#/components/parameters/LookupQuery'
        - name: country
          in: query
          schema:
            $ref: '#/components/schemas/Country'
          description: Country code (ISO 3166-1 alpha-2) where the pay-out was made. If omitted, transactions from all countries will be returned.
        - name: currency
          in: query
          schema:
            $ref: '#/components/schemas/Currency'
          description: Currency (ISO 4217) of the pay-out transaction. If omitted, transactions with all currencies will be returned.
        - name: payment_method
          in: query
          schema:
            $ref: '#/components/schemas/PaymentMethod'
          description: Payment method used for the pay-out. If omitted, transactions with all payment methods will be returned.
        - name: status
          in: query
          schema:
            $ref: '#/components/schemas/PayOutTransactionStatus'
          style: form
          explode: true
          description: Filter by status of the pay-out transaction. Multiple statuses can be provided.  If omitted, transactions with all statuses will be returned.
        - name: date_from
          in: query
          schema:
            type: string
            format: date-time
            example: '2024-08-01T00:00:00Z'
          description: Start date for filtering by creation date. If omitted, no lower date limit is applied.
        - name: date_to
          in: query
          schema:
            type: string
            format: date-time
            example: '2024-08-31T23:59:59Z'
          description: End date for filtering by creation date. If omitted, no upper date limit is applied.
        - $ref: '#/components/parameters/PageQuery'
        - $ref: '#/components/parameters/PageSizeQuery'
      responses:
        '200':
          description: Paginated pay-out list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayOutTransactionListResponse'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
    post:
      tags:
        - Pay-out Transactions
      summary: Create a pay-out transaction.
      description: |
        Execute individual Pay Out transactions. The merchant_transaction_reference field per individual Pay Out transaction enables individual status notifications and therefore should be unique per individual Pay Out transaction.

        Pay Out processing is performed in stages where the configured transaction status notification mechanism is utilized to notify the merchant.

        The balance available for Pay Out transactions can be up to 90% of your total successful Pay In transactions. The balance available can be queried using [Query Balance](#operation/getMerchantBalance).

        ### Error codes for Payout Payment Processing
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | BAD_REQUEST | Failed to parse the request body |
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 409 | MERCHANT_REFERENCE_ALREADY_EXISTS | Merchant transaction reference already exists |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: createPayOutTransaction
      parameters:
        - $ref: '#/components/parameters/DisablePartnerMockHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePayOutRequest'
            examples:
              ArgentinaCVU:
                $ref: '#/components/examples/request-40'
              BrazilPIX:
                $ref: '#/components/examples/request-41'
              ChileBankTransfer:
                $ref: '#/components/examples/request-42'
              ColombiaBankTransfer:
                $ref: '#/components/examples/request-43'
              EcuadorBankTransfer:
                $ref: '#/components/examples/request-44'
              GuatemalaBankTransfer:
                $ref: '#/components/examples/request-45'
              MexicoSPEI:
                $ref: '#/components/examples/request-46'
              PeruBankTransfer:
                $ref: '#/components/examples/request-47'
      responses:
        '202':
          description: Pay-out accepted for processing.
          headers:
            Location:
              description: Canonical transaction URL.
              schema:
                type: string
                format: uri
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePayOutResponse'
              examples:
                Generic:
                  $ref: '#/components/examples/response-39'
        '400':
          $ref: '#/components/responses/ValidationAndBadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          $ref: '#/components/responses/DuplicateMerchantReference'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/transactions/pay-out/{lookup}:
    parameters:
      - name: lookup
        in: path
        schema:
          type: string
          maxLength: 64
        required: true
        description: Transaction ID or merchant transaction reference.
    get:
      tags:
        - Pay-out Transactions
      summary: Retrieve a pay-out transaction.
      description: |
        Can be used to get the status and details of a specific pay-out by its transaction ID or merchant transaction reference. Can be used for tracking status.

        ### Transaction statuses
        Initiated - The transaction has been initiated
        Created - The transaction has been created and is ready to send to partner
        Pending - The transaction has been sent to a partner, and is awaiting confirmation of payment
        Approved - The transaction has been confirmed by the partner
        Failed - An error occurred while sending the transaction to a partner
        Rejected - the transaction has been rejected by a partner

        ### Error codes for Payout Transaction Retrieval
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 404 | NOT_FOUND | Pay-out transaction not found |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getPayOutTransactionByID
      responses:
        '200':
          description: Pay-out transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayOutTransaction'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ErrorDetail'
                example:
                  error:
                    code: NOT_FOUND
                    message: pay-out transaction not found
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/test/transactions/pay-out/{lookup}/status:
    post:
      tags:
        - Development Utilities
      summary: Override a pay-out transaction status
      description: |
        Available only in the sandbox environment, this endpoint allows overriding the status of a pay-out transaction for testing purposes.

        Use this endpoint to simulate different transaction states and test your integration with various scenarios.

        Doesn't work if the transaction created with mock_configuration.disable_partner_mock set to true or if the DisablePartnerMock header is set to true.

        Doesn't work if the transaction is already in a final state (approved, failed, expired).

        ### Error codes for Payout Transaction Status Override
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 400 | BAD_REQUEST | Failed to parse the request body |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 404 | NOT_FOUND | Pay-out transaction not found |
          | 409 | INVALID_STATUS_TRANSITION | Unsupported pay-out transaction status transition |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: overridePayOutStatus
      servers:
        - url: https://api.dev.paypaga.com/v2
          description: Development environment
      parameters:
        - name: lookup
          in: path
          required: true
          schema:
            type: string
            maxLength: 64
          description: Transaction ID or merchant transaction reference.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayOutTransactionStatusOverrideRequest'
      responses:
        '200':
          description: Updated transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayOutTransaction'
        '400':
          $ref: '#/components/responses/ValidationAndBadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ErrorDetail'
                example:
                  error:
                    code: NOT_FOUND
                    message: Pay-out transaction not found
        '409':
          description: Unsupported status transition.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ErrorDetail'
                example:
                  error:
                    code: INVALID_STATUS_TRANSITION
                    message: Unsupported pay-out transaction status transition
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/pay-urls:
    post:
      tags:
        - Pay URLs
      summary: Create a hosted PayURL checkout
      description: |
        The PayPaga PayURL is a customized checkout webpage to allow the selection of a payment method, entering any required information and submitting the payment. 

        The workflow steps are listed below: 

        1. Call [OAuth 2.0 Token Generation](apidog://link/endpoint/19491471) and retrieve OAuth2.0 token.
        2. Using the OAuth2.0 token, call the Get PayURL endpoint to get a new PayPaga PayURL based on the parameters provided in the request. 
        3. Redirect the user to the generated PayPaga PayURL. 
        4. The PayPaga PayURL will present to the user a list of payment methods previously approved by the merchant for the specified country. 
        5. Then, the user selects their preferred payment method, enters any required information and submits the payment. 
        6. Upon successful submission, the payment result is displayed, including instructions for asynchronous payments. A new transaction with status of *PENDING* will be created in the system. 

        ### Redirect the user to the generated PayURL

        The PayURL can be loaded directly in a new tab or browser window.

        In case the PayURL is going to be embedded into the merchant's website using an &lt;iframe&gt; use the following code:

        ```html
        <iframe allow="clipboard-write" src="[pay_url-HERE]"></iframe>
        ```


        ⚠️ **It is important to include the allow="clipboard-write" attribute in the &lt;iframe&gt; to allow the user to use the copy-to-clipboard functionality.**

        ⚠️ **Please keep in mind, if using \<iframe> in your integration, certain methods (listed below) will block communication due to security purposes. If you wish to also implement these methods, new tab redirection is recommended.**

        **Colombia**: PSE, Nequi, Daviplata, RappiPay, Dale, Movii, Transfiya

        **Chile**: Khipu

        **El Salvador**: Banco Agrícola, Banco Cuscatlán

        **Guatemala**: Banco Industrial, BAM Transfer

        This service initiates the PayPaga PayURL flow where, if successful, returns a new PayURL to the user to be redirected to for payment completion. 

        ## Custom Payment Method List

        It is possible to narrow down the list of payment options the user can choose from, by using the parameter ***payment_method_codes*** as follows:

        These are the possible scenarios:

        - If the list contains an invalid method, an error will occur and no PayURL will be generated.
        - If the list contains valid methods, the PayURL web page will show only those as payment options.
        - If the list contains a single valid option and that option requires additional information to be entered by the user, the PayURL will show the correspondent fields to enter that information.
        - If the list contains a single valid option and that option doesn't require any additional information, the PayURL won't display the payment options step. Instead, the payment request will be submitted automatically using the pre-selected payment option and the payment result will be displayed, including instructions for asynchronous payments.

        ## Customer Data

        This API enables known customer data to be supplied to streamline the customer experience and optimize conversion by minimizing manual data entry.

        Where all required customer data for a payment method is supplied and validated the customer will automatically receive instructions to complete the payment alleviating the need for any intermediate manual data entry steps.

        ### Error codes for Create PayURL
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | BAD_REQUEST | Failed to parse the request body |
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 400 | CONFIGURATION_NOT_AVAILABLE | No configuration available for the requested parameters |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 409 | MERCHANT_REFERENCE_ALREADY_EXISTS | Merchant transaction reference already exists |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: createPayURL
      parameters:
        - $ref: '#/components/parameters/DisablePartnerMockHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePayURLRequest'
      responses:
        '201':
          description: PayURL created.
          headers:
            Location:
              description: Canonical PayURL resource.
              schema:
                type: string
                format: uri
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePayURLResponse'
        '400':
          $ref: '#/components/responses/ValidationAndBadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          $ref: '#/components/responses/DuplicateMerchantReference'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/balances:
    get:
      tags:
        - Balances
      summary: Retrieve merchant balance summary.
      description: |
        Real-time access to the financial balances of a merchant's account. This can be used for reporting and as a precursor to [Pay Out - Payment Processing](#operation/createPayOutTransaction) to determine if there is sufficient balance.

        ### Error codes for Get Merchant Balance
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getMerchantBalance
      parameters:
        - $ref: '#/components/parameters/CountryQuery'
      responses:
        '200':
          description: Balance summary.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceSummaryResponse'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/catalog/countries:
    get:
      tags:
        - Catalog
      summary: List supported countries
      description: |
        Can be used to retrieve the list of countries supported by the merchant along with their default and additional currencies and available payment methods.

        ### Error codes for List Supported Countries
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: listCatalogCountries
      parameters:
        - name: country
          in: query
          schema:
            $ref: '#/components/schemas/Country'
        - name: payment_method
          in: query
          schema:
            $ref: '#/components/schemas/PaymentMethod'
        - name: currency
          in: query
          schema:
            $ref: '#/components/schemas/Currency'
      responses:
        '200':
          description: Supported country catalog.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                additionalProperties: false
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/CountryCatalogEntry'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/catalog/payment-methods:
    get:
      tags:
        - Catalog
      summary: List supported payment methods
      description: |
        Can be used to dynamically determine available payment methods for the merchant along with their supported countries, currencies, fees, and features.

        ### Error codes for List Supported Payment Methods
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: listCatalogPaymentMethods
      parameters:
        - $ref: '#/components/parameters/CountryQuery'
        - name: payment_method
          in: query
          schema:
            $ref: '#/components/schemas/PaymentMethod'
          description: Filter by payment method code. If omitted, all supported payment methods are returned.
        - $ref: '#/components/parameters/CurrencyQuery'
      responses:
        '200':
          description: Payment method catalog.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                additionalProperties: false
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/PaymentMethodCatalogEntry'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/settlements:
    get:
      tags:
        - Settlements
      summary: Search settlements
      description: |
        Retrieve a paginated list of settlements processed for the merchant in descending order. Filters can be applied to narrow down the results by settlement ID and date range.

        ### Error codes for Search Settlements
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getSettlements
      parameters:
        - name: settlement_id
          in: query
          schema:
            type: string
            format: uuid
          description: Filter by settlement ID.
        - name: date_from
          in: query
          schema:
            type: string
            format: date-time
            example: '2024-08-01T00:00:00Z'
          description: Start date to filter settlements (inclusive). If omitted, no start date filter is applied.
        - name: date_to
          in: query
          schema:
            type: string
            format: date-time
            example: '2024-12-31T23:59:59Z'
          description: End date to filter settlements (inclusive). If omitted, no end date filter is applied.
        - $ref: '#/components/parameters/PageQuery'
        - $ref: '#/components/parameters/PageSizeQuery'
      responses:
        '200':
          description: Paginated settlement list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementsResponse'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/settlements/options:
    get:
      tags:
        - Settlements
      summary: Retrieve settlement options
      description: |
        Can be used to get the settlement configuration for the merchant.

        ### Error codes for Retrieve Settlement Options
          | HTTP status | Error code | Description |
          |---|---|---|
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getSettlementOptions
      responses:
        '200':
          description: Settlement configuration for the merchant.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementOptionsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/settlements/{settlement_id}/transactions:
    parameters:
      - name: settlement_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Settlement ID.
      - $ref: '#/components/parameters/PageQuery'
      - $ref: '#/components/parameters/PageSizeQuery'
    get:
      tags:
        - Settlements
      summary: Retrieve settlement transactions
      operationId: getSettlementTransactions
      description: |
        Retrieve a paginated list of transactions included in a specific settlement in descending order. 

        ### Error codes for Retrieve Settlement Transactions
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 404 | NOT_FOUND | Settlement not found |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      responses:
        '200':
          description: Transactions included in the settlement.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettlementTransactionsResponse'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Settlement not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ErrorDetail'
                example:
                  error:
                    code: NOT_FOUND
                    message: Settlement not found
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/exchange-rates:
    get:
      tags:
        - Reference Data
      summary: Retrieve exchange rates
      description: |
        Retrieve foreign exchange rates for informational purposes only. Rates are updated at minute 55 of every hour.

        ### Error codes for Retrieve Exchange Rates
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getExchangeRates
      parameters:
        - name: base_currency
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/Currency'
          description: Base currency code (ISO 4217) for which to retrieve exchange rates.
        - name: quote_currencies
          in: query
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Currency'
          style: form
          explode: true
          description: |
            One or more quote currency codes (ISO 4217) to filter the exchange rates. If omitted, rates for all available quote currencies against the base currency will be returned. Exchange rates source: https://openexchangerates.org
      responses:
        '200':
          description: Informational FX rates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeRatesResponse'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/taxes:
    get:
      tags:
        - Reference Data
      summary: Retrieve tax rates
      description: |
        Retrieve the catalogue of tax rates applicable to various countries, products, and payment methods.

        ### Error codes for Retrieve Tax Rates
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getTaxes
      parameters:
        - name: country
          in: query
          schema:
            $ref: '#/components/schemas/Country'
          description: |
            Filter tax rates by the specified country code (ISO 3166-1 alpha-2). If omitted, tax rates for all countries are returned.
        - name: product
          in: query
          schema:
            $ref: '#/components/schemas/Product'
          description: |
            Filter tax rates by the specified product code. If omitted, tax rates for all products are returned.
        - name: payment_method
          in: query
          schema:
            $ref: '#/components/schemas/PaymentMethod'
          description: |
            Filter tax rates by the specified payment method code. If omitted, tax rates for all payment methods are returned.
      responses:
        '200':
          description: Tax rate catalogue.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                additionalProperties: false
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/TaxRate'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/notification-subscriptions:
    post:
      tags:
        - Notifications
      summary: Create a notification subscription
      description: |
        Create a subscription to receive notifications for specific events related to transactions with callbacks or email.

        ### Error codes for Create a Notification Subscription
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | BAD_REQUEST | Failed to parse the request body |
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: createNotificationSubscription
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationSubscriptionRequest'
            examples:
              callback_subscription:
                value:
                  subscription_id: 20251022-0949-42c7-947d-67f32a1ecf45
                  channel: callback
                  notification_types:
                    - transaction_approved
                    - transaction_rejected
                  targets:
                    - https://example.com/callback-endpoint
                    - https://another-endpoint.com/callback
                  created_on: '2024-08-06T20:15:30Z'
              email_subscription:
                value:
                  subscription_id: 20251022-0949-42c7-947d-67f32a1ecf45
                  channel: email
                  notification_types:
                    - transaction_approved
                    - transaction_rejected
                  targets:
                    - user@example.com
                    - admin@example.com
                  created_on: '2024-08-06T20:20:30Z'
      responses:
        '201':
          description: Notification subscription created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationSubscriptionResponse'
        '400':
          $ref: '#/components/responses/ValidationAndBadRequestError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
      callbacks:
        transactionApproved:
          '{$request.body#/targets/0}':
            post:
              summary: Transaction approved notification
              description: |
                Sent when a pay-in or pay-out transaction is approved.
                This callback is triggered when the transaction successfully completes.
              tags:
                - Callbacks
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/TransactionCallbackPayload'
                    examples:
                      payInApproved:
                        summary: Pay-in transaction approved
                        value:
                          transaction_id: 20240806-2010-4086-8342-c28f4979f834
                          merchant_transaction_reference: TRX-2024-0001
                          merchant_order_reference: ORDER-2024-0001
                          created_on: '2024-08-06T20:05:41Z'
                          approved_on: '2024-08-06T20:12:41Z'
                          country: BR
                          currency: BRL
                          payment_method: pix
                          amount: 100
                          fee: 1.5
                          tax: 0.5
                          total_amount: 98
                          status: approved
                          transaction_input:
                            payer_name: João Silva
                            payer_document: '12345678901'
                          processing_output:
                            customer_name: João Silva
                            document_number: '12345678901'
                      payOutApproved:
                        summary: Pay-out transaction approved
                        value:
                          transaction_id: 20240806-1820-4086-8342-c28f4979f834
                          merchant_transaction_reference: PAYOUT-2024-0001
                          created_on: '2024-08-06T18:02:41Z'
                          approved_on: '2024-08-06T18:07:41Z'
                          country: BR
                          currency: BRL
                          payment_method: pix
                          transaction_amount: 500
                          fee: 3
                          tax: 1
                          status: approved
                          transaction_input:
                            beneficiary_name: Maria Santos
                            beneficiary_document: '98765432109'
                            beneficiary_bank: '001'
                            beneficiary_account: 12345-6
                          processing_output:
                            transfer_id: TXF123456789
                            bank_reference: BR001234567890
              parameters:
                - $ref: '#/components/parameters/CallbackTimestamp'
                - $ref: '#/components/parameters/CallbackId'
              responses:
                '200':
                  description: Callback received and processed successfully
                '400':
                  description: Invalid callback payload
                '500':
                  description: Server error processing callback
        transactionExpired:
          '{$request.body#/targets/0}':
            post:
              summary: Transaction expired notification
              description: |
                Sent when a transaction expires without being completed.
                This typically occurs when a customer doesn't complete the payment within the allowed time window.
              tags:
                - Callbacks
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/TransactionCallbackPayload'
                    examples:
                      payInExpired:
                        summary: Pay-in transaction expired
                        value:
                          transaction_id: 20240806-2010-4086-8342-c28f4979f834
                          merchant_transaction_reference: ORDER-2024-0002
                          created_on: '2024-08-06T20:05:41Z'
                          expired_on: '2024-08-06T20:35:41Z'
                          country: BR
                          currency: BRL
                          payment_method: pix
                          transaction_amount: 150
                          fee: 2
                          tax: 0.5
                          status: expired
                          transaction_input:
                            payer_name: Carlos Oliveira
                            payer_document: '11122233344'
              parameters:
                - $ref: '#/components/parameters/CallbackTimestamp'
                - $ref: '#/components/parameters/CallbackId'
              responses:
                '200':
                  description: Callback received and processed successfully
                '400':
                  description: Invalid callback payload
                '500':
                  description: Server error processing callback
        transactionError:
          '{$request.body#/targets/0}':
            post:
              summary: Transaction error notification
              description: |
                Sent when a transaction fails or encounters an error during processing.
                This includes payment failures, validation errors, and system errors.
              tags:
                - Callbacks
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/TransactionCallbackPayload'
                    examples:
                      payInFailed:
                        summary: Pay-in transaction failed
                        value:
                          transaction_id: 20240806-2010-4086-8342-c28f4979f834
                          merchant_transaction_reference: TRX-2024-0003
                          created_on: '2024-08-06T20:05:41Z'
                          failed_on: '2024-08-06T20:10:41Z'
                          fail_reason: Insufficient funds
                          country: BR
                          currency: BRL
                          payment_method: pix
                          fee: 2.5
                          tax: 0.75
                          transaction_amount: 200
                          status: failed
                          transaction_input:
                            payer_name: Ana Costa
                            payer_document: '55566677788'
                          processing_output:
                            error_code: INSUFFICIENT_FUNDS
                            bank_message: Transaction declined due to insufficient balance
                      payOutFailed:
                        summary: Pay-out transaction failed
                        value:
                          transaction_id: 20240806-1820-4086-8342-c28f4979f999
                          merchant_transaction_reference: PAYOUT-2024-0002
                          created_on: '2024-08-06T18:02:41Z'
                          failed_on: '2024-08-06T18:05:41Z'
                          fail_reason: Bank account closed
                          country: BR
                          currency: BRL
                          payment_method: pix
                          fee: 3.5
                          tax: 1
                          transaction_amount: 300
                          status: failed
                          transaction_input:
                            beneficiary_name: Pedro Alves
                            beneficiary_document: '99988877766'
                            beneficiary_bank: '237'
                            beneficiary_account: 98765-4
                          processing_output:
                            error_code: ACCOUNT_CLOSED
                            bank_message: Beneficiary account is closed or inactive
              parameters:
                - $ref: '#/components/parameters/CallbackTimestamp'
                - $ref: '#/components/parameters/CallbackId'
              responses:
                '200':
                  description: Callback received and processed successfully
                '400':
                  description: Invalid callback payload
                '500':
                  description: Server error processing callback
        transactionUnderpaid:
          '{$request.body#/targets/0}':
            post:
              summary: Transaction underpaid notification
              description: |
                Sent when a pay-in or pay-out transaction is underpaid.
                This callback is triggered when the transaction amount is less than expected.
              tags:
                - Callbacks
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/TransactionCallbackPayload'
                    examples:
                      payInUnderpaid:
                        summary: Pay-in transaction underpaid
                        value:
                          transaction_id: 20240806-2010-4086-8342-c28f4979f834
                          merchant_transaction_reference: TRX-2024-0001
                          merchant_order_reference: ORDER-2024-0001
                          created_on: '2024-08-06T20:05:41Z'
                          approved_on: '2024-08-06T20:12:41Z'
                          country: AR
                          currency: ARS
                          payment_method: cvu
                          amount: 100
                          fee: 1.5
                          tax: 0.5
                          total_amount: 98
                          paid_amount: 90
                          status: approved
                          transaction_input:
                            payer_name: João Silva
                            payer_document: '12345678901'
                          processing_output:
                            customer_name: João Silva
                            document_number: '12345678901'
              parameters:
                - $ref: '#/components/parameters/CallbackTimestamp'
                - $ref: '#/components/parameters/CallbackId'
              responses:
                '200':
                  description: Callback received and processed successfully
                '400':
                  description: Invalid callback payload
                '500':
                  description: Server error processing callback
        transactionUnsolicitedPayment:
          '{$request.body#/targets/0}':
            post:
              summary: Transaction unsolicited payment notification
              description: |
                Sent when a pay-in or pay-out transaction is received without a prior request.
                This callback is triggered when an unexpected payment is detected.
              tags:
                - Callbacks
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/TransactionCallbackPayload'
                    examples:
                      payInUnderpaid:
                        summary: Pay-in transaction underpaid
                        value:
                          transaction_id: 20240806-2010-4086-8342-c28f4979f834
                          merchant_transaction_reference: TRX-2024-0001
                          merchant_order_reference: ORDER-2024-0001
                          created_on: '2024-08-06T20:05:41Z'
                          approved_on: '2024-08-06T20:12:41Z'
                          country: AR
                          currency: ARS
                          payment_method: cvu
                          amount: 100
                          fee: 1.5
                          tax: 0.5
                          total_amount: 99
                          paid_amount: 99
                          unsolicited_payment: true
                          status: approved
                          transaction_input:
                            payer_name: João Silva
                            payer_document: '12345678901'
                          processing_output:
                            customer_name: João Silva
                            document_number: '12345678901'
              parameters:
                - $ref: '#/components/parameters/CallbackTimestamp'
                - $ref: '#/components/parameters/CallbackId'
              responses:
                '200':
                  description: Callback received and processed successfully
                '400':
                  description: Invalid callback payload
                '500':
                  description: Server error processing callback
    get:
      tags:
        - Notifications
      summary: List notification subscriptions
      description: |
        Retrieve a list of existing notification subscriptions for the account.

        ### Error codes for List Notification Subscriptions
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: listNotificationSubscriptions
      parameters:
        - name: channel
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/ChannelType'
          description: Filter subscriptions by notification channel.
        - name: notification_type
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: array
            items:
              $ref: '#/components/schemas/NotificationType'
          description: Filter subscriptions by notification type.
      responses:
        '200':
          description: List of notification subscriptions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListNotificationSubscriptionsResponse'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalError'
  /v2/notification-subscriptions/{subscription_id}:
    get:
      tags:
        - Notifications
      summary: Retrieve a notification subscription
      description: |
        Retrieve details of a specific notification subscription by its ID.

        ### Error codes for Retrieve Notification Subscription
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 404 | NOT_FOUND | Notification subscription not found |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: getNotificationSubscription
      parameters:
        - name: subscription_id
          in: path
          required: true
          schema:
            type: string
            pattern: ^[a-zA-Z0-9\-]{1,64}$
            maxLength: 64
          description: The ID of the notification subscription to retrieve.
      responses:
        '200':
          description: Notification subscription details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationSubscriptionResponse'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Notification subscription not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ErrorDetail'
                example:
                  error:
                    code: NOT_FOUND
                    message: Notification subscription not found
        '500':
          $ref: '#/components/responses/InternalError'
    delete:
      tags:
        - Notifications
      summary: Delete a notification subscription
      description: |
        Delete an existing notification subscription by its ID.

        ### Error codes for Delete Notification Subscription
          | HTTP status | Error code | Description |
          |---|---|---|
          | 400 | VALIDATION_ERROR | Request validation failed |
          | 401 | UNAUTHORIZED | Missing or invalid authorization token |
          | 403 | FORBIDDEN | You do not have permission to access this resource |
          | 404 | NOT_FOUND | Notification subscription not found |
          | 500 | INTERNAL_ERROR | Unexpected server error |
      operationId: deleteNotificationSubscription
      parameters:
        - name: subscription_id
          in: path
          required: true
          schema:
            type: string
            pattern: ^[a-zA-Z0-9\-]{1,64}$
            maxLength: 64
          description: The ID of the notification subscription to delete.
      responses:
        '204':
          description: Notification subscription deleted successfully.
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Notification subscription not found.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                additionalProperties: false
                properties:
                  error:
                    $ref: '#/components/schemas/ErrorDetail'
                example:
                  error:
                    code: NOT_FOUND
                    message: Notification subscription not found
        '500':
          $ref: '#/components/responses/InternalError'
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.paypaga.com/oauth2/token
          scopes:
            pay-in: Pay-in operations
            pay-out: Pay-out operations
            balance: Balance operations
            catalog: Catalog retrieval operations
            settlements: Settlement retrieval operations
            reference-data: Reference data retrieval operations
            notifications: Notification subscription management operations
  parameters:
    LookupQuery:
      name: lookup
      in: query
      schema:
        type: string
        pattern: ^[a-zA-Z0-9\-]{1,64}$
        maxLength: 64
      description: Filter by transaction ID or merchant transaction reference.
    CountryQuery:
      name: country
      in: query
      description: Filter by country code (ISO 3166-1 alpha-2).
      schema:
        $ref: '#/components/schemas/Country'
    CurrencyQuery:
      name: currency
      in: query
      schema:
        $ref: '#/components/schemas/Currency'
      description: Filter by currency code (ISO 4217).
    PageQuery:
      name: page
      in: query
      schema:
        type: integer
        minimum: 1
        default: 1
      description: Page number for paginated results.
    PageSizeQuery:
      name: page_size
      in: query
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
      description: Number of items per page for paginated results.
    DisablePartnerMockHeader:
      name: DisablePartnerMock
      in: header
      required: false
      schema:
        type: boolean
      description: When true, routes requests to real partners instead of mocks. Available in sandbox environments only.
    CallbackTimestamp:
      name: X-Paypaga-Timestamp
      in: header
      required: true
      description: |
        Unix timestamp (in seconds) when the callback was sent.
        Use this to prevent replay attacks by rejecting old callbacks.
      schema:
        type: integer
        format: int64
        example: 1691347601
    CallbackId:
      name: X-Paypaga-Callback-Id
      in: header
      required: true
      description: |
        Unique identifier for this callback delivery.
        Can be used for idempotency and debugging.
      schema:
        type: string
        format: uuid
        example: 550e8400-e29b-41d4-a716-446655440000
  schemas:
    MoneyAmount:
      type: number
      format: double
      minimum: 0
      example: 125.5
    Currency:
      type: string
      pattern: ^[A-Z]{3}$
      maxLength: 3
      description: ISO 4217 currency code.
      example: BRL
    Country:
      type: string
      pattern: ^[A-Z]{2}$
      maxLength: 2
      description: ISO 3166-1 alpha-2 country code.
      example: BR
    PaymentMethod:
      type: string
      x-go-type: string
      enum:
        - top_up
        - spei
        - pix
        - cvu
        - paycash
        - wu
        - stp
        - pse
        - transfiya
        - nequi
        - daviplatanative
        - rappipay
        - dale
        - movii
        - efecty
        - sured
        - puntored
        - superpagos
        - bancolombia
        - gana
        - susuerte
        - bemovil
        - minegocioefectivo
        - rapiactivo
        - omniswitch
        - deuna
        - pichincha
        - banco_guayaquil
        - bancoagricola
        - cuscatlan
        - puntoxpresssv
        - pronet
        - bam
        - bam_transferencia
        - bi
        - bcp_efectivo
        - bcp
        - globokas
        - cellpower
        - yape
        - ligoqrinterbilletera
        - bbva
        - plin
        - khipu
        - qr_interoperable
        - bank_transfer
      description: Payment method code.
      example: pix
    Product:
      type: string
      enum:
        - pay_in
        - pay_out
      example: pay_in
      description: Product type.
    OptionField:
      type: object
      required:
        - name
        - type
      additionalProperties: false
      properties:
        name:
          type: string
          pattern: ^[a-z0-9_\-\.]+$
          maxLength: 100
          example: document_number
          description: Machine-readable name of the field.
        type:
          type: string
          enum:
            - string
            - integer
            - decimal
            - email
            - phone
            - enum
            - document
            - date
          example: document
          description: Data type of the field.
        pattern:
          type: string
          example: ^[0-9]{11}$
          description: Regular expression pattern that the field value must match.
          maxLength: 200
        options:
          type: object
          additionalProperties:
            type: string
          description: For fields of type enum, a mapping of allowed values to their human-readable descriptions.
          example:
            '37006': BANCOMEXT
            '90670': LIBERTAD
    PayInTransactionStatus:
      type: string
      enum:
        - initiated
        - created
        - pending
        - approved
        - failed
        - expired
        - refunded
        - rejected
      description: Status of a pay-in transaction.
    PayOutTransactionStatus:
      type: string
      enum:
        - initiated
        - created
        - pending
        - approved
        - failed
        - rejected
      description: Status of a pay-out transaction.
    NotificationType:
      type: string
      enum:
        - transaction_approved
        - transaction_failed
        - transaction_expired
      description: Types of notifications event.
    PaginationMeta:
      type: object
      required:
        - page
        - page_size
        - total_items
      description: Metadata for paginated responses. Contains information about the current page, page size, and total items.
      additionalProperties: false
      properties:
        page:
          type: integer
          example: 1
          description: Current page number. Starts from 1.
        page_size:
          type: integer
          example: 25
          description: Number of items per page.
        total_items:
          type: integer
          example: 200
          description: Total number of items available.
    MerchantOrderReference:
      type: string
      pattern: ^[a-zA-Z0-9\-]{1,64}$
      maxLength: 64
      example: ORDER-2026-0001
      description: Identifier for a single customer payment session (order). Groups multiple payment attempts; multiple transactions may share the same order reference. Must be unique per order.
    MerchantTransactionReference:
      type: string
      pattern: ^[a-zA-Z0-9\-]{1,64}$
      maxLength: 64
      example: TRX-2026-0001
      description: Identifier for a single payment attempt. Must be unique per transaction.
    FeeMode:
      type: string
      enum:
        - percent_fee
        - fixed_fee
        - both
        - greater
      example: greater
      description: Mode of fee calculation.
    PaymentOption:
      type: object
      required:
        - currency
        - payment_method
      additionalProperties: false
      properties:
        currency:
          $ref: '#/components/schemas/Currency'
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        fee_mode:
          $ref: '#/components/schemas/FeeMode'
        fixed_fee:
          type: number
          format: double
          example: 2.75
          description: Fixed fee amount charged per transaction in the specified currency.
        percentage_fee:
          type: number
          format: double
          example: 1.5
          description: Percentage fee charged per transaction. Represented as a percentage (e.g., 1.5 for 1.5%).
        minimum_fee:
          type: number
          format: double
          example: 1.5
          description: Minimum fee amount charged per transaction in the specified currency.
        maximum_fee:
          type: number
          format: double
          example: 15
          description: Maximum fee amount charged per transaction in the specified currency.
        required_fields:
          type: array
          items:
            $ref: '#/components/schemas/OptionField'
          example:
            - name: document_number
              type: document
              required: true
          description: List of fields required to process a transaction with this payment option.
        optional_fields:
          type: array
          items:
            $ref: '#/components/schemas/OptionField'
          example:
            - name: customer_note
              type: string
              required: false
          description: List of optional fields that can be provided for this payment option.
    Code:
      type: string
      pattern: ^[A-Z_]+$
      description: A code identifier consisting of uppercase letters and underscores
      example: INVALID_REQUEST
    Message:
      type: string
      pattern: ^[A-Za-z0-9\-].*$
      description: A descriptive message.
      example: The request is invalid due to missing parameters
    ValidationErrorItem:
      type: object
      required:
        - field
        - message
      additionalProperties: false
      properties:
        field:
          type: string
          pattern: ^[a-z0-9_\-\.]+$
        value:
          type: string
          pattern: ^[\s\S]*$
        message:
          type: string
          pattern: ^[A-Za-z0-9\-].*$
    ValidationErrorDetail:
      type: object
      required:
        - code
        - message
        - details
      additionalProperties: false
      properties:
        code:
          $ref: '#/components/schemas/Code'
        message:
          $ref: '#/components/schemas/Message'
        details:
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorItem'
    ErrorDetail:
      type: object
      required:
        - code
        - message
      additionalProperties: false
      properties:
        code:
          $ref: '#/components/schemas/Code'
        message:
          $ref: '#/components/schemas/Message'
    PayInTransaction:
      type: object
      required:
        - transaction_id
        - merchant_transaction_reference
        - created_on
        - country
        - currency
        - payment_method
        - transaction_amount
        - status
      additionalProperties: false
      properties:
        transaction_id:
          type: string
          format: uuid
          example: 20240806-2010-4086-8342-c28f4979f834
          description: Unique identifier for the pay-in transaction.
        merchant_transaction_reference:
          $ref: '#/components/schemas/MerchantTransactionReference'
        merchant_order_reference:
          $ref: '#/components/schemas/MerchantOrderReference'
        initiated_on:
          type: string
          format: date-time
          example: '2024-08-06T20:05:40Z'
          description: Timestamp when the transaction was initiated.
        created_on:
          type: string
          format: date-time
          example: '2024-08-06T20:05:41Z'
          description: Timestamp when the transaction was created.
        approved_on:
          type: string
          format: date-time
          example: '2024-08-06T20:12:41Z'
          description: Timestamp when the transaction was approved.
        failed_on:
          type: string
          format: date-time
          example: '2024-08-06T20:10:41Z'
          description: Timestamp when the transaction failed.
        fail_reason:
          type: string
          pattern: ^[\s\S]+$
          maxLength: 255
          example: Insufficient funds
          description: Reason for transaction failure, if applicable.
        refunded_on:
          type: string
          format: date-time
          example: '2024-08-07T15:30:00Z'
          description: Timestamp when the transaction was refunded.
        refund_reason:
          type: string
          pattern: ^[\s\S]+$
          maxLength: 255
          example: Customer requested refund
          description: Reason for transaction refund, if applicable.
        expired_on:
          type: string
          format: date-time
          example: '2024-08-08T12:00:00Z'
          description: Timestamp when the transaction expired.
        expires_at:
          type: string
          format: date-time
          example: '2024-08-06T22:10:41Z'
          description: Expiration date and time of the pay-in transaction.
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/Currency'
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        fee:
          type: number
          format: double
          example: 1.5
          description: Fee charged for the transaction.
        tax:
          type: number
          format: double
          example: 0.5
          description: Tax applied to the transaction.
        transaction_amount:
          type: number
          format: double
          example: 98
          description: Amount originally requested. For unsolicited pay-ins, this value is system-defined and matches the paid_amount field
        paid_amount:
          type: number
          format: double
          example: 90
          description: Amount effectively received
        status:
          $ref: '#/components/schemas/PayInTransactionStatus'
        unsolicited_payment:
          type: boolean
          description: Indicates if the pay-in was unsolicited (created by Paypaga without a prior request from the merchant)
          example: false
        transaction_input:
          type: object
          description: Input fields provided for the transaction
          additionalProperties:
            type: string
          example:
            payer_name: João Silva
            payer_document: '12345678901'
        processing_output:
          type: object
          description: Output fields from transaction processing
          additionalProperties:
            type: string
          example:
            customer_name: João Silva
            document_number: '12345678901'
    PayInTransactionListResponse:
      type: object
      required:
        - items
        - meta
      additionalProperties: false
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/PayInTransaction'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    ReturnUrls:
      type: object
      additionalProperties: false
      properties:
        success_url:
          type: string
          format: uri
          example: https://merchant.com/payment-success
          description: URL to redirect the customer to upon successful payment.
        pending_url:
          type: string
          format: uri
          example: https://merchant.com/payment-pending
          description: URL to redirect the customer to if the payment is pending.
        failure_url:
          type: string
          format: uri
          example: https://merchant.com/payment-failure
          description: URL to redirect the customer to upon failed payment.
      description: URLs for redirecting the customer after payment completion.
    CreatePayInRequest:
      type: object
      required:
        - amount
        - country
        - currency
        - payment_method
        - merchant_transaction_reference
        - merchant_customer_id
        - fields
      additionalProperties: false
      properties:
        amount:
          type: number
          format: double
          minimum: 0
          example: 125.5
          description: Total amount to be charged to the customer.
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/Currency'
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        merchant_order_reference:
          $ref: '#/components/schemas/MerchantOrderReference'
        merchant_transaction_reference:
          $ref: '#/components/schemas/MerchantTransactionReference'
        merchant_customer_id:
          type: string
          pattern: ^[a-zA-Z0-9\-_@.]+$
          maxLength: 64
          example: customer@email.com
          description: Identifier for the customer making the payment.
        customer_ip:
          oneOf:
            - type: string
              format: ipv4
            - type: string
              format: ipv6
          example: 120.29.48.92
          description: IP address of the customer making the payment.
        fields:
          type: object
          additionalProperties:
            type: string
          example:
            first_name: João
            last_name: Silva
            document_number: 241.390.720-32
          description: Key-value pairs of additional fields required by the selected payment method and country. Refer to the [Pay In Configuration](#operation/getPayInConfiguration) for the list of required fields.
        return_urls:
          $ref: '#/components/schemas/ReturnUrls'
    PaymentInstructions:
      type: object
      additionalProperties: false
      description: Properties can vary depending on the payment method. Reference to the Examples for payment method-specific implementation.
      properties:
        reference_url:
          type: string
          format: uri
          description: Link to redirect the customer for payment processing.
          example: https://api.dev.paypaga.com/v2/pay
        qr_code_url:
          type: string
          format: uri
          description: Link to the qr-code page/content.
          example: https://api.dev.paypaga.com/v2/qrcode/1234567890
        qr_code_content:
          type: string
          pattern: ^[\s\S]+$
          minLength: 1
          maxLength: 2048
          description: Raw QR code payload data. Must be processed before displaying to the user.
        bank_code:
          type: string
          pattern: ^\d{1,18}$
          maxLength: 18
          description: Bank code to which the payment should be transferred. Digits only.
        reference:
          type: string
          pattern: ^[A-Za-z0-9\-_/]+$
          maxLength: 35
          description: Payment reference or purpose identifier provided by the payer or system.
        beneficiary:
          type: string
          minLength: 1
          maxLength: 140
          description: Name of the payment beneficiary.
          example: João Silva
        bank_account:
          type: string
          pattern: ^\d{1,18}$
          maxLength: 18
          description: Bank account number to which the payment should be transferred. Digits only.
        agreement_code:
          type: string
          pattern: ^[A-Za-z0-9\-_/]+$
          maxLength: 35
          description: Agreement code associated with the payment, if applicable.
        amount:
          type: number
          format: double
          example: 100
          description: Amount to be paid, if applicable.
    CreatePayInResponse:
      type: object
      required:
        - transaction_id
        - instructions
      additionalProperties: false
      properties:
        transaction_id:
          type: string
          format: uuid
          example: 20240806-2010-4086-8342-c28f4979f834
          description: Unique identifier for the created pay-in transaction.
        payment_method_reference:
          type: string
          pattern: ^[A-Za-z0-9\-_/]+$
          maxLength: 64
          description: Payment method provider transaction identifier.
          example: 90921088637
        expires_at:
          type: string
          format: date-time
          example: '2024-08-06T22:10:41Z'
          description: Expiration date and time of the pay-in transaction.
        instructions:
          $ref: '#/components/schemas/PaymentInstructions'
    PayInTransactionStatusOverrideRequest:
      type: object
      required:
        - status
      additionalProperties: false
      properties:
        status:
          type: string
          enum:
            - approved
            - failed
            - expired
          example: approved
        reason:
          type: string
          pattern: ^[\s\S]+$
          maxLength: 255
          example: Simulate approved state for integration test
        with_notifications:
          type: boolean
          default: false
          example: true
          description: Whether to trigger status notification callbacks.
    PayOutTransaction:
      type: object
      required:
        - transaction_id
        - merchant_transaction_reference
        - created_on
        - country
        - currency
        - payment_method
        - transaction_amount
        - status
      additionalProperties: false
      properties:
        transaction_id:
          type: string
          format: uuid
          example: 20240806-2010-4086-8342-c28f4979f834
          description: Unique identifier for the pay-out transaction.
        merchant_order_reference:
          $ref: '#/components/schemas/MerchantOrderReference'
        merchant_transaction_reference:
          $ref: '#/components/schemas/MerchantTransactionReference'
        initiated_on:
          type: string
          format: date-time
          example: '2024-08-06T20:05:40Z'
          description: Timestamp when the transaction was initiated.
        created_on:
          type: string
          format: date-time
          example: '2024-08-06T18:02:41Z'
          description: Timestamp when the transaction was created.
        approved_on:
          type: string
          format: date-time
          example: '2024-08-06T18:07:41Z'
          description: Timestamp when the transaction was approved.
        failed_on:
          type: string
          format: date-time
          example: '2024-08-06T19:15:00Z'
          description: Timestamp when the transaction failed.
        fail_reason:
          type: string
          example: Bank account closed
          description: Reason for transaction failure, if applicable.
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/Currency'
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        fields:
          type: object
          additionalProperties:
            type: string
          example:
            name: Maria Alves
            document: 12345678909
            bank_code: 1
            account_number: 12345-6
          description: Details of the beneficiary receiving the pay-out.
        transaction_amount:
          type: number
          format: double
          example: 500
          description: Amount to be paid out to the beneficiary.
        fee:
          type: number
          format: double
          example: 3
          description: Fee charged for the pay-out transaction.
        tax:
          type: number
          format: double
          example: 0
          description: Tax applied to the pay-out transaction.
        status:
          $ref: '#/components/schemas/PayOutTransactionStatus'
          description: Current status of the pay-out transaction.
        meta:
          type: object
          additionalProperties:
            type: string
          example:
            settlement_id: SETTLEMENT-2024-06-15
            requested_by: automation
          description: Additional metadata associated with the transaction.
    PayOutTransactionListResponse:
      type: object
      required:
        - items
        - meta
      additionalProperties: false
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/PayOutTransaction'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    CreatePayOutRequest:
      type: object
      required:
        - country
        - currency
        - payment_method
        - merchant_transaction_reference
        - merchant_customer_id
        - amount
        - beneficiary
      additionalProperties: false
      properties:
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/Currency'
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        merchant_transaction_reference:
          $ref: '#/components/schemas/MerchantTransactionReference'
        merchant_order_reference:
          $ref: '#/components/schemas/MerchantOrderReference'
        merchant_customer_id:
          type: string
          maxLength: 64
          example: customer@email.com
          description: Identifier for the customer receiving the payout.
        customer_ip:
          oneOf:
            - type: string
              format: ipv4
            - type: string
              format: ipv6
          example: 120.29.48.92
          description: IP address of the customer receiving the payout.
        amount:
          type: number
          format: double
          minimum: 0
          example: 125.5
          description: Amount to be paid out to the beneficiary.
        fields:
          type: object
          additionalProperties:
            type: string
          example:
            name: Maria Alves
            document: 241.390.720-32
            bank_code: 1
            account_number: 12345-6
          description: Details of the beneficiary receiving the pay-out.
    CreatePayOutResponse:
      type: object
      required:
        - transaction_id
        - merchant_transaction_reference
      additionalProperties: false
      properties:
        transaction_id:
          type: string
          example: 20240806-2010-4086-8342-c28f4979f834
          description: Unique identifier for the created pay-out transaction.
        merchant_transaction_reference:
          $ref: '#/components/schemas/MerchantTransactionReference'
        merchant_order_reference:
          $ref: '#/components/schemas/MerchantOrderReference'
    PayOutTransactionStatusOverrideRequest:
      type: object
      required:
        - status
      additionalProperties: false
      properties:
        status:
          type: string
          enum:
            - approved
            - failed
          example: approved
        reason:
          type: string
          maxLength: 255
          example: Simulate approved state for integration test
        with_notifications:
          type: boolean
          default: false
          example: true
          description: Whether to trigger status notification callbacks.
    PredefinedFields:
      type: object
      required:
        - payment_method
        - fields
      additionalProperties: false
      properties:
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        fields:
          type: object
          additionalProperties:
            type: string
    CreatePayURLRequest:
      type: object
      required:
        - country
        - currency
        - merchant_transaction_reference
        - merchant_customer_id
      additionalProperties: false
      properties:
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          $ref: '#/components/schemas/MoneyAmount'
        merchant_transaction_reference:
          $ref: '#/components/schemas/MerchantTransactionReference'
        merchant_order_reference:
          $ref: '#/components/schemas/MerchantOrderReference'
        merchant_customer_id:
          type: string
          pattern: ^[a-zA-Z0-9\-_@.]+$
          maxLength: 64
          example: customer@email.com
          description: Identifier for the customer making the payment.
        allowed_payment_methods:
          type: array
          items:
            $ref: '#/components/schemas/PaymentMethod'
          example:
            - pix
            - bank_transfer
        predefined_fields:
          type: array
          items:
            $ref: '#/components/schemas/PredefinedFields'
          example:
            - payment_method: pix
              fields:
                document_number: '12345678909'
        return_urls:
          $ref: '#/components/schemas/ReturnUrls'
    CreatePayURLResponse:
      type: object
      required:
        - transaction_id
        - pay_url
        - allowed_payment_methods
        - expires_at
      additionalProperties: false
      properties:
        transaction_id:
          type: string
          format: uuid
          example: 20240806-2010-4086-8342-c28f4979f834
        pay_url:
          type: string
          format: uri
          example: https://checkout.paypaga.com/pay/abc123
        expires_at:
          type: string
          format: date-time
          example: '2024-08-06T22:10:41Z'
          description: Expiration date and time of the PayURL. Expiration of the PayURL is the same as the expiration of the underlying transaction.
    BalanceTotal:
      type: object
      required:
        - currency_code
        - amount
      additionalProperties: false
      description: Total balance across all countries in the reporting currency.
      properties:
        currency_code:
          $ref: '#/components/schemas/Currency'
        amount:
          type: number
          format: double
          example: 325000
          description: Total balance amount across all countries in the reporting currency.
      example:
        currency_code: USD
        amount: 325000
    BalanceCountry:
      type: object
      required:
        - country
        - currency
        - available_for_payout
        - amount
      additionalProperties: false
      properties:
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          type: number
          format: double
          example: 210000
          description: Total balance amount in this currency.
        available_for_payout:
          type: number
          format: double
          example: 82000
          description: Amount available for payout in this currency.
    BalanceSummaryResponse:
      type: object
      required:
        - as_of
        - reporting_currency
        - total
        - countries
      additionalProperties: false
      properties:
        as_of:
          type: string
          format: date-time
          example: '2024-08-06T21:10:41Z'
          description: Timestamp of when the balance was retrieved.
        reporting_currency:
          type: string
          pattern: ^[A-Z]{3}$
          maxLength: 3
          description: ISO 4217 currency code.
          example: USD
        total:
          $ref: '#/components/schemas/BalanceTotal'
        countries:
          type: array
          items:
            $ref: '#/components/schemas/BalanceCountry'
          description: Breakdown of balances by country.
          example:
            - country: BR
              currency: BRL
              amount: 210000
              available_for_payout: 82000
            - country: MX
              currency: MXN
              amount: 115000
              available_for_payout: 68000
            - country: CO
              currency: COP
              amount: 0
              available_for_payout: 0
    CountryCatalogEntry:
      type: object
      required:
        - country
        - currency
        - payment_methods
      additionalProperties: false
      properties:
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/Currency'
        payment_methods:
          type: array
          items:
            $ref: '#/components/schemas/PaymentMethod'
          example:
            - pix
            - cvu
    PaymentMethodCatalogEntry:
      type: object
      required:
        - payment_method
        - country
        - currency
        - products
      additionalProperties: false
      properties:
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/Currency'
        products:
          type: array
          items:
            $ref: '#/components/schemas/Product'
          example:
            - pay_in
            - pay_out
          description: List of products supported by the payment method.
    Settlement:
      type: object
      required:
        - settlement_id
        - created_on
        - status
        - total_amount
        - currency
      additionalProperties: false
      properties:
        settlement_id:
          type: string
          pattern: ^[\w-]{1,64}$
          maxLength: 64
          example: settlement-2024-08-01
          description: Unique identifier for the settlement.
        created_on:
          type: string
          format: date-time
          example: '2024-08-01T10:00:00Z'
          description: Date and time when the settlement was created.
        settled_on:
          type: string
          nullable: true
          format: date-time
          example: '2024-08-02T14:30:00Z'
          description: Date and time when the settlement was completed. Null if not yet settled.
        status:
          type: string
          enum:
            - pending
            - processing
            - completed
            - failed
          example: completed
          description: Current status of the settlement.
        total_amount:
          type: number
          format: double
          example: 150000
          description: Total amount settled in the specified currency.
        currency:
          $ref: '#/components/schemas/Currency'
    SettlementsResponse:
      type: object
      required:
        - items
        - meta
      additionalProperties: false
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Settlement'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    SettlementWindow:
      type: object
      required:
        - start_at
        - end_at
        - settles_after
      description: Settlement window details.
      additionalProperties: false
      properties:
        start_at:
          type: string
          format: date-time
          example: '2024-08-05T00:00:00Z'
          description: Date and time when the settlement window starts.
        end_at:
          type: string
          format: date-time
          example: '2024-08-11T23:59:59Z'
          description: Date and time when the settlement window ends.
        settles_after:
          type: string
          format: date-time
          example: '2024-08-12T12:00:00Z'
          description: Date and time after which settlements are processed.
    SettlementOptionsResponse:
      type: object
      required:
        - settlement_currency
        - reporting_currency
        - settlement_cycle
        - payout_withhold_threshold
        - next_window
      additionalProperties: false
      properties:
        settlement_currency:
          type: string
          pattern: ^[A-Z]{3}$
          maxLength: 3
          example: USD
          description: Currency code in ISO 4217 format.
        reporting_currency:
          type: string
          pattern: ^[A-Z]{3}$
          maxLength: 3
          example: USD
          description: Currency code in ISO 4217 format.
        settlement_cycle:
          type: string
          pattern: ^\d+[dmw]$
          maxLength: 4
          example: 1w
          description: |
            Settlement cycle configured for the merchant. Available units are:
            - d: days
            - w: weeks
            - m: months 
        next_window:
          $ref: '#/components/schemas/SettlementWindow'
        manual_request_enabled:
          type: boolean
          example: true
          description: Indicates if manual settlement requests are enabled for the merchant.
    SettlementTransaction:
      type: object
      required:
        - transaction_id
        - amount
        - currency
        - status
        - created_on
        - product
        - payment_method
        - country
        - merchant_transaction_reference
      additionalProperties: false
      properties:
        transaction_id:
          type: string
          format: uuid
          example: 20240806-2010-4086-8342-c28f4979f834
          description: Unique identifier for the transaction.
        merchant_transaction_reference:
          $ref: '#/components/schemas/MerchantTransactionReference'
        merchant_order_reference:
          $ref: '#/components/schemas/MerchantOrderReference'
        created_on:
          type: string
          format: date-time
          example: '2024-08-06T20:05:41Z'
          description: Date and time when the transaction was created.
        product:
          $ref: '#/components/schemas/Product'
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          type: number
          format: double
          example: 5000
          description: Amount of the transaction.
        fee:
          type: number
          format: double
          example: 75
          description: Fee applied to the transaction.
        tax:
          type: number
          format: double
          example: 25
          description: Tax applied to the transaction.
        status:
          type: string
          enum:
            - approved
            - refunded
          example: approved
          description: Final status of the transaction included in the settlement.
    SettlementTransactionsResponse:
      type: object
      required:
        - items
        - meta
      additionalProperties: false
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/SettlementTransaction'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    ExchangeRateQuote:
      type: object
      required:
        - quote_currency
        - rate
      additionalProperties: false
      properties:
        quote_currency:
          $ref: '#/components/schemas/Currency'
        rate:
          type: number
          format: double
          example: 5.12
    ExchangeRatesResponse:
      type: object
      required:
        - base_currency
        - as_of
        - rates
      additionalProperties: false
      properties:
        base_currency:
          $ref: '#/components/schemas/Currency'
        as_of:
          type: string
          format: date-time
          example: '2024-06-15T14:55:00Z'
          description: Date when the exchange rates were last updated.
        rates:
          type: array
          items:
            $ref: '#/components/schemas/ExchangeRateQuote'
          example:
            - quote_currency: BRL
              rate: 5.12
              source: Central Bank of Brazil
    TaxRate:
      type: object
      required:
        - country
        - currency
        - product
        - type
        - applies_to
        - value
        - is_default
      additionalProperties: false
      properties:
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/Currency'
        product:
          $ref: '#/components/schemas/Product'
        type:
          type: string
          enum:
            - percentage
            - fixed_amount
            - 4x1000
          example: percentage
          description: Type of tax rate.
        applies_to:
          type: string
          enum:
            - amount
            - fees
          example: amount
          description: Indicates whether the tax applies to the transaction amount or fees.
        value:
          type: number
          format: double
          example: 0.02
          description: Tax value (percentage as a decimal or fixed amount).
    ChannelType:
      type: string
      enum:
        - callback
        - email
      description: The channel through which notifications will be sent.
      example: callback
    NotificationSubscriptionResponse:
      type: object
      required:
        - subscription_id
        - channel
        - notification_types
        - targets
        - created_on
      additionalProperties: false
      properties:
        subscription_id:
          type: string
          description: Unique identifier for the notification subscription.
          example: 20251022-0949-42c7-947d-67f32a1ecf45
        channel:
          $ref: '#/components/schemas/ChannelType'
        notification_types:
          type: array
          items:
            $ref: '#/components/schemas/NotificationType'
          description: Types of notifications to receive.
          example:
            - transaction_approved
            - transaction_rejected
        targets:
          type: array
          items:
            type: string
            maxLength: 256
          description: List of target identifiers for the notifications.
          example:
            - https://example.com/callback-endpoint
            - https://another-endpoint.com/callback
        created_on:
          type: string
          format: date-time
          description: Timestamp when the notification subscription was created.
          example: '2024-08-06T20:15:30Z'
    ListNotificationSubscriptionsResponse:
      type: object
      required:
        - items
      additionalProperties: false
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/NotificationSubscriptionResponse'
          example:
            items:
              - subscription_id: 20251022-0949-42c7-947d-67f32a1ecf45
                channel: callback
                notification_types:
                  - transaction_approved
                  - transaction_rejected
                targets:
                  - https://example.com/callback-endpoint
                  - https://another-endpoint.com/callback
                created_on: '2024-08-06T20:15:30Z'
              - subscription_id: 20251022-0949-42c7-947d-67f32a1ecf46
                channel: email
                notification_types:
                  - transaction_approved
                  - transaction_rejected
                targets:
                  - user@example.com
                  - admin@example.com
                created_on: '2024-08-06T20:20:30Z'
    NotificationSubscriptionRequest:
      type: object
      required:
        - channel_type
        - notification_types
        - targets
      additionalProperties: false
      properties:
        subscription_id:
          type: string
          pattern: ^[a-zA-Z0-9\-]{1,64}$
          maxLength: 64
          description: Unique identifier for the notification subscription.
          example: 20251022-0949-42c7-947d-67f32a1ecf45
        channel_type:
          $ref: '#/components/schemas/ChannelType'
        notification_types:
          type: array
          items:
            $ref: '#/components/schemas/NotificationType'
          description: Types of notifications to receive.
        targets:
          type: array
          items:
            type: string
            maxLength: 256
          description: List of callback URLs for the callback notifications or email addresses for email notifications.
          example:
            - https://example.com/callback-endpoint
            - https://another-endpoint.com/callback
    TransactionCallbackPayload:
      type: object
      required:
        - transaction_id
        - merchant_transaction_reference
        - created_on
        - country
        - currency
        - payment_method
        - transaction_amount
        - status
      additionalProperties: false
      properties:
        transaction_id:
          type: string
          format: uuid
          example: 20240806-2010-4086-8342-c28f4979f834
          description: Unique identifier for the transaction.
        merchant_transaction_reference:
          $ref: '#/components/schemas/MerchantTransactionReference'
        merchant_order_reference:
          $ref: '#/components/schemas/MerchantOrderReference'
        created_on:
          type: string
          format: date-time
          example: '2024-08-06T20:05:41Z'
          description: Timestamp when the transaction was created.
        approved_on:
          type: string
          format: date-time
          example: '2024-08-06T20:12:41Z'
          description: Timestamp when the transaction was approved.
        failed_on:
          type: string
          format: date-time
          description: Timestamp when the transaction failed.
        fail_reason:
          type: string
          pattern: ^[\s\S]+$
          maxLength: 200
          example: Insufficient funds
          description: Reason for the transaction failure.
        refunded_on:
          type: string
          format: date-time
          description: Timestamp when the transaction was refunded.
        refund_reason:
          type: string
          pattern: ^[\s\S]+$
          maxLength: 200
          example: Customer requested refund
          description: Reason for the refund.
        expired_on:
          type: string
          format: date-time
          description: Timestamp when the transaction expired.
        country:
          $ref: '#/components/schemas/Country'
        currency:
          $ref: '#/components/schemas/Currency'
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        fee:
          type: number
          format: double
          example: 1.5
          description: Fee charged for the transaction.
        tax:
          type: number
          format: double
          example: 0.5
          description: Tax applied to the transaction.
        transaction_amount:
          type: number
          format: double
          example: 98
          description: Amount effectively processed for the transaction. This may differ from the original amount requested in cases of underpayment or overpayment.
        requested_amount:
          type: number
          format: double
          example: 90
          description: Amount originally requested.
        status:
          $ref: '#/components/schemas/PayInTransactionStatus'
        unsolicited_payment:
          type: boolean
          description: Indicates if the pay-in was unsolicited (created by Paypaga without a prior request from the merchant)
          example: false
        transaction_input:
          type: object
          description: Input fields provided for the transaction
          additionalProperties:
            type: string
          example:
            payer_name: João Silva
            payer_document: '12345678901'
        processing_output:
          type: object
          description: Output fields from transaction processing
          additionalProperties:
            type: string
          example:
            customer_name: João Silva
            document_number: '12345678901'
  responses:
    ValidationError:
      description: Request validation failed.
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            additionalProperties: false
            properties:
              error:
                $ref: '#/components/schemas/ValidationErrorDetail'
            example:
              error:
                code: VALIDATION_ERROR
                message: Request validation failed
                details:
                  - field: country
                    value: invalid-country
                    message: Must be a valid ISO 3166-1 alpha-2 country code
                  - field: currency
                    value: 12345abc
                    message: Must be a valid ISO 4217 currency code
    Unauthorized:
      description: Missing or invalid token.
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            additionalProperties: false
            properties:
              error:
                $ref: '#/components/schemas/ErrorDetail'
            example:
              error:
                code: UNAUTHORIZED
                message: Missing or invalid authorization token
    Forbidden:
      description: Insufficient privileges.
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            additionalProperties: false
            properties:
              error:
                $ref: '#/components/schemas/ErrorDetail'
            example:
              error:
                code: FORBIDDEN
                message: You do not have permission to access this resource
    InternalError:
      description: Unexpected server error.
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            additionalProperties: false
            properties:
              error:
                $ref: '#/components/schemas/ErrorDetail'
            example:
              error:
                code: INTERNAL_ERROR
                message: Unexpected server error
    ValidationAndBadRequestError:
      description: Request validation failed.
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            additionalProperties: false
            properties:
              error:
                $ref: '#/components/schemas/ValidationErrorDetail'
          examples:
            validation:
              summary: Example of validation errors
              value:
                error:
                  code: VALIDATION_ERROR
                  message: Request validation failed
                  details:
                    - field: email
                      value: invalid-email
                      message: Must be a valid email address
                    - field: document_number
                      value: 12345abc
                      message: Invalid document number format
            badRequest:
              summary: Example of bad request error
              value:
                error:
                  code: BAD_REQUEST
                  message: Failed to parse the request body
    DuplicateMerchantReference:
      description: Merchant transaction reference already exists.
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            additionalProperties: false
            properties:
              error:
                $ref: '#/components/schemas/ErrorDetail'
            example:
              error:
                code: MERCHANT_REFERENCE_ALREADY_EXISTS
                message: Merchant transaction reference already exists
  examples:
    request:
      summary: Argentina CVU
      description: |
        # Important Considerations

        Instant Transfers in Argentina allow end users to send funds directly to a CVU/CBU, both inside and outside of a checkout flow.
        This behavior is expected and inherent to Instant Transfers (CBU/CVU) in Argentina.
        PayPaga has built a transaction matching logic to cover the majority of use cases. However, there are known situations where an incoming payment cannot be matched to an existing pay-in previously created via the API. 
        Matching logic is configured on a per account basis and dependant on orchestration configuration.


        ---

        ## Unmatched or Unplanned Payments

        You may receive incoming transfers that cannot be matched to a previously created 'Pending' transaction in the following situations:

        | Scenario | Description |
        | --- | --- |
        | Unmatched payer | The payment is initiated by the expected customer, but the payer identification (CUIL/CUIT) does not match the one provided when the transaction was created |
        | Unsolicited payment | The end user performs a transfer without creating a prior transaction, sending funds directly to your assigned CVU/CBU |
        | Expired transaction | A transaction was created but expired before the transfer was completed |
        | Third-party payment | The payment is initiated by a different person or legal entity than the customer defined in the original transaction, even if the amount or reference matches |

        > **Important**  
        > You cannot currently reject or automatically refund unsolicited payments.  
        > Once funds are received in your assigned CVU/CBU, the pay-in is considered approved and reflected accordingly.

        ---



        ## System Behavior for Unmatched Payments

        When an incoming transfer cannot be matched to an existing pending transaction (including cases where a previous transaction exists but is already expired), the system behaves as follows:


        | Step | Behavior |
        | --- | --- |
        | Pay-in creation | The system automatically creates a new pay-in |
        | Approval | The pay-in is instantly approved based on the received funds |
        | Notification | You are notified via your configured webhook notifications |

        As a result, you may receive a successful pay-in notification for a transaction that you did not explicitly create beforehand via the API.

        ---

        ## What You Should Consider

        If you integrate Instant Transfers (CVU/CBU), you should take the following into account:

        - Do not assume that every approved pay-in originates from a transaction you previously created.
        - Always rely on webhooks and reports as your source of truth for successful payments.
        - Ensure your system is capable of handling unsolicited/third-party payments. Note that unsolicited/third-party payments are not supported for **Forex** and **Crypto** industries.

        This behavior is expected and inherent to Instant Transfers (CBU/CVU) in Argentina and must be considered as part of your integration logic.

        ---

        ### Required Fields
        | Field | Description | Validation |  
        | --- | --- | --- |
        | first_name| First name | Length >= 2 <= 50, RegEx `^\p{L}*(?:[ '-]\p{L}+)*$` |
        | last_name| Last name | Length >= 2 <= 50, RegEx `^\p{L}*(?:[ '-]\p{L}+)*$` |
        | document_number | CUIL/CUIT| RegEx `^(20\|23\|24\|25\|26\|27\|30\|33\|34)(-?\d{8}-?\d\|\d{8}\d)$` Must be valid CUIL/CUIT (length/format/check digit) |

        ### Optional Fields
        | Field | Description | Validation |  
        | --- | ---  | --- |
        | bank_code | Bank identifier code | One of the bank identifier codes listed below |

        #### Bank Identifier Code
        | Name | Code 
        | --- | --- |
        | Mercado Pago | mercado_pago |
        | Ualá | uala |
        | Naranja X | naranja_x |
        | Personal Pay | personal_pay |
        | Brubank | brubank |
        | Prex | prex |
        | Lemon | lemon |
        | Galicia | galicia |
        | Santander | santander |
        | BBVA | bbva |
        | Banco Provincia | banco_provincia |
        | Banco Nación | banco_nacion |
        | ICBC | icbc |
        | Macro | macro |

        ### User Experience
        Logos for primary banks can be displayed to enhance the user experience as per the PayPaga [demonstration site](https://demos.paypaga.com).
        Logos can be sourced from the [Assets](https://docs.paypaga.com/assets-5950687f0) in the documentation Appendix

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 72 hours.
        The instructions to the payer encourage payment within 3 hours.

        ### Payment Instructions
        Transfer the exact amount to the provided CVU/CBU to complete your payment.
      value:
        amount: 1000
        country: AR
        currency: ARS
        payment_method: cvu
        merchant_order_reference: ORDER-2026-0001
        merchant_transaction_reference: TRX-2026-0001
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        fields:
          first_name: João
          last_name: Silva
          document_number: '20084908488'
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-2:
      summary: Brazil PIX
      description: |
        ### Required Fields
        <table>
          <tr>
            <th>Field</th>
            <th>Description</th>
            <th>Validation</th>
          </tr>
          <tr>
            <td>first_name</td>
            <td>First name</td>
            <td>Length &gt;= 2 &lt;= 50, RegEx <code>^\p{L}*(?:[ '-]\p{L}+)*$</code></td>
          </tr>
          <tr>
            <td>last_name</td>
            <td>Last name</td>
            <td>Length &gt;= 2 &lt;= 50, RegEx <code>^\p{L}*(?:[ '-]\p{L}+)*$</code></td>
          </tr>
          <tr>
            <td>document_number</td>
            <td>CPF (Cadastro de Pessoa Física)</td>
            <td>RegEx <code>^(\d{3}\.\?\d{3}\.\?\d{3}-?\d{2}|\d{11})$</code> Must be valid CPF</td>
          </tr>
        </table>


        ### Expiry
        Initiated transactions that are not completed transition to an Expired state after 72 hours.

        ### QR Code
        The value encoded in the QR Code image (type/key: qr_link/qr_content) (Base64 encoded PNG) is replicated in the value (type/key: copy_link/text_sequence)

        ### Payment Instructions
        Scan the QR code or copy the PIX Copy and Paste code to proceed with the payment. You have 3 days to complete your payment.
      value:
        amount: 1000
        country: BR
        currency: BRL
        payment_method: pix
        merchant_order_reference: ORDER-2026-0002
        merchant_transaction_reference: TRX-2026-0002
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        fields:
          first_name: João
          last_name: Silva
          document_number: 241.390.720-32
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-3:
      summary: Chile Bank Transfer
      description: |
        ### Required Fields
        <table>
          <tr>
            <th>Field</th>
            <th>Description</th>
            <th>Validation</th>
          </tr>
          <tr>
            <td>document_number</td>
            <td>RUT (Rol Único Tributario)</td>
            <td>Length &gt;=8 &lt;= 12, RegEx <code>^(\d{1,2}[.,\s]*\d{3}[.,\s]*\d{3}[.,\s]*-[0-9kK]\|\d{7,8}-?[0-9kK])$</code>, Must be valid RUT</td>
          </tr>
          <tr>
            <td>email</td>
            <td>Email address</td>
            <td>Length &gt;= 5 &lt;= 50, RegEx <code>^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$</code></td>
          </tr>
          <tr>
            <td>bank_code</td>
            <td>Bank identifier code</td>
            <td>See Bank Identifier Codes below</td>
          </tr>
        </table>

        #### Bank Identifier Code

        | Name| Code | Channel |
        | --- | --- | --- |
        | Banco de Chile | banco_chile | Bank Transfer |
        | Banco Estado | banco_estado | Bank Transfer |
        | BCI | bci | Bank Transfer |
        | Banco Falabella | falabella | Bank Transfer |
        | Banco Itaú | itau | Bank Transfer |
        | Banco Santander | santander | Bank Transfer |
        | Banco Security | security | Bank Transfer |
        | Scotiabank | scotiabank | Bank Transfer |
        | Mach | mach | Wallet |
        | Test Bank (Sandbox Only) | test_bank |

        ### Amount
        CLP has no minor currency units, supplied amounts must be an integer amount with no decimal places

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50




        ### User Experience
        Logos for primary banks can be displayed to enhance the user experience as per the PayPaga [demonstration site](https://demos.paypaga.com).
        Logos can be sourced from the [Assets](https://docs.paypaga.com/assets-5950687f0) in the documentation Appendix

        ### Simulator
        By default requests in the Sandbox environment are processed by a Provider simulator, to enable Provider Sandbox processing set DisablePartnerMock header to true.
        This header only applies to the Sandbox environment.

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 72 hours.
      value:
        amount: 1000
        country: CL
        currency: CLP
        payment_method: bank_transfer
        merchant_order_reference: ORDER-2026-0003
        merchant_transaction_reference: TRX-2026-0003
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        fields:
          document_number: 241.390.720-32
          email: customer@email.com
          bank_code: test_bank
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-4:
      summary: Colombia Dale
      description: |
        ### Channel
        Wallet

        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.
      value:
        amount: 1000
        country: CO
        currency: COP
        payment_method: dale
        merchant_order_reference: ORDER-2026-0004
        merchant_transaction_reference: TRX-2026-0004
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-5:
      summary: Colombia Daviplata
      description: |
        ### Channel
        Wallet

        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.

        ### Simulator
        By default requests in the Sandbox environment are processed by a Provider simulator, to enable Provider Sandbox processing set DisablePartnerMock header to true.
        This header only applies to the Sandbox environment.
      value:
        amount: 1000
        country: CO
        currency: COP
        payment_method: daviplatanative
        merchant_order_reference: ORDER-2026-0005
        merchant_transaction_reference: TRX-2026-0005
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-6:
      summary: Colombia Efecty
      description: |
        ### Channel
        Cash

        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: CO
        currency: COP
        payment_method: efecty
        merchant_order_reference: ORDER-2026-0006
        merchant_transaction_reference: TRX-2026-0006
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-7:
      summary: Colombia Gana
      description: |
        ### Channel
        Cash

        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: CO
        currency: COP
        payment_method: gana
        merchant_order_reference: ORDER-2026-0007
        merchant_transaction_reference: TRX-2026-0007
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-8:
      summary: Colombia Movii
      description: |
        ### Channel
        Wallet

        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.
      value:
        amount: 1000
        country: CO
        currency: COP
        payment_method: movii
        merchant_order_reference: ORDER-2026-0008
        merchant_transaction_reference: TRX-2026-0008
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-9:
      summary: Colombia Nequi
      description: |
        ### Channel
        Wallet

        ### Required Fields

        <table>
          <tr>
            <th>Field</th>
            <th>Description</th>
            <th>Validation</th>
          </tr>
          <tr>
            <td>phone</td>
            <td>Phone number</td>
            <td>Length &gt;= 8 &lt;= 10, RegEx <code>^\d+$</code></td>
          </tr>
        </table>


        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.
      value:
        amount: 1000
        country: CO
        currency: COP
        payment_method: nequi
        merchant_order_reference: ORDER-2026-0009
        merchant_transaction_reference: TRX-2026-0009
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        fields:
          phone: '3651234567'
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-10:
      summary: Colombia PSE
      description: |
        ### Channel
        Bank Transfer

        ### Required Fields

        <table>
          <tr>
            <th>Field</th>
            <th>Description</th>
            <th>Validation</th>
          </tr>
          <tr>
            <td>first_name</td>
            <td>First name</td>
            <td>Length &gt;= 2 &lt;= 25, RegEx <code>^\p{L}*(?:[ '-]\p{L}+)*$</code></td>
          </tr>
          <tr>
            <td>last_name</td>
            <td>Last name</td>
            <td>Length &gt;= 2 &lt;= 25, RegEx <code>^\p{L}*(?:[ '-]\p{L}+)*$</code></td>
          </tr>
          <tr>
            <td>document_type</td>
            <td>Identification document type</td>
            <td>See document types listed below</td>
          </tr>
          <tr>
            <td>document_number</td>
            <td>Identification document number</td>
            <td>See document types listed below</td>
          </tr>
          <tr>
            <td>bank_code</td>
            <td>Bank Identification Code</td>
            <td>See Bank Identifier Codes below</td>
          </tr>
          <tr>
            <td>email</td>
            <td>Email address</td>
            <td>Length &gt;= 5 &lt;= 50, RegEx <code>^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$</code></td>
          </tr>
          <tr>
            <td>phone</td>
            <td>Phone number</td>
            <td>Length &gt;= 8 &lt;= 10, RegEx <code>^\d+$</code></td>
          </tr>
          <tr>
            <td>address</td>
            <td>Full address</td>
            <td>Length &gt;= 2 &lt;= 64, RegEx <code>^[\p{L}0-9][\p{L}0-9\s,'#/.°-]+$</code></td>
          </tr>
        </table>
            

        ### Document types

        <table>
          <tr>
            <th>Name</th>
            <th>Description</th>
            <th>Validation</th>
          </tr>
          <tr>
            <td>Cédula de Ciudadanía</td>
            <td>CC</td>
            <td>Length &gt;= 6 &lt;= 10, RegEx <code>^\d+$</code></td>
          </tr>
          <tr>
            <td>Cédula de Extranjería</td>
            <td>CE</td>
            <td>Length &gt;= 6 &lt;= 10 RegEx <code>^[a-zA-Z0-9]+$</code></td>
          </tr>
          <tr>
            <td>Pasaporte</td>
            <td>PP</td>
            <td>Length &gt;= 7 &lt;= 12, RegEx <code>^[a-zA-Z0-9]+$</code></td>
          </tr>
          <tr>
            <td>Tarjeta de Extranjería</td>
            <td>TE</td>
            <td>Length &gt;= 6 &lt;= 15, RegEx <code>^[a-zA-Z0-9]+$</code></td>
          </tr>
        </table>

            
        ### Bank Identifier Code
        | Name | Code |
        | --- | --- |
        | COTRAFA | 1289 |
        | LULO BANK | 1070 |
        | BANCO FALABELLA | 1062 |
        | BANCO MUNDO MUJER S.A. | 1047 |
        | BANCO SERFINANZA | 1069 |
        | GLOBAL66 | 1814 |
        | JFK COOPERATIVA FINANCIERA | 1286 |
        | UALÁ | 1804 |
        | BANCO DE OCCIDENTE | 1023 | 
        | CREZCAMOS | 1816 | 
        | BANCAMIA S.A. | 1059 | 
        | BANCO AV VILLAS | 1052 |
        | BANCO DAVIVIENDA | 1051 | 
        | IRIS | 1637 |
        | MOVII S.A. | 1801 |
        | ALIANZA FIDUCIARIA | 1815 |
        | BANCO AGRARIO | 1040 |
        | BANCO COOPERATIVO COOPCENTRAL | 1066 |
        | BANCO POPULAR | 1002 | 
        | BANCO UNION antes GIROS | 1303 |
        | FINANCIERA JURISCOOP SA COMPAÑÍA DE FINANCIAMIENTO | 1121 |
        | POWWI | 1803 |
        | BANCO CAJA SOCIAL | 1032 |
        | BANCO J.P. MORGAN COLOMBIA S.A. | 1071 | 
        | BANCO PICHINCHA S.A. | 1060 | 
        | BANCO SANTANDER COLOMBIA | 1065 | 
        | BOLD CF | 1808 | 
        | CITIBANK | 1009 | 
        | NEQUI |  1507 | 
        | NU | 1809 | 
        | BANCO DE BOGOTA | 1001 |
        | BANCO GNB SUDAMERIS | 1012 | 
        | BANCO ITAU | 1006 | 
        | COLTEFINANCIERA | 1370 |
        | CONFIAR COOPERATIVA FINANCIERA | 1292 | 
        | DALE | 1097 | 
        | DAVIPLATA | 1551 | 
        | DING | 1802 |
        | BAN100 | 1558 | 
        | BANCO FINANDINA S.A. BIC | 1063 | 
        | CFA COOPERATIVA FINANCIERA | 1283 | 
        | RAPPIPAY | 1811 |
        | SCOTIABANK COLPATRIA | 1019 | 
        | BANCO BBVA COLOMBIA S.A. | 1013 |
        | BANCOLOMBIA | 1007 |
        | BANCOOMEVA S.A. | 1061 
        | COINK SA | 1812 |

        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.
      value:
        amount: 1000
        country: CO
        currency: COP
        payment_method: pse
        merchant_order_reference: ORDER-2026-0010
        merchant_transaction_reference: TRX-2026-0010
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        fields:
          first_name: Jon
          last_name: Snow
          document_type: CC
          document_number: '123456789'
          bank_code: '1062'
          email: jonsnow@email.com
          phone: '669548354'
          address: 'Calle 123 #45-67'
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-11:
      summary: Colombia RappiPay
      description: |
        ### Channel
        Wallet

        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.
      value:
        amount: 1000
        country: CO
        currency: COP
        payment_method: rappipay
        merchant_order_reference: ORDER-2026-0011
        merchant_transaction_reference: TRX-2026-0011
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-12:
      summary: Colombia ReFacil
      description: |
        ### Channel
        Cash

        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: CO
        currency: COP
        payment_method: superpagos
        merchant_order_reference: ORDER-2026-0012
        merchant_transaction_reference: TRX-2026-0012
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-13:
      summary: Colombia Susuerte
      description: |
        ### Channel
        Cash

        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: CO
        currency: COP
        payment_method: susuerte
        merchant_order_reference: ORDER-2026-0013
        merchant_transaction_reference: TRX-2026-0013
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-14:
      summary: Colombia Western Union
      description: |
        ### Channel
        Cash

        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: CO
        currency: COP
        payment_method: wu
        merchant_order_reference: ORDER-2026-0014
        merchant_transaction_reference: TRX-2026-0014
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-15:
      summary: Ecuador Bemovil
      description: |
        Example of a pay-in transaction creation request for the Ecuador Bemovil payment method.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: EC
        currency: USD
        payment_method: bemovil
        merchant_order_reference: ORDER-2026-0015
        merchant_transaction_reference: TRX-2026-0015
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-16:
      summary: Ecuador Mi Negocio Efectivo
      description: |
        Example of a pay-in transaction creation request for the Ecuador Mi Negocio Efectivo payment method.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: EC
        currency: USD
        payment_method: minegocioefectivo
        merchant_order_reference: ORDER-2026-0016
        merchant_transaction_reference: TRX-2026-0016
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-17:
      summary: Ecuador Omniswitch
      description: |
        Example of a pay-in transaction creation request for the Ecuador Omniswitch payment method.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: EC
        currency: USD
        payment_method: omniswitch
        merchant_order_reference: ORDER-2026-0017
        merchant_transaction_reference: TRX-2026-0017
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-18:
      summary: Ecuador RapiActivo
      description: |
        Example of a pay-in transaction creation request for the Ecuador RapiActivo payment method.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: EC
        currency: USD
        payment_method: rapiactivo
        merchant_order_reference: ORDER-2026-0018
        merchant_transaction_reference: TRX-2026-0018
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-19:
      summary: Ecuador Western Union
      description: |
        Example of a pay-in transaction creation request for the Ecuador Western Union payment method.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: EC
        currency: USD
        payment_method: wu
        merchant_order_reference: ORDER-2026-0019
        merchant_transaction_reference: TRX-2026-0019
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-20:
      summary: El Salvador Banco Cuscatlán
      description: |
        Example of a pay-in transaction creation request for the El Salvador Banco Cuscatlán payment method.
      value:
        amount: 1000
        country: SV
        currency: USD
        payment_method: cuscatlan
        merchant_order_reference: ORDER-2026-0020
        merchant_transaction_reference: TRX-2026-0020
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-21:
      summary: El Salvador Puntoxpress
      description: |
        Example of a pay-in transaction creation request for the El Salvador Puntoxpress payment method.
      value:
        amount: 1000
        country: SV
        currency: USD
        payment_method: puntoxpresssv
        merchant_order_reference: ORDER-2026-0021
        merchant_transaction_reference: TRX-2026-0021
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-22:
      summary: Guatemala BAM Efectivo
      description: |
        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 72 hours.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: GT
        currency: GTQ
        payment_method: bam
        merchant_order_reference: ORDER-2026-0022
        merchant_transaction_reference: TRX-2026-0022
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-23:
      summary: Guatemala BAM Transferencia
      description: |
        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 72 hours.
      value:
        amount: 1000
        country: GT
        currency: GTQ
        payment_method: bam_transferencia
        merchant_order_reference: ORDER-2026-0023
        merchant_transaction_reference: TRX-2026-0023
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-24:
      summary: Guatemala Banco Industrial
      description: |
        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 72 hours.
      value:
        amount: 1000
        country: GT
        currency: GTQ
        payment_method: bi
        merchant_order_reference: ORDER-2026-0024
        merchant_transaction_reference: TRX-2026-0024
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-25:
      summary: Guatemala Akisi Pronet
      description: |
        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 72 hours.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: GT
        currency: GTQ
        payment_method: pronet
        merchant_order_reference: ORDER-2026-0025
        merchant_transaction_reference: TRX-2026-0025
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-26:
      summary: Mexico Pay With Cash
      description: |
        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 168 hours.

        ### Payment Instructions
        Save the reference number. After locating a nearby branch, tell the cashier that you want to pay with a PayCash reference and share the provided reference number. Make sure to obtain the payment confirmation receipt. You have 7 days to complete your payment.
      value:
        amount: 1000
        country: MX
        currency: MXN
        payment_method: paycash
        merchant_order_reference: ORDER-2026-0026
        merchant_transaction_reference: TRX-2026-0026
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-27:
      summary: Mexico SPEI
      description: |
        ### Optional Fields

        <table>
          <tr>
            <th>Field</th>
            <th>Description</th>
          </tr>
          <tr>
            <td>first_name</td>
            <td>First name</td>
          </tr>
          <tr>
            <td>last_name</td>
            <td>Last name</td>
          </tr>
          <tr>
            <td>document_number</td>
            <td>RFC (Registro Federal de Contibuyentes) or CURP (Clave Única de Registro de Población)</td>
          </tr>
        </table>

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 72 hours.

        ### Payment Instructions
        STEPS

        1. Make the payment through your mobile banking app or online banking. You have a maximum period of 72 hours to complete your transaction. Some banks may require time to register a new account, so we recommend making the payment now. Note that the destination bank name may vary depending on the bank from which you are making the transfer.
        2. Log in to your online banking.
        3. Select the option to add a new account.
        4. Select <strong>STP - Sistema de Transferencias y Pago</strong> as the receiving bank.
        5. Enter the 18-digit CLABE we provided in the response of the Create Pay-In endpoint.
        6. Wait for the bank to validate the account.
        7. Enter the amount to be paid.
        8. In the concept field, enter your order number.
        9. Confirm the payment.
        10. You have 72 hours to complete your payment.
      value:
        amount: 1000
        country: MX
        currency: MXN
        payment_method: spei
        merchant_order_reference: ORDER-2026-0027
        merchant_transaction_reference: TRX-2026-0027
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        fields:
          first_name: Juan
          last_name: Pérez
          document_number: '12234514789'
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-28:
      summary: Peru BBVA
      description: |
        ### QR Code
        The value encoded in the QR Code is an EMV Merchant-Presented QR Code. The actual QR Code payload starts with a Payload Format Indicator tag of 00 with a length of 02 and a value which is usually 01. Therefore the QR Code payload begins with 000201 and any prefixes such as 'generate:' should be stripped before QR Code creation.

        ### Simulator
        By default requests in the Sandbox environment are processed by a Provider simulator, to enable Provider Sandbox processing set DisablePartnerMock header to true.
        This header only applies to the Sandbox environment.
      value:
        amount: 1000
        country: PE
        currency: PEN
        payment_method: bbva
        merchant_order_reference: ORDER-2026-0028
        merchant_transaction_reference: TRX-2026-0028
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-29:
      summary: Peru BCP
      description: |
        ### Channel
        Bank Transfer

        ### Recommended Payment Instructions

        1. In your bank's app or website, select Pay a Service.
        2. Choose Search by company name and select PAYVALIDA.
        3. Enter the reference number and confirm the amount.
        4. Complete the transaction.
      value:
        amount: 1000
        country: PE
        currency: PEN
        payment_method: bcp
        merchant_order_reference: ORDER-2026-0028
        merchant_transaction_reference: TRX-2026-0028
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-30:
      summary: Peru BCP Efectivo
      description: |
        Example of a pay-in transaction creation request for the Peru BCP Efectivo payment method.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: PE
        currency: PEN
        payment_method: bcp_efectivo
        merchant_order_reference: ORDER-2026-0028
        merchant_transaction_reference: TRX-2026-0028
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-31:
      summary: Peru Cell Power
      description: |
        Example of a pay-in transaction creation request for the Peru Cell Power payment method.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: PE
        currency: PEN
        payment_method: cellpower
        merchant_order_reference: ORDER-2026-0029
        merchant_transaction_reference: TRX-2026-0029
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-32:
      summary: Peru KasNet
      description: |
        Example of a pay-in transaction creation request for the Peru KasNet payment method.

        ### Payment Instructions
        To complete your payment, use the following reference and agreement code.
      value:
        amount: 1000
        country: PE
        currency: PEN
        payment_method: globokas
        merchant_order_reference: ORDER-2026-0030
        merchant_transaction_reference: TRX-2026-0030
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-33:
      summary: Peru QR Interoperable
      description: |
        ### QR Code
        The value encoded in the QR Code is an EMV Merchant-Presented QR Code. The actual QR Code payload starts with a Payload Format Indicator tag of 00 with a length of 02 and a value which is usually 01. Therefore the QR Code payload begins with 000201 and any prefixes such as 'generate:' should be stripped before QR Code creation.
      value:
        amount: 1000
        country: PE
        currency: PEN
        payment_method: ligoqrinterbilletera
        merchant_order_reference: ORDER-2026-0031
        merchant_transaction_reference: TRX-2026-0031
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-34:
      summary: Peru Plin
      description: |
        ### QR Code
        The value encoded in the QR Code is an EMV Merchant-Presented QR Code. The actual QR Code payload starts with a Payload Format Indicator tag of 00 with a length of 02 and a value which is usually 01. Therefore the QR Code payload begins with 000201 and any prefixes such as 'generate:' should be stripped before QR Code creation.
      value:
        amount: 1000
        country: PE
        currency: PEN
        payment_method: plin
        merchant_order_reference: ORDER-2026-0032
        merchant_transaction_reference: TRX-2026-0032
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-35:
      summary: Peru Yape
      description: |
        ### Optional Fields

        | Field | Description | Validation |  
        | --- | --- | --- |
        | phone | Phone number |  |
        | otp | One Time Password  |  |

        ### QR Code
        The value encoded in the QR Code is an EMV Merchant-Presented QR Code. The actual QR Code payload starts with a Payload Format Indicator tag of 00 with a length of 02 and a value which is usually 01. Therefore the QR Code payload begins with 000201 and any prefixes such as 'generate:' should be stripped before QR Code creation.
      value:
        amount: 1000
        country: PE
        currency: PEN
        payment_method: yape
        merchant_order_reference: ORDER-2026-0033
        merchant_transaction_reference: TRX-2026-0033
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        fields:
          phone: '1234567890'
          otp: '1234'
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-36:
      summary: Ecuador Bank Transfer
      description: |
        ### Channel
        Bank Transfer

        ### Supported Banks

        This payment method includes the following banks:

        - Banco Guayaquil

        ### Required Fields

        | Field | Description | Validation |
        | --- | --- | --- |
        | first_name | Customer first name | Length >= 2 <= 50, RegEx `^\p{L}*(?:[ '-]\p{L}+)*$` |
        | last_name | Customer last name | Length >= 2 <= 50, RegEx `^\p{L}*(?:[ '-]\p{L}+)*$` |
        | email | Customer email | Length >= 5 <= 50, RegEx `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` |
        | document_type | Document type | See document types listed below |
        | document_number | Document number | See document types listed below |

        ### Document types

        | Document Type | Description | document_number validation |
        | --- | --- | --- |
        | `CI` | Cedula de Identidad | 10 digits including last digit checksum |
        | `DL` | Driver's License | 10 digits including last digit checksum |
        | `PP` | Passport | Must be a valid Ecuadorian passport |

        ### Expected Behavior

        The `external_link` returned in the API response must be used to redirect the customer to the payment provider’s hosted checkout page.
        This URL does not correspond to a specific bank. Instead, the provider will display the available bank options and guide the customer through the payment process.

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.
      value:
        amount: 1000
        country: EC
        currency: USD
        payment_method: bank_transfer
        merchant_order_reference: ORDER-2026-0001
        merchant_transaction_reference: TRX-2026-0001
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        fields:
          first_name: John
          last_name: Doe
          email: mail@mail.com
          document_type: CI
          document_number: 1710034065
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-37:
      summary: Ecuador Banco Guayaquil
      description: |
        <div style="background-color: rgba(148, 163, 184, 0.12); border: 1px solid rgba(148, 163, 184, 0.35); border-left: 5px solid #94a3b8; border-radius: 6px; padding: 12px 16px; margin: 16px 0;">
          <strong>⚠️ Prior authorization required:</strong>
          To enable this payment method, please contact your account manager before proceeding with the integration.
        </div>

        ### Channel
        Bank Transfer

        ### Required Fields
        | Field | Description | Validation |
        | --- | --- | --- |
        | first_name | Customer first name | Length >= 2 <= 50, RegEx `^\p{L}*(?:[ '-]\p{L}+)*$` |
        | last_name | Customer last name | Length >= 2 <= 50, RegEx `^\p{L}*(?:[ '-]\p{L}+)*$` |
        | email | Customer email | Length >= 5 <= 50, RegEx `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` |
        | phone | Customer phone number |Length = 10 or 12, RegEx `^(?:09\d{8}\|5939\d{8})$` |
        | document_type | Document type | See document types listed below |
        | document_number | Document number | See document types listed below |

        ### Document types

        | Document Type | Description | document_number validation |
        | --- | --- | --- |
        | `CI` | Cedula de Identidad | 10 digits including last digit checksum |
        | `RUC` | Registro Único de Contribuyentes | 13 numeric digits with check digit validation based on taxpayer type |
        | `PP` | Passport | Must be a valid Ecuadorian passport |

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 60 hours.

        ### Payment Instructions
        Steps to complete your payment.

        1. Access your <strong>Virtual Banking or mobile app</strong>, then sign in to the Personal section with your username and password. After that, select the <strong>Service Payments</strong> option.
        2. In the <strong>Corporate Collections</strong> section, search for <strong>Monnet Pagos</strong> and provide the payment code <strong>11230573</strong>.
        3. Select your preferred payment method and make sure to verify the amount to be paid.
        4. Enter the corresponding security code, confirm the payment, and <strong>that's it! The transaction will be processed automatically</strong>.
      value:
        amount: 1000
        country: EC
        currency: USD
        payment_method: banco_guayaquil
        merchant_order_reference: ORDER-2026-0001
        merchant_transaction_reference: TRX-2026-0001
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        fields:
          first_name: John
          last_name: Doe
          email: mail@mail.com
          phone: 991234567
          document_type: CI
          document_number: 1710034065
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-38:
      summary: Ecuador Deuna
      description: |
        <div style="background-color: rgba(148, 163, 184, 0.12); border: 1px solid rgba(148, 163, 184, 0.35); border-left: 5px solid #94a3b8; border-radius: 6px; padding: 12px 16px; margin: 16px 0;">
          <strong>⚠️ Prior authorization required:</strong>
          To enable this payment method, please contact your account manager before proceeding with the integration.
        </div>

        ### QR Code
        The value encoded in the QR Code is a URL, the same URL contained in the reference_url field.
      value:
        amount: 1000
        country: EC
        currency: USD
        payment_method: deuna
        merchant_order_reference: ORDER-2026-0001
        merchant_transaction_reference: TRX-2026-0001
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    request-39:
      summary: Chile Khipu
      description: |
        ### Required Fields
        | Field | Description | Validation |  
        | --- | ---  | --- |
        | bank_code | Bank identifier code | See Bank Identifier Codes below |

        ### Bank Identifier Code

        | Name | Code | Minimum amount |
        | --- | --- | --- |
        | Banco de Chile | banco_chile | 200 CLP |
        | Banco Estado | banco_estado | 200 CLP |
        | Banco BCI | bci | 200 CLP |
        | Banco Falabella | falabella | 200 CLP |
        | Banco Itaú | itau | 200 CLP |
        | Banco Santander | santander | 1000 CLP |
        | Banco Security | security | 200 CLP |
        | Scotiabank | scotiabank | 200 CLP |
        | Banco BICE | banco_bice | 200 CLP |
        | Banco Consorcio | banco_consorcio | 2000 CLP |
        | Banco Internacional | banco_internacional | 200 CLP |
        | Banco Ripley | banco_ripley | 200 CLP |
        | Coopeuch | coopeuch | 1500 CLP |
        | Prepago Los Héroes | prepago_los_heroes | 1000 CLP |


        ### Amount
        CLP has no minor currency units, supplied amounts must be an integer amount with no decimal places

        **Valid:**
        3724
        193457345

        **Invalid:**
        3724.00
        3724.50

        ### Payment Flows

        The Pay-In response provides three distinct URLs:

        - **Payment URL**: A unified link that allows the end user to choose between manual transfer and simplified transfer.
        - **Manual Transfer URL**: A direct link that enables the user to complete the payment manually through their bank.
        - **Simplified Transfer URL**: A direct link that redirects the user to Khipu’s checkout for a simplified payment experience.

        ### Expiry
        Initiated transactions that are not completed, transition to an Expired state after 72 hours.


        ### Simulator
        By default requests in the Sandbox environment are processed by a Provider simulator, to enable Provider Sandbox processing set DisablePartnerMock header to true.
        This header only applies to the Sandbox environment.
      value:
        amount: 1000
        country: CL
        currency: CLP
        payment_method: khipu
        merchant_order_reference: ORDER-2026-0001
        merchant_transaction_reference: TRX-2026-0001
        merchant_customer_id: customer@email.com
        customer_ip: 120.29.48.92
        fields:
          bank_name: bci
        return_urls:
          success_url: https://merchant.com/payment-success
          failure_url: https://merchant.com/payment-failure
          cancel_url: https://merchant.com/payment-cancelled
    response:
      summary: Argentina CVU
      description: Example of a pay-in transaction creation response for the Argentina CVU payment method.
      value:
        transaction_id: 20260205-1127-4678-8883-5e4868d33e4e
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: WDCMRMNPBE4CG
          bank_account: 50053763000179
    response-2:
      summary: Brazil PIX
      description: Example of a pay-in transaction creation response for the Brazil PIX payment method.
      value:
        transaction_id: 20260205-1127-4678-8883-5e4868d33e4e
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          qr_code_content: iVBORw0KGgoAAAANSUhE...giuGGL4IYtghu2/gXRjZ6j+5wP3QAAAABJRU5ErkJggg==
          reference: 00020101021226880014br.gov.bcb.pix2566qrcode-h.fitbank.com.br/QR/cob/9BA5CDA69AB1CBAA0EE61D1F2910AB030FD5204000053039865802BR5925ORKESTRA TECNOLOGIA EM PA6014Belo Horizonte61083031002062070503***63043A5B
    response-3:
      summary: Chile Bank Transfer
      description: Example of a pay-in transaction creation response for the Chile Bank Transfer payment method.
      value:
        transaction_id: 20260205-1408-46c1-9b1d-e4d600bfa6eb
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://pay.com/v2/pay/20260205-1408-46c1-9b1d-e4d600bfa6eb
    response-4:
      summary: Colombia Dale
      description: Example of a pay-in transaction creation response for the Colombia Dale payment method.
      value:
        transaction_id: 20260205-1416-43fb-8225-0228a9f2d671
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://pay.com/v2/pay/20260205-1416-43fb-8225-0228a9f2d671
    response-5:
      summary: Colombia Daviplata
      description: Example of a pay-in transaction creation response for the Colombia Daviplata payment method.
      value:
        transaction_id: 20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://pay.com/v2/pay/20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
    response-6:
      summary: Colombia Efecty
      description: Example of a pay-in transaction creation response for the Colombia Efecty payment method.
      value:
        transaction_id: 20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90911734498
          agreement_code: '110342'
    response-7:
      summary: Colombia Gana
      description: Example of a pay-in transaction creation response for the Colombia Gana payment method.
      value:
        transaction_id: 20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90944599482
          agreement_code: '110342'
    response-8:
      summary: Colombia Movii
      description: Example of a pay-in transaction creation response for the Colombia Movii payment method.
      value:
        transaction_id: 20260205-1606-4c98-9954-07972623401d
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://pay.com/v2/pay/20260205-1606-4c98-9954-07972623401d
    response-9:
      summary: Colombia Nequi
      description: Example of a pay-in transaction creation response for the Colombia Nequi payment method.
      value:
        transaction_id: 20260205-1606-4c98-9954-07972623401d
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://pay.com/v2/pay/20260205-1606-4c98-9954-07972623401d
    response-10:
      summary: Colombia PSE
      description: Example of a pay-in transaction creation response for the Colombia PSE payment method.
      value:
        transaction_id: 20260205-1606-4c98-9954-07972623401d
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://pay.com/v2/pay/20260205-1606-4c98-9954-07972623401d
    response-11:
      summary: Colombia RappiPay
      description: Example of a pay-in transaction creation response for the Colombia RappiPay payment method.
      value:
        transaction_id: 20260205-1606-4c98-9954-07972623401d
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://pay.com/v2/pay/20260205-1606-4c98-9954-07972623401d
    response-12:
      summary: Colombia ReFacil
      description: Example of a pay-in transaction creation response for the Colombia ReFacil payment method.
      value:
        transaction_id: 20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90960585992
          agreement_code: '110342'
    response-13:
      summary: Colombia Susuerte
      description: Example of a pay-in transaction creation response for the Colombia Susuerte payment method.
      value:
        transaction_id: 20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90980617479
          agreement_code: '110342'
    response-14:
      summary: Colombia Western Union
      description: Example of a pay-in transaction creation response for the Colombia Western Union payment method.
      value:
        transaction_id: 20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90917276820
          agreement_code: '110342'
    response-15:
      summary: Ecuador Bemovil
      description: Example of a pay-in transaction creation response for the Ecuador Bemovil payment method.
      value:
        transaction_id: 20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90978443128
          agreement_code: '110342'
    response-16:
      summary: Ecuador Mi Negocio Efectivo
      description: Example of a pay-in transaction creation response for the Ecuador Mi Negocio Efectivo payment method.
      value:
        transaction_id: 20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90951244842
          agreement_code: '110342'
    response-17:
      summary: Ecuador Omniswitch
      description: Example of a pay-in transaction creation response for the Ecuador Omniswitch payment method.
      value:
        transaction_id: 20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90951244842
          agreement_code: '110342'
    response-18:
      summary: Ecuador RapiActivo
      description: Example of a pay-in transaction creation response for the Ecuador RapiActivo payment method.
      value:
        transaction_id: 20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90951244842
          agreement_code: '110342'
    response-19:
      summary: Ecuador Western Union
      description: Example of a pay-in transaction creation response for the Ecuador Western Union payment method.
      value:
        transaction_id: 20260205-1419-4c8b-8c1d-7e5a9c3f0c3a
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90951244842
          agreement_code: '110342'
    response-20:
      summary: El Salvador Banco Cuscatlán
      description: Example of a pay-in transaction creation response for the El Salvador Banco Cuscatlán payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://pay.com/v2/pay/20260209-0905-441d-bbad-09b055bb109f
    response-21:
      summary: El Salvador Puntoxpress
      description: Example of a pay-in transaction creation response for the El Salvador Puntoxpress payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90951244842
          agreement_code: '110342'
    response-22:
      summary: Guatemala BAM Efectivo
      description: Example of a pay-in transaction creation response for the Guatemala BAM Efectivo payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90951244842
          agreement_code: '110342'
    response-23:
      summary: Guatemala BAM Transferencia
      description: Example of a pay-in transaction creation response for the Guatemala BAM Transferencia payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://pay.com/v2/pay/20260209-0905-441d-bbad-09b055bb109f
    response-24:
      summary: Guatemala Banco Industrial
      description: Example of a pay-in transaction creation response for the Guatemala Banco Industrial payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://pay.com/v2/pay/20260209-0905-441d-bbad-09b055bb109f
    response-25:
      summary: Guatemala Akisi Pronet
      description: Example of a pay-in transaction creation response for the Guatemala Akisi Pronet payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90951244842
          agreement_code: '110342'
    response-26:
      summary: Mexico Pay With Cash
      description: Example of a pay-in transaction creation response for the Mexico Pay With Cash payment method.
      value:
        transaction_id: 20260209-0920-4e80-9bcf-49f6503dd1ca
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://www.paycashglobal.com/formato.php?referencia=1441332600019&interno=1
    response-27:
      summary: Mexico SPEI
      description: Example of a pay-in transaction creation response for the Mexico SPEI payment method.
      value:
        transaction_id: 20260209-0920-4e80-9bcf-49f6503dd1ca
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          amount: 1000
          bank_account: '646180554000010079'
          beneficiary: OYSTER_LOAN
          reference: H59PUBPV
    response-28:
      summary: Peru BBVA
      description: Example of a pay-in transaction creation response for the Peru BBVA payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          qr_code_content: 'generate:0002010102122637000280010390302202602090921197374686952044829530360454061000005802PE5912DEMO UMQRNdpSojGNBwPiV0Punz2o=90880005GLOSA0175Pago de referencia con QR 90992298531 #8f1ca3c6-e80c-45d2-8578-a39ddc00b1b291230007FECVCTO01082026021092140005QUOTA0101163042A18'
    response-29:
      summary: Peru BCP
      description: Example of a pay-in transaction creation response for the Peru BCP payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90938630601
    response-30:
      summary: Peru BCP Efectivo
      description: Example of a pay-in transaction creation response for the Peru BCP Efectivo payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90951244842
          agreement_code: '110342'
    response-31:
      summary: Peru Cell Power
      description: Example of a pay-in transaction creation response for the Peru Cell Power payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 90951244842
          agreement_code: '110342'
    response-32:
      summary: Peru QR Interoperable
      description: Example of a pay-in transaction creation response for the Peru QR Interoperable payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          qr_code_content: 'generate:0002010102122637000280010390302202602090921197374686952044829530360454061000005802PE5912DEMO UMQRNdpSojGNBwPiV0Punz2o=90880005GLOSA0175Pago de referencia con QR 90992298531 #8f1ca3c6-e80c-45d2-8578-a39ddc00b1b291230007FECVCTO01082026021092140005QUOTA0101163042A18'
    response-33:
      summary: Peru Plin
      description: Example of a pay-in transaction creation response for the Peru Plin payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          qr_code_content: 'generate:0002010102122637000280010390302202602090921197374686952044829530360454061000005802PE5912DEMO UMQRNdpSojGNBwPiV0Punz2o=90880005GLOSA0175Pago de referencia con QR 90992298531 #8f1ca3c6-e80c-45d2-8578-a39ddc00b1b291230007FECVCTO01082026021092140005QUOTA0101163042A18'
    response-34:
      summary: Peru Yape
      description: Example of a pay-in transaction creation response for the Peru Yape payment method.
      value:
        transaction_id: 20260209-0905-441d-bbad-09b055bb109f
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          qr_code_content: 'generate:0002010102122637000280010390302202602090921197374686952044829530360454061000005802PE5912DEMO UMQRNdpSojGNBwPiV0Punz2o=90880005GLOSA0175Pago de referencia con QR 90992298531 #8f1ca3c6-e80c-45d2-8578-a39ddc00b1b291230007FECVCTO01082026021092140005QUOTA0101163042A18'
    response-35:
      summary: Ecuador Bank Transfer
      description: Example of a pay-in transaction creation response for the Ecuador Bank Transfer payment method.
      value:
        transaction_id: 20260205-1127-4678-8883-5e4868d33e4e
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference_url: https://pay.com/v2/pay/20260205-1606-4c98-9954-07972623401d
    response-36:
      summary: Ecuador Banco Guayaquil
      description: Example of a pay-in transaction creation response for the Ecuador Banco Guayaquil payment method.
      value:
        transaction_id: 20260205-1127-4678-8883-5e4868d33e4e
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          reference: 11230573
    response-37:
      summary: Ecuador Deuna
      description: Example of a pay-in transaction creation response for the Ecuador Deuna payment method.
      value:
        transaction_id: 20260205-1127-4678-8883-5e4868d33e4e
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          qr_code_content: data:image/png;base64,iVBORw...wH4qAAAAAElFTkSuQmC
          reference_url: https://pagar.deuna.app/H92p/merchant?id=MD1HRSTT6176UH1
    response-38:
      summary: Chile Khipu
      description: Example of a pay-in transaction creation response for the Chile Khipu payment method.
      value:
        transaction_id: 20260205-1127-4678-8883-5e4868d33e4e
        payment_method_reference: 129930
        expires_at: '2026-06-09T14:13:05.143073869Z'
        instructions:
          payment_method_reference: azkcl5oof0ie
          reference_url: https://khipu.com/payment/manual/75msm1ddc66a
    request-40:
      summary: Argentina CVU
      description: |
        ### Required Fields

        <table>
          <tr>
            <th>Field</th>
            <th>Description</th>
            <th>Validation</th>
          </tr>
          <tr>
            <td>first_name</td>
            <td>First name</td>
            <td>Length &gt;= 2 &lt;= 50, RegEx <code>^\p{L}*(?:[ '-]\p{L}+)*$</code></td>
          </tr>
          <tr>
            <td>last_name</td>
            <td>Last name</td>
            <td>Length &gt;= 2 &lt;= 50, RegEx <code>^\p{L}*(?:[ '-]\p{L}+)*$</code></td>
          </tr>
          <tr>
            <td>document_number</td>
            <td>CUIL (Código Único de Identificación Laboral)</td>
            <td>RegEx <code>^(20|23|24|25|26|27|30|33|34)(-?\\d{8}-?\\d|\\d{9})$</code> Must be valid CUIL</td>
          </tr>
          <tr>
            <td>account_number</td>
            <td>CVU (Clave Virtual Uniforme)</td>
            <td>Length &gt;= 22 &lt;= 22, RegEx <code>^\d+$</code> Must be valid CVU</td>
        </table>
      value:
        country: AR
        currency: ARS
        payment_method: bank_transfer
        merchant_transaction_reference: TRX-2026-0026
        merchant_order_reference: ORDER-2026-0001
        merchant_customer_id: customer@mail.com
        customer_ip: 120.29.48.92
        amount: 125.5
        fields:
          first_name: Rafael
          last_name: Beaty
          document_number: 20-08490848-8
          account_number: 2.850590940090418e+21
    request-41:
      summary: Brazil PIX
      description: |
        ### Required Fields

        | Field | Description | Validation |
        | --- | --- | --- |
        | name | Full name |  |
        | person_type | Person type | From options: individual or company |
        | document_number | CPF number | RegEx <code>^(\\d{3}\\.?\\d{3}\\.?\\d{3}-?\\d{2}|\\d{11})$</code> Must be valid CPF |
        | document_type | Identification type | From options: CPF |
        | account_number | PIX key | Must be valid PIX key |
      value:
        country: BR
        currency: BRL
        payment_method: pix
        merchant_transaction_reference: TRX-2026-0026
        merchant_order_reference: ORDER-2026-0001
        merchant_customer_id: customer@mail.com
        customer_ip: 120.29.48.92
        amount: 125.5
        fields:
          name: Rafael Beaty
          person_type: individual
          document_number: 123.456.789-09
          document_type: CPF
          account_number: '43000000000'
    request-42:
      summary: Chile Bank Transfer
      description: |
        ### Required Fields

        | Field | Description | Validation |
        | --- | --- | --- |
        | name | Full name |  |
        | document_number | RUT number | Length >= 8 <= 12, RegEx <code>^(\\d{1,2}[.,\\s]*\\d{3}[.,\\s]*\\d{3}[.,\\s]*-[0-9kK]|\\d{7,8}-?[0-9kK])$</code> Must be valid RUT |
        | email | Email address | Length >= 5 <= 50, RegEx <code>^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$</code> Must be a valid email address |
        | account_number | Account number | Must be valid account number |
        | bank_code | Bank identifier code | Must be one of the supported bank codes |

        ### Supported bank codes
        | Name | Code | Type |
        | --- | --- | --- |
        | Banco Estado | cl_estado | Bank |
        | Banco Santander | cl_santander | Bank |
        | Banco de Chile/Edwards | cl_bch | Bank |
        | BCI | cl_bci | Bank |
        | Banco Itaú | cl_itau | Bank |
        | Scotiabank | cl_scotiabank | Bank |
        | Banco Falabella | cl_falabella | Bank |
        | Banco Internacional | cl_banco_internacional | Bank |
        | Banco BICE | cl_banco_bice | Bank |
        | Banco Security | cl_banco_security | Bank |
        | Banco Ripley | cl_banco_ripley | Bank |
        | Banco Consorcio | cl_banco_consorcio | Bank |
        | Coopeuch | cl_coopeuch |Financial Institution |
        | Global 66 | cl_global_66 | Fintech|
        | MercadoPago | cl_mercado_pago | Wallet |
      value:
        country: CL
        currency: CLP
        payment_method: bank_transfer
        merchant_transaction_reference: TRX-2026-0026
        merchant_order_reference: ORDER-2026-0001
        merchant_customer_id: customer@mail.com
        customer_ip: 120.29.48.92
        amount: 125.5
        fields:
          name: Rafael Beaty
          document_number: 25,178,162-1
          email: email@email.com
          account_number: '1234567890'
          bank_code: cl_scotiabank
    request-43:
      summary: Colombia Bank Transfer
      description: |
        ### Required Fields

        | Field | Description | Validation |
        | --- | --- | --- |
        | first_name | First name |  |
        | last_name | Last name |  |
        | document_type | Identification document type | See document types listed below |
        | document_number | Identification document number | See document types listed below |
        | bank_name | Bank name | See supported bank names below |
        | account_type | Account type | From options: Ahorro or Corriente |
        | account_number | Account number |  |
        | email | Email address | Length >= 5 <= 50, RegEx <code>^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$</code> |
        | phone | Phone number | RegEx <code>^\d+$</code> |
        | address | Full address |  |

        ### Document types

        | Name | Description | Validation |
        | --- | --- | --- |
        | Cédula de Ciudadanía | CC | Length >= 6 <= 10, RegEx <code>^\d+$</code> |
        | Cédula de Extranjería | CE | Length >= 6 <= 10, RegEx <code>^[a-zA-Z0-9]+$</code> |
        | Pasaporte | PP | Length >= 7 <= 12, RegEx <code>^[a-zA-Z0-9]+$</code> |
        | Tarjeta de Identificación | TI | Length >= 6 <= 15, RegEx <code>^[a-zA-Z0-9]+$</code> |
        | Número de Identificación Tributaria | NI | Length >= 6 <= 15, RegEx <code>^[a-zA-Z0-9]+$</code> |

        ### Bank Identifier Names

        <details>
        <summary>Bank Identifier Names</summary>

        | Name | Type |
        | ---- | ---- |
        | AV VILLAS | Bank |
        | BANCAMIA | Bank |
        | BANCO AGRARIO | Bank |
        | BANCO BTG PACTUAL | Bank |
        | BANCO CAJA SOCIAL | Bank |
        | BANCO DE BOGOTA | Bank |
        | BANCO DE COMERCIO EXTERIOR | Bank |
        | BANCO DE LA REPUBLICA | Bank |
        | BANCO DE OCCIDENTE | Bank |
        | BANCO FALABELLA | Bank |
        | BANCO FINANDINA | Bank |
        | BANCO MUNDO MUJER | Bank |
        | BANCO PICHINCHA | Bank |
        | BANCO POPULAR | Bank |
        | BANCO SANTANDER DE NEGOCIOS | Bank |
        | BANCO SERFINANZA | Bank |
        | BANCO W | Bank |
        | BANCOLDEX | Bank |
        | BANCOLOMBIA | Bank |
        | BANCOOMEVA | Financial |
        | BBVA | Bank |
        | BNP PARIBAS COLOMBIA | Bank |
        | CITIBANK | Bank |
        | COLSUBSIDIO | Financial |
        | COLTEFINANCIERA | Financial |
        | COMPENSAR | Financial |
        | CONFIAR | Financial |
        | COOFINEP | Financial |
        | COOPERATIVA FINANCIERA DE ANTIOQUIA | Financial |
        | COOTRAFA | Financial |
        | COTRAFA COOPERATIVA FINANCIERA | Financial |
        | CREDICORP CAPITAL COLOMBIA | Financial |
        | DAVIPLATA | Wallet |
        | DAVIVIENDA | Bank |
        | FEDECAJAS | Financial |
        | GIROS Y FINANZAS CFC | Financial |
        | IRIS | Fintech |
        | ITAU | Bank |
        | JURISCOOP | Financial |
        | LULO BANK | Bank |
        | MIBANCO | Financial |
        | MOVII | Wallet |
        | NEQUI | Wallet |
        | RAPPIPAY | Wallet |
        | SCOTIABANK COLPATRIA | Bank |
        | UALA | Wallet |

        </details>


        ### Amount
        While ISO 4217 defines COP as having 2 decimal places in practice these are not used.  Amounts in COP must be an integer amount with no decimal places.
      value:
        country: CO
        currency: COP
        payment_method: bank_transfer
        merchant_transaction_reference: TRX-2026-0026
        merchant_order_reference: ORDER-2026-0001
        merchant_customer_id: customer@mail.com
        customer_ip: 120.29.48.92
        amount: 125.5
        fields:
          first_name: Juan
          last_name: Pérez
          document_type: CC
          document_number: '12345678'
          bank_name: BANCOLOMBIA
          account_type: Ahorro
          account_number: '1234567890'
          email: juan.perez@email.com
          phone: '3001234567'
          address: Calle 123
    request-44:
      summary: Ecuador Bank Transfer
      description: |
        ### Required Fields

        | Field | Description | Validation |
        | --- | --- | --- |
        | first_name | Customer first name | Length >= 2 <= 50, RegEx `^\p{L}*(?:[ '-]\p{L}+)*$` |
        | last_name | Customer last name | Length >= 2 <= 50, RegEx `^\p{L}*(?:[ '-]\p{L}+)*$` |
        | document_type | Document type | See document types listed below |
        | document_number | Document number | See document types listed below |
        | `bank_code` | Beneficiary bank | Must be one of the payout bank codes listed below |
        | `account_type` | Beneficiary account type | Required. Allowed values: `Ahorro`, `Corriente` |
        | `account_number` | Beneficiary account number | Required. Length >= 10 <= 20, RegEx `^\d+$` |

        ### Document types

        | Document Type | Description | document_number validation |
        | --- | --- | --- |
        | `CI` | Cedula de Identidad | 10 digits including last digit checksum |
        | `PP` | Passport | Must be a valid Ecuadorian passport |

        ### Bank Identifier Code

        | Name | Code | Type |
        | --- | --- | --- |
        | BANCO PICHINCHA | `banco_pichincha` | Bank |
        | BANCO DE GUAYAQUIL S.A | `banco_de_guayaquil` | Bank |
        | BANCO CITY BANK | `banco_city_bank` | Bank |
        | BANCO MACHALA | `banco_machala` | Bank |
        | BANCO DELBANK S.A. | `banco_delbank` | Bank |
        | BANCO DE LOJA | `banco_de_loja` | Bank |
        | BANCO DEL PACIFICO | `banco_del_pacifico` | Bank |
        | BANCO INTERNACIONAL | `banco_internacional` | Bank |
        | BANCO AMAZONAS | `banco_amazonas` | Bank |
        | BANCO DEL AUSTRO | `banco_del_austro` | Bank |
        | BANCO DE LA PRODUCCION | `banco_de_la_produccion` | Bank |
        | BANCO BOLIVARIANO | `banco_bolivariano` | Bank |
        | BANCO COMERCIAL DE MANABI | `banco_comercial_de_manabi` | Bank |
        | BANCO GENERAL RUMINAHUI | `banco_general_ruminahui` | Bank |
        | BANCO DEL LITORAL S.A. | `banco_del_litoral` | Bank |
        | BANCO SOLIDARIO | `banco_solidario` | Bank |
        | BANCO PROCREDIT S.A. | `banco_procredit` | Bank |
        | BANCO CAPITAL S.A. | `banco_capital` | Bank |
        | FINANCIERA - FINANCOOP | `financiera_financoop` | Financial |
        | BANCO ECUATORIANO DE LA VIVIENDA | `banco_ecuatoriano_de_la_vivienda` | Bank |
        | CACPECO LTDA (COAC) | `cacpeco` | Financial |
        | COOP. DE LA PEQUENA EMPRESA DE PASTAZA | `coop_pequena_empresa_de_pastaza` | Financial |
        | COOP. AHORRO Y CREDITO 23 DE JULIO | `coop_ahorro_y_credito_23_de_julio` | Financial |
        | COOP. AHORRO Y CREDITO 29 DE OCTUBRE | `coop_ahorro_y_credito_29_de_octubre` | Financial |
        | COOP. AHORRO Y CREDITO ANDALUCIA | `coop_ahorro_y_credito_andalucia` | Financial |
        | COOP. AHORRO Y CREDITO COTOCOLLAO | `coop_ahorro_y_credito_cotocollao` | Financial |
        | BANCO DESARROLLO DE LOS PUEBLOS S.A. | `banco_desarrollo_de_los_pueblos` | Bank |
        | COOP. AHORRO Y CREDITO EL SAGRARIO | `coop_ahorro_y_credito_el_sagrario` | Financial |
        | COOP. AHORRO Y CREDITO GUARANDA LTDA. | `coop_ahorro_y_credito_guaranda` | Financial |
        | COOP. JUVENTUD ECUATORIANA PROGRESISTA LTDA. (COOP. JEP ) | `coop_juventud_ecuatoriana_progresista` |
        | BANCO COOPNACIONAL S.A. | `banco_coopnacional` | Bank |
        | COOP. AHORRO Y CREDITO OSCUS | `coop_ahorro_y_credito_oscus` | Financial |
        | COOP. PABLO MUNOZ VEGA. | `coop_pablo_munoz_vega` | Financial |
        | COO. AHORRO Y CREDITO COOPROGRESO | `coop_ahorro_y_credito_cooprogreso` | Financial |
        | COOP. AHORRO Y CREDITO RIOBAMBA | `coop_ahorro_y_credito_riobamba` | Financial |
        | CAJA DE AHORRO Y CREDITO SAN FRANCISCO | `caja_de_ahorro_y_credito_san_francisco` | Financial |
        | COOP. AHORRO Y CREDITO TULCAN | `coop_ahorro_y_credito_tulcan` | Financial |
      value:
        country: EC
        currency: USD
        payment_method: bank_transfer
        merchant_transaction_reference: TRX-2026-0026
        merchant_order_reference: ORDER-2026-0001
        merchant_customer_id: customer@mail.com
        customer_ip: 120.29.48.92
        amount: 125.5
        fields:
          first_name: Juan
          last_name: Perez
          document_type: CI
          document_number: 1710034065
          account_number: 2103456789
          bank_code: banco_pichincha
          account_type: ahorro
    request-45:
      summary: Guatemala Bank Transfer
      description: |
        ### Required Fields

        | Field | Description | Validation |
        | --- | --- | --- |
        | first_name | First name |  |
        | last_name | Last name |  |
        | document_type | Identification document type | See document types listed below |
        | document_number | Identification document number | See document types listed below |
        | bank_name | Bank name | See supported bank names below |
        | account_type | Account type | From options: Ahorro or Corriente |
        | account_number | Account number |  |
        | email | Email address | Length >= 5 <= 50, RegEx <code>^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$</code> |
        | phone | Phone number | RegEx <code>^\d+$</code> |
        | address | Full address |  |

        ### Document types

        | Name | Description | Validation |
        | --- | --- | --- |
        | Documento personal de identificación | DPI | Length >= 2 <= 10, RegEx <code>^\d+$</code> |

        ### Bank Identifier Name 

        <details> <summary>Bank Identifier Name</summary>

        | Name | Type |
        | ---- | ---- |
        | BAM | Bank |
        | BANCO AZTECA | Bank |
        | BANCO DE AMERICA CENTRAL | Bank |
        | BANCO DE ANTIGUA | Bank |
        | BANCO DE CREDITO | Bank |
        | BANCO DE DESARROLLO RURAL | Bank |
        | BANCO DE GUATEMALA | Bank |
        | BANCO DE LOS TRABAJADORES | Bank |
        | BANCO FICOHSA | Bank |
        | BANCO GYT CONTINENTAL | Bank |
        | BANCO INDUSTRIAL | Bank |
        | BANCO INMOBILIARIO | Bank |
        | BANCO INTERNACIONAL | Bank |
        | BANCO INV | Bank |
        | BANCO PROMERICA DE GUATEMALA | Bank |
        | BANCO PROMERICA | Bank |
        | CITIBANK SUCURSAL GUATEMALA | Bank |
        | CREDITO HIPOTECARIO NACIONAL | Bank |
        | VIVIBANCO | Bank |

        </details>
      value:
        country: GT
        currency: GTQ
        payment_method: bank_transfer
        merchant_transaction_reference: TRX-2026-0026
        merchant_order_reference: ORDER-2026-0001
        merchant_customer_id: customer@mail.com
        customer_ip: 120.29.48.92
        amount: 125.5
        fields:
          first_name: Eryn
          last_name: Rogahn
          document_type: DPI
          document_number: '97'
          bank_name: BANCO PROMERICA
          account_type: Ahorro
          account_number: '62475804'
          email: customers@email.com
          phone: (282) 797-0589
          address: customers address
    request-46:
      summary: Mexico SPEI
      description: |
        ### Required Fields

        | Field | Description | Validation |
        | --- | --- | --- |
        | name | Full name of the beneficiary | <= 40 characters |
        | document_number | Beneficiary identifier. RFC (Registro Federal de Contribuyentes) / CURP (Clave Única de Registro de Población) | Valid RFC / CURP |
        | email | Email address of the beneficiary | Length >= 5 <= 50, RegEx <code>^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$</code>  |
        | account_number | Account number of the beneficiary (CLABE) | Valid CLABE |
        | account_type | Beneficiary account type | Must be 40 |
        | bank_code | Destination bank institution code (e.g.: 40133), code list: https://www.banxico.org.mx/cep-scl/listaInstituciones.do | RegEx <code>^\d+$</code> |
        | payout_concept | Brief description for the transaction | |
      value:
        country: MX
        currency: MXN
        payment_method: spei
        merchant_transaction_reference: TRX-2026-0026
        merchant_order_reference: ORDER-2026-0001
        merchant_customer_id: customer@mail.com
        customer_ip: 120.29.48.92
        amount: 125.5
        fields:
          name: Eryn Rogahn
          document_number: '12234514789'
          email: customers@email.com
          account_number: '123456789012345678'
          account_type: '40'
          bank_code: '90646'
          payout_concept: payment
    request-47:
      summary: Peru Bank Transfer
      description: |
        ### Required Fields

        | Field | Description | Validation |
        | --- | --- | --- |
        | first_name | First name |  |
        | last_name | Last name |  |
        | document_type | Identification document type | See document types listed below |
        | document_number | Identification document number | See document types listed below |
        | bank_name | Bank name | See supported bank names below |
        | account_type | Account type | From options: Ahorro or Corriente |
        | account_number | Account number |  |
        | email | Email address | Length >= 5 <= 50, RegEx <code>^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$</code> |
        | phone | Phone number | RegEx <code>^\d+$</code> |
        | address | Full address |  |

        ### Document types

        | Name | Description | Validation |
        | --- | --- | --- |
        | Documento nacional de identidad | DNI | Length >= 2 <= 10, RegEx <code>^\d+$</code> |
        | Cédula de Extranjería | CE | Length >= 6 <= 10, RegEx <code>^[a-zA-Z0-9]+$</code> |

        ### Bank Identifier Name

        <details> <summary>Bank Identifier Name</summary>

        | Name | Type |
        | ---- | ---- |
        | ALFIN BANCO | Bank |
        | BANCO CENTRAL DE RESERVA DEL PERÚ | Bank |
        | BANCO DE COMERCIO | Bank |
        | BANCO DE LA NACIÓN | Bank |
        | BANCO FALABELLA | Bank |
        | BANCO GNB | Bank |
        | BANCO INTERAMERICANO DE FINANZAS | Bank |
        | BANCO PICHINCHA PE | Bank |
        | BANCO RIPLEY | Bank |
        | BANCO SANTANDER PE | Bank |
        | BANK OF CHINA | Bank |
        | BBVA CONTINENTAL | Bank |
        | BCI PE | Bank |
        | BCP | Bank |
        | CAJA LOS ANDES | Financial |
        | CAJA METROPOLITANA | Financial |
        | CITIBANK | Bank |
        | CMAC AREQUIPA | Financial |
        | CMAC CUSCO | Financial |
        | CMAC HUANCAYO | Financial |
        | CMAC ICA | Financial |
        | CMAC MAYNAS | Financial |
        | CMAC PIURA | Financial |
        | CMAC TACNA | Financial |
        | CMAC TRUJILLO | Financial |
        | COMPARTAMOS FINANCIERA S.A. | Financial |
        | COOPERATIVA ABACO | Financial |
        | CREDISCOTIA FINANCIERA S.A. | Financial |
        | DALE | Wallet |
        | EEDE TARJETAS PERUANAS | Financial |
        | FINANCIERA CONFIANZA | Financial |
        | FINANCIERA EFECTIVA | Financial |
        | FINANCIERA OH | Financial |
        | FINANCIERA QAPAQ | Financial |
        | ICBC PE | Bank |
        | INTERBANK | Bank |
        | MIBANCO | Bank |
        | PREXPE | Wallet |
        | SCOTIABANK PE | Bank |

        </details>

        #### Note for bank account number :
        For BCP bank you must use the Standard Bank Account number (13 digits for Corriente account type and 14 digits for Ahorro account type), for all other insitutions use the CCI (Código de Cuenta Interbancario) with 20 digits.
        When specifying phone transfer type the bank account number 000000 must be used.
      value:
        country: PE
        currency: PEN
        payment_method: bank_transfer
        merchant_transaction_reference: TRX-2026-0026
        merchant_order_reference: ORDER-2026-0001
        merchant_customer_id: customer@mail.com
        customer_ip: 120.29.48.92
        amount: 125.5
        fields:
          first_name: Eryn
          last_name: Rogahn
          document_type: CE
          document_number: '97'
          bank_name: CAJA METROPOLITANA
          account_type: Ahorro
          account_number: '62475804'
          email: customers@email.com
          phone: (282) 797-0589
          address: customers address
    response-39:
      summary: Generic response for all payment methods
      description: Example of a pay-out transaction creation response.
      value:
        transaction_id: 20240806-2010-4086-8342-c28f4979f834
        merchant_transaction_reference: TRX-2026-0026
        merchant_order_reference: ORDER-2026-0001
