openapi: 3.0.1
info:
  title: Overview
  description: >
    Getting started with global payouts.


    This platform is designed to help you move money to individuals and
    businesses across the globe with full transparency and ease.




    ## API Components

    To successfully send money, you will interact with:


    1.  **Payees:** Create the profiles of the people or companies you want to
    pay.

    2.  **Fees:** Calculate the cost of the transaction before you send it.

    3.  **Payouts:** Initiate the actual money transfer and track its progress.


    ---

    ## 1. Generating Client ID & Client Secret

    * Click **Generate Client Credentials**

    * A **Client ID** and **Client Secret** are generated

    * The Client Secret is displayed only once

    * The **Client ID** and **Client Secret** must be stored securely


    ## 2. Creating Payees

    A **Payee** is any person or business receiving funds. Think of this as your
    digital address book.


    * **Individual Payees:** Only require basic contact information.

    * **Business Payees:** Require a **Tax iD** and **Phone Number** to comply
    with global financial regulations.

    ---


    ## 3. Understanding Fees

    Before sending money, use the **Fees API**. This ensures there are no
    surprises for you or your recipient.

    * **Calculation:** Fees are based on the destination country, the currency,
    and the "Rail" (the technical path) the money takes.

    * **Preview:** We recommend always calling the `calculate` endpoint before
    initiating a payout to show your users the final cost.


    ---


    ## 4. Initiating Payouts

    A **Payout** is the actual movement of money. 


    **Note on Timing:** Most payouts are **Asynchronous**. When you request a
    payout, we tell you "Accepted." We then work with international banks to
    move the money. You can track the status using your **Unique Reference ID**.

    ---

    ---


    ## 5. Glossary of Terms

    If you are new to fintech, here are the terms you need to know:


    | Term | Simple Definition |

    | :--- | :--- |

    | **Payee** | The person or business receiving the money. |

    | **Payout** | The transaction of sending money from your account to a
    Payee. |

    | **Currency Code** | A 3-letter code like `USD` (US Dollars) or `EUR`
    (Euros). |

    | **Unique Reference** | A "tracking number" for your payment. Use this to
    look up a payment's history. |

    | **Webhook** | An automated notification. We "ping" your system when a
    payment status changes so you don't have to check manually. |

    | **Merchant ID** | Your specific account number on our platform. |

    | **Rail** | The banking network used to move the money (e.g., SWIFT or
    ACH). |


    ---
  version: null
servers:
  - url: https://devapi.theropay.co/payouts
    description: Sandbox Server (Development)
