> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cadanapay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get user fees

> Retrieve the payout catalog for a user — fees, delivery timelines, and transfer limits per corridor.

`data.payouts` is the full, unfiltered catalog (the user's rate card) and is always returned.

Supply `paymentMethod` together with `destinationCurrency` to also receive `data.estimate` — a per-transaction fee, delivery timeline, and transfer limits for the specified corridor. Add `destinationCountry` when several countries share a currency (e.g. USD sent to Ecuador vs. USD sent to El Salvador) so the estimate resolves to the right country. Add `sourceAmount` to resolve percentage-based fees into a concrete amount.




## OpenAPI

````yaml /openapi/embedded-consumer-wallets.yaml get /v1/users/{userId}/fees
openapi: 3.0.0
info:
  description: APIs for interacting with Cadana Embedded Consumer Wallets
  version: 1.0.0
  title: Embedded Consumer Wallets
  termsOfService: https://cadanapay.com/terms-and-conditions
  contact:
    email: api@cadanapay.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.cadanapay.com
    description: Prod Server
  - url: https://dev-api.cadanapay.com
    description: Dev Server
security:
  - Authorization: []
tags:
  - name: Beneficiaries
    description: APIs for managing user beneficiaries
  - name: Transactions
    description: APIs for managing user transactions
  - name: Balances
    description: APIs for managing user account balances
paths:
  /v1/users/{userId}/fees:
    get:
      tags:
        - Transactions
      summary: Get user fees
      description: >
        Retrieve the payout catalog for a user — fees, delivery timelines, and
        transfer limits per corridor.


        `data.payouts` is the full, unfiltered catalog (the user's rate card)
        and is always returned.


        Supply `paymentMethod` together with `destinationCurrency` to also
        receive `data.estimate` — a per-transaction fee, delivery timeline, and
        transfer limits for the specified corridor. Add `destinationCountry`
        when several countries share a currency (e.g. USD sent to Ecuador vs.
        USD sent to El Salvador) so the estimate resolves to the right country.
        Add `sourceAmount` to resolve percentage-based fees into a concrete
        amount.
      operationId: getUserFees
      parameters:
        - $ref: '#/components/parameters/userId'
        - name: sourceCurrency
          in: query
          required: false
          description: ISO 4217 currency in which all fees are quoted. Defaults to `USD`.
          schema:
            type: string
            example: USD
        - name: paymentMethod
          in: query
          required: false
          description: >-
            Payment method to produce an estimate for. Presence of this field
            triggers the `estimate` block in the response and requires
            `destinationCurrency`.
          schema:
            type: string
            enum:
              - bank
              - momo
              - swift
              - ach
              - wire
              - crypto
              - card
              - wallet
            example: bank
        - name: destinationCurrency
          in: query
          required: false
          description: >-
            ISO 4217 payout currency — keys the specific corridor for the
            `estimate`. Required whenever `paymentMethod`, `destinationCountry`,
            or `sourceAmount` is supplied.
          schema:
            type: string
            example: AUD
        - name: destinationCountry
          in: query
          required: false
          description: >-
            ISO 3166-1 alpha-2 destination country code. Use this when several
            countries share a currency (e.g. USD sent to Ecuador vs. USD sent to
            El Salvador) so the estimate resolves to the right country. Only
            meaningful when `destinationCurrency` is also supplied.
          schema:
            type: string
            example: AU
        - name: sourceAmount
          in: query
          required: false
          description: >-
            Decimal payout amount used to resolve percentage-based fees into a
            concrete `estimate.fee.value`. Ignored for fixed-fee corridors.
            Requires `destinationCurrency`.
          schema:
            type: string
            example: '100'
        - $ref: '#/components/parameters/XMultiTenantKey'
      responses:
        '200':
          $ref: '#/components/responses/GetFeesResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        5XX:
          $ref: '#/components/responses/InternalError'
      security:
        - Authorization: []
components:
  parameters:
    userId:
      name: userId
      in: path
      description: The unique identifier for the user
      required: true
      schema:
        type: string
        format: uuid
        example: c06f3427-3bbe-4d70-9a54-28acda267e48
    XMultiTenantKey:
      name: X-MultiTenantKey
      in: header
      required: false
      schema:
        type: string
      description: >-
        Required when using a Platform API token. The tenant key identifying
        which business to operate on.
  responses:
    GetFeesResponse:
      description: Payout catalog and (optional) corridor estimate
      content:
        application/json:
          schema:
            type: object
            properties:
              data:
                type: object
                required:
                  - sourceCurrency
                  - payouts
                properties:
                  sourceCurrency:
                    type: string
                    description: ISO 4217 currency in which payout fees are quoted
                    example: USD
                  payouts:
                    type: array
                    items:
                      $ref: '#/components/schemas/FeeTableEntry'
                  estimate:
                    $ref: '#/components/schemas/FeeEstimate'
          examples:
            catalogOnly:
              summary: Catalog only — `paymentMethod` not supplied
              value:
                data:
                  sourceCurrency: USD
                  payouts:
                    - paymentMethod: bank
                      destinationCurrency: AUD
                      destinationCountry: AU
                      fee:
                        type: fixed
                        value: 1
                        min: 0
                        max: 0
                      feeCurrency: USD
                      timeline:
                        minDays: 1
                        maxDays: 2
                        businessDaysOnly: true
                    - paymentMethod: bank
                      destinationCurrency: USD
                      destinationCountry: EC
                      fee:
                        type: fixed
                        value: 6.5
                        min: 0
                        max: 0
                      feeCurrency: USD
                      timeline:
                        minDays: 0
                        maxDays: 1
                        businessDaysOnly: true
            catalogWithEstimate:
              summary: >-
                Catalog + corridor estimate — `paymentMethod` and
                `destinationCurrency` supplied
              value:
                data:
                  sourceCurrency: USD
                  payouts:
                    - paymentMethod: bank
                      destinationCurrency: AUD
                      destinationCountry: AU
                      fee:
                        type: fixed
                        value: 1
                        min: 0
                        max: 0
                      feeCurrency: USD
                      timeline:
                        minDays: 1
                        maxDays: 2
                        businessDaysOnly: true
                  estimate:
                    paymentMethod: bank
                    destinationCurrency: AUD
                    destinationCountry: AU
                    fee:
                      value: '1.00'
                      currency: USD
                    timeline:
                      minDays: 1
                      maxDays: 2
                      businessDaysOnly: true
                      estimatedArrival: Apr 24, 2026 (excluding holidays)
                    limits:
                      min: '2'
                      max: '20000'
                      currency: AUD
    BadRequestError:
      description: Bad input provided by client
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequestError'
    NotFoundError:
      description: Requested resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NotFoundError'
    InternalError:
      description: Internal error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalError'
  schemas:
    FeeTableEntry:
      type: object
      description: A single corridor entry in the payout catalog
      required:
        - paymentMethod
        - destinationCurrency
        - fee
        - feeCurrency
        - timeline
      properties:
        paymentMethod:
          type: string
          enum:
            - bank
            - momo
            - swift
            - ach
            - wire
            - crypto
            - card
            - wallet
          example: bank
        destinationCurrency:
          type: string
          description: ISO 4217 payout currency
          example: AUD
        destinationCountry:
          type: string
          description: >-
            ISO 3166-1 alpha-2 country code. Only present when several countries
            share a currency and the country is needed to identify the corridor
            (e.g. USD sent to Ecuador).
          example: AU
        fee:
          type: object
          required:
            - type
            - value
          properties:
            type:
              type: string
              enum:
                - fixed
                - percentage
              description: >-
                Fee model. `fixed` values are denominated in `feeCurrency`;
                `percentage` values are rates (e.g. `1.5` means 1.5%).
              example: fixed
            value:
              type: number
              description: Fee amount (for `fixed`) or percentage rate (for `percentage`).
              example: 1
            min:
              type: number
              description: >-
                Minimum applicable fee in `feeCurrency`. `0` indicates no
                minimum.
              example: 0
            max:
              type: number
              description: >-
                Maximum applicable fee in `feeCurrency`. `0` indicates no
                maximum.
              example: 0
        feeCurrency:
          type: string
          description: >-
            ISO 4217 currency in which the fee is denominated. Matches the
            request's `sourceCurrency` (or `USD` if not supplied).
          example: USD
        timeline:
          type: object
          required:
            - minDays
            - maxDays
            - businessDaysOnly
          properties:
            minDays:
              type: integer
              description: Minimum delivery time in days
              example: 1
            maxDays:
              type: integer
              description: Maximum delivery time in days
              example: 2
            businessDaysOnly:
              type: boolean
              description: When `true`, weekends are excluded from `minDays` and `maxDays`.
              example: true
    FeeEstimate:
      type: object
      description: >-
        Per-transaction quote for a specific corridor + payment method. Only
        returned when `paymentMethod` and `destinationCurrency` are supplied.
      required:
        - paymentMethod
        - destinationCurrency
        - fee
        - timeline
        - limits
      properties:
        paymentMethod:
          type: string
          enum:
            - bank
            - momo
            - swift
            - ach
            - wire
            - crypto
            - card
            - wallet
          example: bank
        destinationCurrency:
          type: string
          example: AUD
        destinationCountry:
          type: string
          description: >-
            Only present when several countries share a currency and the country
            is needed to identify the corridor
          example: AU
        fee:
          type: object
          required:
            - value
            - currency
          properties:
            value:
              type: string
              description: >-
                Concrete per-transaction fee. For `percentage` corridors,
                resolved using the request's `sourceAmount`.
              example: '1.00'
            currency:
              type: string
              description: >-
                ISO 4217 currency code — matches the request's `sourceCurrency`
                (or `USD` if not supplied).
              example: USD
        timeline:
          type: object
          required:
            - businessDaysOnly
          properties:
            minDays:
              type: integer
              example: 1
            maxDays:
              type: integer
              example: 2
            businessDaysOnly:
              type: boolean
              description: When `true`, weekends are excluded from `minDays` and `maxDays`.
              example: true
            estimatedArrival:
              type: string
              description: >-
                Human-readable delivery estimate, accounting for weekends and
                holidays.
              example: Apr 24, 2026 (excluding holidays)
            message:
              type: string
              description: >-
                Replaces `minDays`/`maxDays` for special corridors (e.g.
                `"Instant"`).
              example: Instant
        limits:
          type: object
          required:
            - min
            - max
            - currency
          properties:
            min:
              type: string
              description: Minimum transfer amount
              example: '2'
            max:
              type: string
              description: Maximum transfer amount
              example: '20000'
            currency:
              type: string
              description: >-
                Currency the limits are denominated in — matches
                `destinationCurrency`.
              example: AUD
    BadRequestError:
      description: Bad input provided by client
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            params:
              description: A map for meta data around the error that occurred
              type: object
      example:
        code: invalid_request_body
        message: The request body provided is not valid
        params:
          field: Value is invalid.
    NotFoundError:
      description: Not Found
      allOf:
        - $ref: '#/components/schemas/Error'
      example:
        code: resource_not_found
        message: Requested resource could not be found.
    InternalError:
      description: Internal server error
      allOf:
        - $ref: '#/components/schemas/Error'
      example:
        code: internal_error
        message: An unexpected error occurred. Please try again later.
    Error:
      type: object
      properties:
        code:
          description: A machine parsable error code
          type: string
          enum:
            - invalid_request_body
            - resource_not_found
            - forbidden
            - internal_error
        message:
          description: A human readable message describing the error
          type: string
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer
      bearerFormat: API_SECRET_KEY

````