paths:
  /api/v1/fees/calculate:
    post:
      tags:
        - Fees
      summary: Get Fees
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FeeCalculationRequestDTO'
          text/json:
            schema:
              $ref: '#/components/schemas/FeeCalculationRequestDTO'
          application/*+json:
            schema:
              $ref: '#/components/schemas/FeeCalculationRequestDTO'
      responses:
        '200':
          description: OK
  /v1/payees/Create:
    post:
      tags:
        - Payee
      summary: Creates a new payee.
      description: "Use this endpoint to create a new payee.  \r\n- Phone number and Tax ID are `optional` for `individual` payee type.  \r\n- Phone number and Tax ID are `required` for `business` payee type."
      requestBody:
        description: Payee creation request payload.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayeeUpsertRequestDTO'
          text/json:
            schema:
              $ref: '#/components/schemas/PayeeUpsertRequestDTO'
          application/*+json:
            schema:
              $ref: '#/components/schemas/PayeeUpsertRequestDTO'
      responses:
        '201':
          description: Payee created successfully.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/PayeeResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/PayeeResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/PayeeResponse'
        '400':
          description: Invalid request payload.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ValidationProblemDetails'
        '500':
          description: Server error while creating payee.
          content:
            text/plain:
              schema: {}
            application/json:
              schema: {}
            text/json:
              schema: {}
  /v1/payees/{id}:
    get:
      tags:
        - Payee
      summary: Retrieves a payee by ID.
      parameters:
        - name: id
          in: path
          description: Unique identifier of the payee.
          required: true
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: Payee retrieved successfully.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/PayeeResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/PayeeResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/PayeeResponse'
        '404':
          description: Payee not found.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '500':
          description: Server error while retrieving payee.
  /v1/payees/list:
    post:
      tags:
        - Payee
      summary: Lists all payees.
      description: Lists all payees with optional pagination and sorting.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayeeSearchRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/PayeeSearchRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/PayeeSearchRequest'
      responses:
        '200':
          description: List of payees retrieved successfully.
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PayeeResponse'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PayeeResponse'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PayeeResponse'
        '500':
          description: Internal Server Error.
  /v1/payouts:
    post:
      tags:
        - Payout Endpoints
      summary: Initiates a payout to a payee.
      description: >
        The payout is processed asynchronously. Use `GET /v1/payouts/{id}` to
        check its status.


        **Required fields:** `PayeeId`, `Amount`, `Currency`.


        **Optional field:** `Description`.


        MerchantId is automatically obtained from the authenticated user.
      requestBody:
        description: Details of the payout to be created.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePayoutRequest'
          text/json:
            schema:
              $ref: '#/components/schemas/CreatePayoutRequest'
          application/*+json:
            schema:
              $ref: '#/components/schemas/CreatePayoutRequest'
      responses:
        '201':
          description: Payout created successfully.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/PayoutResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/PayoutResponse'
        '400':
          description: Invalid request payload. Missing or invalid required fields.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Payee or payout account not found.
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
    get:
      tags:
        - Payout Endpoints
      summary: Retrieves a list of payouts for a specific payee.
      parameters:
        - name: payeeId
          in: query
          description: Payee ID to filter payouts.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of payouts retrieved successfully.
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PayoutResponse'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PayoutResponse'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PayoutResponse'
components:
  schemas:
    AddUpdatePaymentNetworkRailToCurrencyRequestDTO:
      required:
        - countryId
        - currencyId
        - instrumentType
        - paymentNetworkRailId
      type: object
      properties:
        paymentNetworkRailId:
          type: integer
          format: int32
        currencyId:
          type: integer
          format: int32
        instrumentType:
          minLength: 1
          type: string
        countryId:
          type: integer
          format: int32
      additionalProperties: false
    AddUpdatePaymentNetworkRailToMerchantRequestDTO:
      required:
        - currencyId
        - merchantId
        - paymentNetworkRailId
      type: object
      properties:
        paymentNetworkRailId:
          type: integer
          format: int32
        currencyId:
          type: integer
          format: int32
        merchantId:
          type: integer
          format: int32
      additionalProperties: false
    AddressResponseDto:
      type: object
      properties:
        addressLine:
          type: string
          nullable: true
        state:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        country:
          type: string
          nullable: true
        postalCode:
          type: string
          nullable: true
      additionalProperties: false
    BalanceResponse:
      type: object
      properties:
        currency:
          type: string
          nullable: true
        available:
          type: number
          format: double
      additionalProperties: false
    CancelPayoutResponse:
      type: object
      properties:
        payoutUniqueReference:
          type: string
          nullable: true
        message:
          type: string
          nullable: true
      additionalProperties: false
    CommonMethod:
      type: object
      properties:
        address_lines:
          type: string
          nullable: true
        birthdate:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        country_code:
          type: string
          nullable: true
        country_of_birth_code:
          type: string
          nullable: true
        country_of_residence_code:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        id_number:
          type: string
          nullable: true
        id_type:
          type: string
          nullable: true
        mobile_number:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        postcode:
          type: string
          nullable: true
        state:
          type: string
          nullable: true
        street_name:
          type: string
          nullable: true
        type:
          type: string
          nullable: true
      additionalProperties: false
    CreatePayoutRequest:
      required:
        - amount
        - destinationCurrency
        - payeeAccountId
        - payeeId
      type: object
      properties:
        payeeId:
          type: integer
          format: int32
        payeeAccountId:
          type: integer
          format: int32
        destinationCurrency:
          maxLength: 3
          minLength: 3
          type: string
        amount:
          minimum: 1
          type: integer
          format: int64
        note:
          type: string
          nullable: true
      additionalProperties: false
    CreateWebhookRequest:
      type: object
      properties:
        url:
          type: string
          nullable: true
        environment:
          type: string
          nullable: true
        events:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
    CreditorAccountModel:
      type: object
      properties:
        country_code:
          type: string
          nullable: true
        iban:
          type: string
          nullable: true
        account_number:
          type: string
          nullable: true
        bank_clearing_system_code:
          type: string
          nullable: true
        bank_clearing_system_id:
          type: string
          nullable: true
        bank_name:
          type: string
          nullable: true
      additionalProperties: false
    DebtorAccountModel:
      type: object
      properties:
        id:
          type: string
          nullable: true
        scheme_name:
          type: string
          nullable: true
      additionalProperties: false
    DebtorMethod:
      type: object
      properties:
        name:
          type: string
          nullable: true
      additionalProperties: false
    DisableAccountResponse:
      type: object
      properties:
        accountId:
          type: string
          nullable: true
        message:
          type: string
          nullable: true
      additionalProperties: false
    FeeCalculationRequestDTO:
      required:
        - amountInUSD
        - currency
        - paymentMethodTypeId
      type: object
      properties:
        merchantId:
          type: integer
          format: int64
          nullable: true
        railId:
          type: integer
          format: int64
          nullable: true
        currency:
          minLength: 1
          type: string
        direction:
          type: string
          nullable: true
        amountInUSD:
          type: number
          format: double
        paymentMethodTypeId:
          type: integer
          format: int32
          example: >-
            1.
            STANDARD(ACH)|2.SAME_DAY(ACH)|3.DOMESTIC-WIRE|4.INTERNATIONAL-WIRE
      additionalProperties: false
    InpayPaymentRequestDTO:
      type: object
      properties:
        amount:
          maximum: 250000
          minimum: 0.01
          type: number
          format: double
        currency_code:
          type: string
          nullable: true
        currency_of_transfer:
          type: string
          nullable: true
        end_to_end_id:
          type: string
          nullable: true
        local_instrument:
          type: string
          nullable: true
        remittance_description:
          type: string
          nullable: true
        requested_execution_date:
          type: string
          nullable: true
        business_unit:
          type: string
          nullable: true
        creditor:
          $ref: '#/components/schemas/CommonMethod'
        creditor_account:
          $ref: '#/components/schemas/CreditorAccountModel'
        debtor:
          $ref: '#/components/schemas/DebtorMethod'
        debtor_account:
          $ref: '#/components/schemas/DebtorAccountModel'
        ultimate_debtor:
          $ref: '#/components/schemas/CommonMethod'
      additionalProperties: false
    InpayPaymentSearchRequest:
      required:
        - created_after
        - created_before
        - virtual_account_number
      type: object
      properties:
        virtual_account_number:
          minLength: 1
          type: string
        created_before:
          minLength: 1
          type: string
        created_after:
          minLength: 1
          type: string
        state_categories:
          type: array
          items:
            type: string
          nullable: true
        reason_codes:
          type: array
          items:
            type: string
          nullable: true
        amount_from:
          type: string
          nullable: true
        amount_to:
          type: string
          nullable: true
        currency_code:
          type: string
          nullable: true
      additionalProperties: false
    JToken:
      type: array
      items:
        $ref: '#/components/schemas/JToken'
    PayeeAccountRequest:
      required:
        - accountHolderName
        - accountType
        - bankName
        - type
      type: object
      properties:
        type:
          minLength: 1
          pattern: ^(BANK_ACCOUNT|CARD)$
          type: string
          description: 'Account type: "BANK_ACCOUNT" or "CARD" etc.'
        accountHolderName:
          maxLength: 100
          minLength: 0
          type: string
          description: Full name of the account holder
        bankName:
          maxLength: 100
          minLength: 0
          type: string
          description: Name of the bank
        routingNumber:
          maxLength: 20
          minLength: 0
          type: string
          description: Routing number (required for BANK_ACCOUNT type)
          nullable: true
        accountNumber:
          maxLength: 50
          minLength: 0
          type: string
          description: Account number (required for BANK_ACCOUNT type)
          nullable: true
        branchTransitNumber:
          maxLength: 20
          minLength: 0
          type: string
          description: Branch transit number (optional)
          nullable: true
        currency:
          pattern: ^[A-Z]{3}$
          type: string
          description: Currency code
          nullable: true
        accountType:
          minLength: 1
          pattern: ^(CHECKINGS|SAVINGS)$
          type: string
          description: 'Account type: "CHECKINGS" or "SAVINGS"'
        iban:
          maxLength: 34
          minLength: 0
          type: string
          description: IBAN number (required for IBAN type)
          nullable: true
      additionalProperties: false
    PayeeAccountRequestDTO:
      required:
        - type
      type: object
      properties:
        type:
          minLength: 1
          type: string
        currency:
          pattern: ^[A-Z]{3}$
          type: string
          nullable: true
        accountType:
          type: string
          nullable: true
          example: CHECKINGS|SAVINGS
        accountHolderName:
          maxLength: 100
          minLength: 0
          type: string
          nullable: true
        bankName:
          maxLength: 100
          minLength: 0
          type: string
          nullable: true
        routingNumber:
          maxLength: 20
          minLength: 0
          type: string
          nullable: true
        accountNumber:
          maxLength: 32
          minLength: 0
          type: string
          nullable: true
        branchTransitNumber:
          maxLength: 20
          minLength: 0
          type: string
          nullable: true
        iban:
          maxLength: 34
          minLength: 0
          type: string
          nullable: true
        aba:
          maxLength: 9
          minLength: 0
          type: string
          nullable: true
        abaAccountNumber:
          maxLength: 12
          minLength: 0
          type: string
          nullable: true
        bic:
          maxLength: 11
          minLength: 0
          type: string
          nullable: true
        bicAccountNumber:
          maxLength: 32
          minLength: 0
          type: string
          nullable: true
        pixKeyType:
          type: string
          nullable: true
        pixKey:
          maxLength: 80
          minLength: 0
          type: string
          nullable: true
      additionalProperties: false
    PayeeAccountResponse:
      type: object
      properties:
        accountId:
          type: string
          nullable: true
        payeeId:
          type: string
          nullable: true
        type:
          type: string
          nullable: true
        accountHolderName:
          type: string
          nullable: true
        bankName:
          type: string
          nullable: true
        routingNumber:
          type: string
          nullable: true
        accountNumber:
          type: string
          nullable: true
        branchTransitNumber:
          type: string
          nullable: true
        currency:
          type: string
          nullable: true
        accountTypeId:
          type: integer
          format: int32
        isActive:
          type: boolean
        isDefault:
          type: boolean
        createdOn:
          type: string
          format: date-time
      additionalProperties: false
    PayeeAddressRequestDTO:
      required:
        - addressLine
        - city
        - country
        - postalCode
      type: object
      properties:
        addressLine:
          minLength: 1
          type: string
        city:
          minLength: 1
          type: string
        country:
          minLength: 1
          type: string
        postalCode:
          minLength: 1
          type: string
        state:
          type: string
          nullable: true
      additionalProperties: false
    PayeeResponse:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 174
        payeeType:
          type: string
          nullable: true
          example: INDIVIDUAL|BUSINESS|BRAID
        name:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        phoneNumber:
          type: string
          nullable: true
        taxId:
          type: string
          nullable: true
        businessName:
          type: string
          nullable: true
          example: ABC Private ltd
        businessType:
          type: string
          nullable: true
          example: null
        nationality:
          type: string
          nullable: true
          example: USA
        idType:
          type: string
          nullable: true
          example: SSN
        currency:
          type: string
          nullable: true
          example: USD
        address:
          $ref: '#/components/schemas/AddressResponseDto'
        dateOfBirth:
          type: string
          format: date
          nullable: true
        isActive:
          type: boolean
      additionalProperties: false
    PayeeSearchRequest:
      type: object
      properties:
        pageNumber:
          type: integer
          format: int32
        pageSize:
          type: integer
          format: int32
        route:
          type: string
          nullable: true
        sortProperty:
          type: string
          nullable: true
        isDescending:
          type: boolean
        merchantId:
          type: integer
          format: int32
          nullable: true
        searchText:
          type: string
          nullable: true
      additionalProperties: false
    PayeeUpsertRequestDTO:
      required:
        - address
        - payeeAccount
        - payeeType
      type: object
      properties:
        id:
          type: integer
          format: int32
          nullable: true
        payeeType:
          minLength: 1
          type: string
          example: INDIVIDUAL|BUSINESS|BRAID
        name:
          maxLength: 100
          minLength: 0
          type: string
          nullable: true
        firstName:
          maxLength: 50
          minLength: 0
          type: string
          nullable: true
        lastName:
          maxLength: 50
          minLength: 0
          type: string
          nullable: true
        email:
          type: string
          format: email
          nullable: true
        phoneNumber:
          type: string
          format: tel
          nullable: true
        taxId:
          maxLength: 50
          minLength: 0
          type: string
          nullable: true
        idType:
          maxLength: 50
          minLength: 0
          type: string
          nullable: true
        dateOfBirth:
          type: string
          format: date
          nullable: true
        address:
          $ref: '#/components/schemas/PayeeAddressRequestDTO'
        payeeAccount:
          $ref: '#/components/schemas/PayeeAccountRequestDTO'
      additionalProperties: false
    PaymentHistoryRequest:
      type: object
      properties:
        pageNumber:
          type: integer
          format: int32
        pageSize:
          type: integer
          format: int32
        route:
          type: string
          nullable: true
        sortProperty:
          type: string
          nullable: true
        isDescending:
          type: boolean
        userId:
          type: integer
          format: int32
          nullable: true
        amount:
          type: integer
          format: int32
          nullable: true
        statusId:
          type: integer
          format: int32
          nullable: true
        createdAt:
          type: string
          format: date
          nullable: true
        searchText:
          type: string
          nullable: true
      additionalProperties: false
    PaymentRequest:
      required:
        - accountHolderName
        - accountNumber
        - address
        - amount
        - city
        - country
        - dateOfBirth
        - destinationCurrency
        - email
        - fileId
        - invoiceId
        - originatingCurrency
        - stateProvince
        - status
        - swiftBic
        - zip
      type: object
      properties:
        fileId:
          type: integer
          format: int32
        accountHolderName:
          maxLength: 100
          minLength: 0
          type: string
        dateOfBirth:
          type: string
          format: date
        email:
          minLength: 1
          type: string
        originatingCurrency:
          maxLength: 3
          minLength: 3
          type: string
        destinationCurrency:
          maxLength: 3
          minLength: 3
          type: string
        amount:
          minimum: 1
          type: integer
          format: int64
        swiftBic:
          minLength: 1
          type: string
        iban:
          type: string
          nullable: true
        routingNumber:
          type: string
          nullable: true
        accountNumber:
          minLength: 1
          type: string
        address:
          maxLength: 500
          minLength: 0
          type: string
        city:
          minLength: 1
          type: string
        stateProvince:
          minLength: 1
          type: string
        zip:
          minLength: 1
          type: string
        country:
          minLength: 1
          type: string
        invoiceId:
          minLength: 1
          type: string
        note:
          type: string
          nullable: true
        status:
          type: boolean
      additionalProperties: false
    PayoutAccountResponse:
      type: object
      properties:
        accountNumber:
          type: string
          nullable: true
        bankName:
          type: string
          nullable: true
      additionalProperties: false
    PayoutRequestDTO:
      type: object
      properties:
        paymentId:
          type: integer
          format: int32
        merchantId:
          type: integer
          format: int32
        payeeId:
          type: integer
          format: int32
          nullable: true
        payeeAccountId:
          type: integer
          format: int32
          nullable: true
        destinationCurrency:
          type: string
          nullable: true
        amount:
          type: number
          format: double
        note:
          type: string
          nullable: true
        paymentMethodTypeId:
          type: integer
          format: int32
      additionalProperties: false
    PayoutResponse:
      type: object
      properties:
        payoutUniqueReference:
          type: string
          nullable: true
        payoutId:
          type: string
          nullable: true
        payoutAccountId:
          type: string
          nullable: true
        payeeId:
          type: string
          nullable: false
        amount:
          type: number
          format: double
        currencyCode:
          type: string
          nullable: true
        state:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        merchantId:
          type: string
          nullable: true
        paymentDate:
          type: string
          format: date-time
          nullable: true
        payeeDetails:
          $ref: '#/components/schemas/PayeeResponse'
        payoutAccountDetails:
          $ref: '#/components/schemas/PayoutAccountResponse'
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    ValidationProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          nullable: true
      additionalProperties: {}
    Webhook:
      type: object
      properties:
        id:
          type: string
          format: uuid
        url:
          type: string
          nullable: true
        environment:
          type: string
          nullable: true
        events:
          type: array
          items:
            type: string
          nullable: true
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: http
      description: JWT Authorization header using the Bearer scheme.
      scheme: bearer
      bearerFormat: JWT
security:
  - Bearer: []
tags:
  - name: Payee
    description: >-
      Public APIs for managing payees, including creation, retrieval, update,
      deletion, and KYC verification.
  - name: Fees
    description: >-
      Provides APIs to calculate fees for a transaction. Helps merchants
      understand applicable charges
  - name: Payout Endpoints
    description: >-
      Allows merchants to create, track, list, and cancel payouts to registered
      payees.
