openapi: 3.1.0
info:
  title: WisePublicApi
  version: ''
security:
  - ClientCredentialsToken: []
  - UserToken: []
  - PersonalToken: []
  - BasicAuth: []
paths:
  /v2/profiles/{profileId}/third-party-transfers:
    post:
      description: |2

            When creating a transfer on behalf of a third party, you must take note that:

            * The `originator` datablock is **required**. This details the ultimate sender of funds in the transfer.
            * Depending on the legal entity type of the originator (`PRIVATE` or `BUSINESS`), the required fields vary. Please refer the sample request examples.
            * `OriginalTransferId` field must be used. This is your own ID for the transfer.

            You need to save the transfer ID for tracking its status later via webhooks.

            #### Avoiding duplicate transfers

            The `originalTransferId` field is used to avoid duplicate transfer requests. If your initial call fails (error or timeout), retry the call using the same `originalTransferId` value. Subsequent retry messages are treated as repeat messages and will not create duplicate transfers.
      summary: Create a third party transfer
      operationId: createThirdPartyTransfer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateThirdPartyTransferRequestContent'
            examples:
              1.create-third-party-transfer-private-originator:
                summary: PRIVATE Originator
                value:
                  profileId: 123456789
                  targetAccount: 7839323
                  quote: 3522e360-356a-4e37-9f99-94a21898d8fa
                  originalTransferId: '4711'
                  details:
                    reference: Ski trip
                  originator:
                    legalEntityType: PRIVATE
                    accountDetails: '123456789'
                    reference: CST-2991992
                    name:
                      givenName: John
                      middleNames:
                        - Ryan
                      familyName: Godspeed
                      patronymicName: Fitz
                    dateOfBirth: '1977-07-01'
                    nationality: EE
                    address:
                      firstLine: Salu tee 100, Apt 4B
                      city: Tallinn
                      countryCode: EE
                      postCode: '12112'
              2.create-third-party-transfer-business-originator:
                summary: BUSINESS Originator
                value:
                  profileId: 123456789
                  targetAccount: 7839323
                  quote: 3522e360-356a-4e37-9f99-94a21898d8fa
                  originalTransferId: '4711'
                  details:
                    reference: Ski trip
                  originator:
                    legalEntityType: BUSINESS
                    reference: '78976'
                    name:
                      fullName: Hot Air Balloon Services Ltd
                    businessRegistrationCode: AE-89780
                    businessRegistrationDate: '2020-01-15'
                    address:
                      firstLine: Salu tee 100, Apt 4B
                      city: Tallinn
                      countryCode: EE
                      postCode: '12112'
      parameters:
        - name: profileId
          in: path
          description: The profile ID.
          schema:
            type: integer
            description: The profile ID.
            format: int64
            example: 123456789
          required: true
      responses:
        '201':
          description: Third party transfer successfully created.
          headers:
            Location:
              description: Path to the created transfer
              schema:
                type: string
                description: Path to the created transfer
                example: /public/v2/profiles/123/third-party-transfers/16521632
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateThirdPartyTransferResponseContent'
              examples:
                response-business-legalentity:
                  summary: BUSINESS Originator Response
                  value:
                    id: 16521632
                    originalTransferId: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
                    user: 4342275
                    targetAccount: 8692237
                    sourceAccount: 1527389
                    quote: 8fa9be20-ba43-4b15-abbb-9424e1481050
                    status: cancelled
                    rate: 0.89
                    details:
                      reference: T475890
                    hasActiveIssues: false
                    sourceCurrency: EUR
                    sourceValue: 0
                    targetCurrency: GBP
                    targetValue: 150
                    originator:
                      legalEntityType: BUSINESS
                      name:
                        fullName: Hot Air Balloon Services Ltd
                      reference: CST-2991992
                      businessRegistrationCode: 83920-546
                      businessRegistrationDate: '2020-01-15'
                      address:
                        firstLine: Salu tee 14
                        city: Tallinn
                        stateCode: ''
                        countryCode: EE
                        postCode: '12112'
                      accountDetails: '23456789'
                    created: '2025-10-29T12:28:16.000Z'
                response-private-legalentity:
                  summary: PRIVATE Originator Response
                  value:
                    id: 16521632
                    originalTransferId: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
                    user: 4342275
                    targetAccount: 8692237
                    sourceAccount: 1527389
                    quote: 8fa9be20-ba43-4b15-abbb-9424e1481050
                    status: cancelled
                    rate: 0.89
                    details:
                      reference: Testing
                    hasActiveIssues: false
                    sourceCurrency: EUR
                    sourceValue: 0
                    targetCurrency: GBP
                    targetValue: 150
                    originator:
                      legalEntityType: PRIVATE
                      name:
                        givenName: John
                        middleNames:
                          - Ryan
                        familyName: Godspeed
                        patronymicName: Fitz
                      dateOfBirth: '1977-07-01'
                      nationality: EE
                      reference: CST-2991992
                      address:
                        firstLine: Salu tee 14
                        city: Tallinn
                        stateCode: ''
                        countryCode: EE
                        postCode: '12112'
                      accountDetails: '23456789'
                    created: '2025-10-29T12:28:16.000Z'
      security:
        - UserToken: []
      tags:
        - third-party-transfer
  /v2/profiles/{profileId}/third-party-transfers/{transferId}:
    get:
      description: |2

            Get third party transfer info by ID. To receive dynamic updates as the state of the transfer changes, see the [webhooks documentation](https://docs.wise.com/api-reference/webhook).
      summary: Get a third party transfer by ID
      operationId: getThirdPartyTransfer
      parameters:
        - name: profileId
          in: path
          description: Profile Id
          schema:
            type: integer
            description: Profile Id
            format: int64
            example: 123456789
          required: true
        - name: transferId
          in: path
          description: Transfer Id
          schema:
            type: integer
            description: Transfer Id
            format: int64
            example: 16521632
          required: true
      responses:
        '200':
          description: Returns the originator transfer object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetThirdPartyTransferResponseContent'
              examples:
                response-business-legalentity:
                  summary: BUSINESS Originator Response
                  value:
                    id: 16521632
                    originalTransferId: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
                    user: 4342275
                    targetAccount: 8692237
                    sourceAccount: 1527389
                    quote: 8fa9be20-ba43-4b15-abbb-9424e1481050
                    status: cancelled
                    rate: 0.89
                    details:
                      reference: T475890
                    hasActiveIssues: false
                    sourceCurrency: EUR
                    sourceValue: 0
                    targetCurrency: GBP
                    targetValue: 150
                    originator:
                      legalEntityType: BUSINESS
                      name:
                        fullName: John Godspeed
                      reference: CST-2991992
                      businessRegistrationCode: 83920-546
                      businessRegistrationDate: '2020-01-15'
                      address:
                        firstLine: Salu tee 14
                        city: Tallinn
                        stateCode: ''
                        countryCode: EE
                        postCode: '12112'
                      accountDetails: '23456789'
                    created: '2025-10-29T12:28:16.000Z'
                response-private-legalentity:
                  summary: PRIVATE Originator Response
                  value:
                    id: 16521632
                    originalTransferId: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
                    user: 4342275
                    targetAccount: 8692237
                    sourceAccount: 1527389
                    quote: 8fa9be20-ba43-4b15-abbb-9424e1481050
                    status: cancelled
                    rate: 0.89
                    details:
                      reference: Testing
                    hasActiveIssues: false
                    sourceCurrency: EUR
                    sourceValue: 0
                    targetCurrency: GBP
                    targetValue: 150
                    originator:
                      legalEntityType: PRIVATE
                      name:
                        givenName: John
                        middleNames:
                          - Ryan
                        familyName: Godspeed
                        patronymicName: Fitz
                      dateOfBirth: '1977-07-01'
                      nationality: EE
                      reference: CST-2991992
                      address:
                        firstLine: Salu tee 14
                        city: Tallinn
                        stateCode: ''
                        countryCode: EE
                        postCode: '12112'
                      accountDetails: '23456789'
                    created: '2025-10-29T12:28:16.000Z'
        '404':
          description: Transfer not found.
      security:
        - UserToken: []
      tags:
        - third-party-transfer
  /v3/profiles/{profileId}/quotes:
    post:
      description: |-
        {% admonition type="info" %}
            You must use a user access token to authenticate this call and supply the profile with which the quote should be associated. This ensures that quote can be used to create a transfer.
            {% /admonition %}

            If you are funding the transfer from a Multi Currency Balance, you must set the `payIn` as `BALANCE` to get the correct pricing in the quote. Not doing so will default to `BANK_TRANSFER` and the fees will be inconsistent between quote and transfer.

            {% admonition type="info" %}
            When SWIFT_OUR is set as payOut value, it enables payment protection for swift recipients for global currency transfers. By using this payOut method, you can guarantee your customers that the fee will be charged to the sender and can ensure that the recipient gets the complete target amount.
            {% /admonition %}

            #### Response

            The following describes the fields of the quote response that may be useful when building your integration.

            The `payOut` field is used to select the correct entry in the `paymentOptions` array in order to know which fees to display to your customer. Find the paymentOption that matches the `payOut` field shown at the top level of the quote resource and `payIn` based on the settlement model the bank is using. By default, this is `BANK_TRANSFER`, unless you are using a prefunded or bulk settlement model. The `payOut` field will change based on the type of recipient you add to the quote in the `PATCH /quote` call, for example to-USD `swift_code` or to-CAD `interac` have different fees.

            For example sending USD to a country other than the United States is supported but with different fees to domestic USD transfers.
            Please see the later section on [Global Currencies](/guides/product/send-money/swift-network-transfers) to learn more about how to offer this useful feature.

            For each paymentOption there is a price field. It gives a full breakdown of all the taxes, fees and discounts. It is preferable to refer to this structure to show breakdowns and totals, rather than the fee structure, found as well in each paymentOption element, that only gives a summary and is not able to surface important specifics such as taxes.

            When showing the price of a transfer always show the 'price.total.value.amount' of a payment option.

            #### Disabled Payment Options

            Each payment option is either enabled or disabled based on the `disabled` value. Disabled payment options should be shown to the user in a disabled state in most cases. This ensures users are given the options that they are familiar with regardless of their availability, as well as with options that can be beneficial to their accounts.

            The `option.disabledReason` contains both the `code` and `message`, with the message being the user-friendly text to surface to the user if necessary.

            #### Transfer Nature for BRL
            When creating or updating a quote, the transfer nature can be set. This is a requirement for transfers to or from BRL and impacts the fees we charge on the quote, specifically the IOF.

            Note that IOF is determined based on the transfer nature, sender information, and recipient information. The default IOF will be included in a quote until all relevant information has been included.

            {% admonition type="info" %}
            Omitting transfer nature will not prevent the transfer from being created or even funded. However, when attempting to process the transfer, it will be blocked and the money will be refunded to the sender.
            {% /admonition %}

            #### Pricing Configuration
            When creating or updating a quote, partners that have flexible partner pricing enabled are able to override the pricing configuration dynamically.

            To learn more on how to use this feature, please see the [Flexible Partner Pricing Guide](/guides/product/send-money/quotes/pricing)
      summary: Create a quote (authenticated)
      operationId: quoteCreate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteRequest'
            examples:
              CreateQuoteExample:
                summary: Create a quote
                value:
                  profileId: 123456789
                  body:
                    sourceCurrency: GBP
                    targetCurrency: USD
                    sourceAmount: 100
                    targetAccount: 12345
                    paymentMetadata:
                      transferNature: MOVING_MONEY_BETWEEN_OWN_ACCOUNTS
                    pricingConfiguration:
                      fee:
                        type: OVERRIDE
                        variable: 0.011
                        fixed: 15.42
      parameters:
        - name: profileId
          in: path
          description: Personal or business profile ID of the sender.
          schema:
            type: integer
            description: Personal or business profile ID of the sender.
            format: int64
            example: 123456789
          required: true
      responses:
        '200':
          description: Returns a Quote object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteResponse'
              examples:
                CreateAuthenticatedQuoteV3OutputExample:
                  value:
                    id: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf
                    sourceCurrency: GBP
                    targetCurrency: USD
                    sourceAmount: 100
                    targetAmount: 129.24
                    payOut: BANK_TRANSFER
                    preferredPayIn: BANK_TRANSFER
                    rate: 1.30445
                    createdTime: '2019-04-05T13:18:58Z'
                    user: 55
                    profile: 101
                    rateType: FIXED
                    rateExpirationTime: '2019-04-08T13:18:57Z'
                    guaranteedTargetAmountAllowed: true
                    targetAmountAllowed: true
                    guaranteedTargetAmount: false
                    providedAmountType: SOURCE
                    pricingConfiguration:
                      fee:
                        type: OVERRIDE
                        variable: 0.011
                        fixed: 15.42
                    paymentOptions:
                      - disabled: false
                        estimatedDelivery: '2019-04-08T12:30:00Z'
                        formattedEstimatedDelivery: by Apr 8
                        estimatedDeliveryDelays:
                          - reason: sample reason
                        fee:
                          transferwise: 3.04
                          payIn: 0
                          discount: 2.27
                          partner: 0
                          total: 0.77
                        price:
                          priceSetId: 238
                          total:
                            type: TOTAL
                            label: Total fees
                            value:
                              amount: 0.77
                              currency: GBP
                              label: 0.77 GBP
                            explanation: {}
                          items:
                            - id: string
                              type: FEE
                              label: fee
                              value:
                                amount: 0
                                currency: GBP
                                label: 0 GBP
                              explanation:
                                plainText: string
                                markdown: string
                          deferredFee:
                            amount: 14.79
                            currency: BRL
                          calculatedOn:
                            unroundedAmountToConvert:
                              amount: 179.97342
                              currency: BRL
                        sourceAmount: 100
                        targetAmount: 129.24
                        sourceCurrency: GBP
                        targetCurrency: USD
                        payIn: BANK_TRANSFER
                        payOut: BANK_TRANSFER
                        allowedProfileTypes:
                          - PERSONAL
                          - BUSINESS
                        payInProduct: CHEAP
                        feePercentage: 0.0092
                        disabledReason:
                          code: string
                          message: string
                    status: PENDING
                    expirationTime: '2019-04-05T13:48:58Z'
                    notices:
                      - text: >-
                          You can have a maximum of 3 open transfers with a
                          guaranteed rate. After that, they'll be transferred
                          using the live rate. Complete or cancel your other
                          transfers to regain the use of guaranteed rate.
                        link: null
                        type: WARNING
      security:
        - UserToken: []
      tags:
        - quote
  /v3/profiles/{profileId}/quotes/{quoteId}:
    get:
      description: >-
        Get quote info by Profile and ID. If the quote has expired (not used to
        create a transfer within 30 minutes of quote creation), it will only be
        accessible for approximately 48 hours via this endpoint.
      summary: Retrieve a quote by profile ID and quote ID
      operationId: quoteGet
      parameters:
        - name: profileId
          in: path
          description: Profile Id
          schema:
            type: integer
            description: Profile Id
            format: int64
            example: 123456789
          required: true
        - name: quoteId
          in: path
          description: Quote Id. Can be Long or UUID format.
          schema:
            type: string
            description: Quote Id. Can be Long or UUID format.
            example: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf
          required: true
      responses:
        '200':
          description: Returns a Quote object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteResponse'
              examples:
                GetQuoteByProfileAndQuoteIdV3OutputExample:
                  value:
                    id: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf
                    sourceCurrency: GBP
                    targetCurrency: USD
                    sourceAmount: 100
                    targetAmount: 129.24
                    payOut: BANK_TRANSFER
                    preferredPayIn: BANK_TRANSFER
                    rate: 1.30445
                    createdTime: '2019-04-05T13:18:58Z'
                    user: 55
                    profile: 101
                    rateType: FIXED
                    rateExpirationTime: '2019-04-08T13:18:57Z'
                    guaranteedTargetAmountAllowed: true
                    targetAmountAllowed: true
                    guaranteedTargetAmount: false
                    providedAmountType: SOURCE
                    pricingConfiguration:
                      fee:
                        type: OVERRIDE
                        variable: 0.011
                        fixed: 15.42
                    paymentOptions:
                      - disabled: false
                        estimatedDelivery: '2019-04-08T12:30:00Z'
                        formattedEstimatedDelivery: by Apr 8
                        estimatedDeliveryDelays:
                          - reason: sample reason
                        fee:
                          transferwise: 3.04
                          payIn: 0
                          discount: 2.27
                          partner: 0
                          total: 0.77
                        price:
                          priceSetId: 238
                          total:
                            type: TOTAL
                            label: Total fees
                            value:
                              amount: 0.77
                              currency: GBP
                              label: 0.77 GBP
                            explanation: {}
                          items:
                            - id: string
                              type: FEE
                              label: fee
                              value:
                                amount: 0
                                currency: GBP
                                label: 0 GBP
                              explanation:
                                plainText: string
                                markdown: string
                          deferredFee:
                            amount: 14.79
                            currency: BRL
                          calculatedOn:
                            unroundedAmountToConvert:
                              amount: 179.97342
                              currency: BRL
                        sourceAmount: 100
                        targetAmount: 129.24
                        sourceCurrency: GBP
                        targetCurrency: USD
                        payIn: BANK_TRANSFER
                        payOut: BANK_TRANSFER
                        allowedProfileTypes:
                          - PERSONAL
                          - BUSINESS
                        payInProduct: CHEAP
                        feePercentage: 0.0092
                        disabledReason:
                          code: string
                          message: string
                    status: PENDING
                    expirationTime: '2019-04-05T13:48:58Z'
                    notices:
                      - text: >-
                          You can have a maximum of 3 open transfers with a
                          guaranteed rate. After that, they'll be transferred
                          using the live rate. Complete or cancel your other
                          transfers to regain the use of guaranteed rate.
                        link: null
                        type: WARNING
      security:
        - UserToken: []
      tags:
        - quote
  /v3/profiles/{profileId}/transfers/{transferId}/payments:
    post:
      description: |2-

            {% admonition type="warning" %}
              This endpoint is SCA protected when it applies. If your profile is registered within the UK and/or EEA, SCA most likely applies to you.
              Please read more about [implementing SCA](/guides/developer/auth-and-security/sca-and-2fa).
            {% /admonition %}

            This API call is the final step for executing payouts when using a balance with Wise. Upon calling the endpoint, Wise will begin the processing of the transfer, depending on the status of funds.

            When using the transfer by transfer settlement model, the following funding type(s) must be used:

            * **BALANCE** — Funds are pulled from a multi-currency account held with Wise.

            When funding through the Bulk Settlement model, the following funding type(s) must be used:

            * **TRUSTED_PRE_FUND_BULK** — Funds for the transfer will be settled through a bulk payment at a later date. This method is not applicable for First Party partner account transfers.

            If funding from `BALANCE`, and your multi-currency account does not have the required funds to complete the action, then this call will fail with an "insufficient funds" error. Once funds are added and available, you must call this endpoint again.
            
      summary: Fund a Transfer
      operationId: transferFund
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FundingRequest'
            examples:
              fund-transfer-balance:
                summary: BALANCE - Fund from a Wise balance (Pre-Funded Wise Balance)
                value:
                  type: BALANCE
                  balanceId: 45678901
              fund-transfer-trusted-pre-fund-bulk:
                summary: TRUSTED_PRE_FUND_BULK - Cross Currency Bulk Settlement
                value:
                  type: TRUSTED_PRE_FUND_BULK
                  partnerReference: PARTNER-REF-4711
              fund-transfer-trusted-pre-fund-tx:
                summary: TRUSTED_PRE_FUND_TX - Per-transaction trusted pre-fund
                value:
                  type: TRUSTED_PRE_FUND_TX
                  partnerReference: PARTNER-REF-4711
      parameters:
        - name: profileId
          in: path
          description: Profile Id
          schema:
            type: integer
            description: Profile Id
            format: int64
            example: 123456789
          required: true
        - name: transferId
          in: path
          description: Transfer Id
          schema:
            type: integer
            description: Transfer Id
            format: int64
            example: 16521632
          required: true
      responses:
        '201':
          description: FundTransfer 201 response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FundingResponse'
              examples:
                fund-transfer-balance-completed:
                  summary: BALANCE - completed
                  value:
                    type: BALANCE
                    status: COMPLETED
                    balanceTransactionId: 987654321
                fund-transfer-balance-rejected-insufficient-funds:
                  summary: BALANCE - rejected (insufficient funds)
                  value:
                    type: BALANCE
                    status: REJECTED
                    errorCode: balance.insufficient-funds
                fund-transfer-trusted-pre-fund-bulk-completed:
                  summary: TRUSTED_PRE_FUND_BULK - completed
                  value:
                    type: TRUSTED_PRE_FUND_BULK
                    status: COMPLETED
                    partnerReference: PARTNER-REF-4711
        '400':
          description: InvalidRequestError 400 response
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/InvalidRequestErrorErrorPayload'
        '403':
          description: UnauthorisedAccessError 403 response
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/UnauthorisedAccessErrorErrorPayload'
        '404':
          description: EntityNotFoundError 404 response
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/EntityNotFoundErrorErrorPayload'
        '409':
          description: PaymentAlreadyExistsError 409 response
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/PaymentAlreadyExistsErrorErrorPayload'
        '422':
          description: UnsupportedOperationError 422 response
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/UnsupportedOperationErrorErrorPayload'
        '500':
          description: UnexpectedError 500 response
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/UnexpectedErrorErrorPayload'
      security:
        - UserToken: []
        - PersonalToken: []
      tags:
        - transfer
  /v3/quotes/{quoteId}:
    get:
      description: >-
        Get quote info by ID. If the quote has expired (not used to create a
        transfer within 30 minutes of quote creation), it will only be
        accessible for approximately 48 hours via this endpoint.
      summary: Retrieve a quote by ID
      operationId: quoteGetByQuoteId
      parameters:
        - name: quoteId
          in: path
          description: Quote Id. Can be Long or UUID format.
          schema:
            type: string
            description: Quote Id. Can be Long or UUID format.
            example: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf
          required: true
      responses:
        '200':
          description: Returns a Quote object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteResponse'
              examples:
                GetQuoteByIdV3OutputExample:
                  value:
                    id: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf
                    sourceCurrency: GBP
                    targetCurrency: USD
                    sourceAmount: 100
                    targetAmount: 129.24
                    payOut: BANK_TRANSFER
                    preferredPayIn: BANK_TRANSFER
                    rate: 1.30445
                    createdTime: '2019-04-05T13:18:58Z'
                    user: 55
                    profile: 101
                    rateType: FIXED
                    rateExpirationTime: '2019-04-08T13:18:57Z'
                    guaranteedTargetAmountAllowed: true
                    targetAmountAllowed: true
                    guaranteedTargetAmount: false
                    providedAmountType: SOURCE
                    pricingConfiguration:
                      fee:
                        type: OVERRIDE
                        variable: 0.011
                        fixed: 15.42
                    paymentOptions:
                      - disabled: false
                        estimatedDelivery: '2019-04-08T12:30:00Z'
                        formattedEstimatedDelivery: by Apr 8
                        estimatedDeliveryDelays:
                          - reason: sample reason
                        fee:
                          transferwise: 3.04
                          payIn: 0
                          discount: 2.27
                          partner: 0
                          total: 0.77
                        price:
                          priceSetId: 238
                          total:
                            type: TOTAL
                            label: Total fees
                            value:
                              amount: 0.77
                              currency: GBP
                              label: 0.77 GBP
                            explanation: {}
                          items:
                            - id: string
                              type: FEE
                              label: fee
                              value:
                                amount: 0
                                currency: GBP
                                label: 0 GBP
                              explanation:
                                plainText: string
                                markdown: string
                          deferredFee:
                            amount: 14.79
                            currency: BRL
                          calculatedOn:
                            unroundedAmountToConvert:
                              amount: 179.97342
                              currency: BRL
                        sourceAmount: 100
                        targetAmount: 129.24
                        sourceCurrency: GBP
                        targetCurrency: USD
                        payIn: BANK_TRANSFER
                        payOut: BANK_TRANSFER
                        allowedProfileTypes:
                          - PERSONAL
                          - BUSINESS
                        payInProduct: CHEAP
                        feePercentage: 0.0092
                        disabledReason:
                          code: string
                          message: string
                    status: PENDING
                    expirationTime: '2019-04-05T13:48:58Z'
                    notices:
                      - text: >-
                          You can have a maximum of 3 open transfers with a
                          guaranteed rate. After that, they'll be transferred
                          using the live rate. Complete or cancel your other
                          transfers to regain the use of guaranteed rate.
                        link: null
                        type: WARNING
      security:
        - UserToken: []
      tags:
        - quote
components:
  schemas:
    Address:
      type: object
      properties:
        firstLine:
          type: string
          maxLength: 250
          minLength: 1
          pattern: \S
          description: Payment originator address first line
          example: Salu tee 14
        city:
          type: string
          maxLength: 250
          description: Payment originator address city
          example: Tallinn
        stateCode:
          type: string
          description: >-
            Payment originator address state code. Required if address country
            code in (US, CA, BR, AU)
          example: NY
        countryCode:
          type: string
          maxLength: 2
          minLength: 1
          pattern: \S
          description: Payment originator address country code ISO 3166-1 alpha-2
          example: EE
        postCode:
          type: string
          maxLength: 250
          description: Originator address zip code
          example: '12112'
      required:
        - countryCode
        - firstLine
    AddressResponse:
      type: object
      properties:
        firstLine:
          type: string
          description: Payment originator address first line
          example: Salu tee 14
        city:
          type: string
          description: Payment originator address city
          example: Tallinn
        stateCode:
          type: string
          description: >-
            Payment originator address state code. Required if address country
            code in (US, CA, BR, AU)
          example: NY
        countryCode:
          type: string
          pattern: ^[A-Z]{2}$
          description: Payment originator address country code ISO 3166-1 alpha-2
          example: EE
        postCode:
          type: string
          description: Originator address zip code
          example: '12112'
    AdjustmentItem:
      type: object
      description: Adjustment representation
      properties:
        type:
          type: string
          description: Adjustment type
          example: DISCOUNT
        label:
          type: string
          description: User friendly adjustment label
          example: Loyalty discount
        value:
          $ref: '#/components/schemas/ItemValue'
        explanation:
          $ref: '#/components/schemas/Explanation'
    AmountBreakdown:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/AmountComponentType'
        amount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Amount component value
          format: decimal
          example: 100
      required:
        - amount
        - type
    AmountComponentType:
      type: string
      enum:
        - CASH
        - SPEND
    AmountType:
      type: string
      enum:
        - SOURCE
        - TARGET
    ApiCreationContext:
      type: object
      properties:
        flow:
          $ref: '#/components/schemas/ApiInitializationFlow'
        currency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: >-
            Used with BANK_DETAILS_TOP_UP. The ISO 4217 currency for which you
            are requesting bank details.
          example: GBP
        preferredPriceModel:
          type: string
          description: preferred price model for this quote
          example: SINGLE_STEP
        partnerId:
          type: string
          description: Identifier of the partner that created the quote
          example: partner-xyz-789
    ApiInitializationFlow:
      type: string
      enum:
        - BANK_DETAILS_TOP_UP
        - BANK_DETAILS_TOP_UP_FROM_SELF
        - BANK_DETAILS_TRUSTED_TOP_UP
        - FEATURE_CHARGE
        - TOP_UP
        - SCHEDULED_TRANSFER
        - PAY_LIKE_A_LOCAL
        - MOVE
        - SEND
        - OPS
        - CANCEL_CONVERSION
        - REVERSAL_CONVERSION
        - NONE
    ApiNoticeType:
      type: string
      description: Type of transfer notice
      enum:
        - INFO
        - WARNING
        - ERROR
    ApiPaymentMetadata:
      type: object
      properties:
        transferNature:
          type: string
          maxLength: 60
          description: Nature of the transfer
          example: MOVING_MONEY_BETWEEN_OWN_ACCOUNTS
        transferPurpose:
          type: string
          maxLength: 60
          description: Purpose of the transfer
          example: PURCHASE_OF_PROPERTY
        totalDeclaredVolume:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Total declared volume of the transfer
          format: decimal
          example: 5000
    ApiPricingConfiguration:
      type: object
      properties:
        fee:
          $ref: '#/components/schemas/PricingFee'
        externalFee:
          $ref: '#/components/schemas/ExternalFee'
    ApiQuoteType:
      type: string
      enum:
        - REGULAR
        - SPOT
        - RECEIVE
        - OPS
        - PRELIMINARY
        - FX_CONVERSION
    ApiTemplate:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ApiTemplateType'
        id:
          type: string
          description: ID of quote template.
          example: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf
      required:
        - id
        - type
    ApiTemplateType:
      type: string
      enum:
        - QUOTE
        - TRANSFER
    BalanceRequest:
      type: object
      properties:
        balanceId:
          type: integer
          description: ID of the balance to debit.
          format: int64
          example: 45678901
    BalanceResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/FundingStatus'
        errorCode:
          $ref: '#/components/schemas/FundingErrorCode'
        errorMessage:
          type: string
          description: >-
            Free-form human-readable explanation of a `REJECTED` outcome.
            Suitable for logging and developer-facing tools; not localised and
            not safe to surface to end users. May be absent.
          example: Transfer not found
        balanceTransactionId:
          type: integer
          description: ID of the balance transaction created to settle the transfer.
          format: int64
          example: 987654321
    BreakdownItem:
      type: object
      description: Price breakdown item
      properties:
        id:
          type: string
          description: Optional ID to uniquely identify item
          example: fee-item-1
        type:
          type: string
          description: Item type
          example: FEE
        label:
          type: string
          description: User friendly price item description
          example: fee
        value:
          $ref: '#/components/schemas/ItemValue'
        explanation:
          $ref: '#/components/schemas/Explanation'
        adjustments:
          $ref: '#/components/schemas/BreakdownItemAdjustment'
      required:
        - label
        - type
        - value
    BreakdownItemAdjustment:
      type: object
      description: Adjustment made to a price breakdown item
      properties:
        unadjustedValue:
          $ref: '#/components/schemas/ItemValue'
        items:
          type: array
          items:
            $ref: '#/components/schemas/AdjustmentItem'
          description: List of adjustments made to the breakdown item
    BusinessOriginator:
      type: object
      description: Data block to capture payment originator details for a business entity
      properties:
        reference:
          type: string
          minLength: 1
          pattern: \S
          description: >-
            Unique customer ID in your system. This allows us to uniquely
            identify each originator
          example: CST-2991992
        name:
          $ref: '#/components/schemas/Name'
        businessRegistrationCode:
          type: string
          maxLength: 150
          description: Payment originator business registry number / incorporation number
          example: 83920-546
        businessRegistrationDate:
          type: string
          description: >-
            Payment originator business registration date. Required for certain
            routes (e.g. to UGX)
          format: date
          example: '2020-01-15'
          x-temporal-constraint: pastOrPresent
        accountDetails:
          type: string
          description: Payment originator account number
          example: '23456789'
        address:
          $ref: '#/components/schemas/Address'
      required:
        - address
        - name
        - reference
    CalculatedOn:
      type: object
      properties:
        unroundedAmountToConvert:
          $ref: '#/components/schemas/UnroundedAmountToConvert'
      required:
        - unroundedAmountToConvert
    CreateThirdPartyTransferRequestContent:
      type: object
      properties:
        originalTransferId:
          type: string
          maxLength: 250
          minLength: 1
          pattern: \S
          description: >-
            Unique transfer ID in your system. We use this field also to perform
            idempotency check to avoid duplicate transfers in case of network
            failures or timeouts.
                You can only submit one transfer with same originalTransferId.
          example: '4711'
        targetAccount:
          type: integer
          description: Recipient account ID.
          format: int64
          example: 7839323
        sourceAccount:
          type: integer
          description: Refund recipient account ID.
          format: int64
          example: 1527389
        quote:
          type: string
          minLength: 1
          pattern: \S
          description: |-
            Quote ID. You can only create one transfer per one quote.
                You cannot use same quote ID to create multiple transfers.
          example: 3522e360-356a-4e37-9f99-94a21898d8fa
        details:
          $ref: '#/components/schemas/Details'
        originator:
          $ref: '#/components/schemas/Originator'
      required:
        - details
        - originalTransferId
        - originator
        - quote
        - targetAccount
    CreateThirdPartyTransferResponseContent:
      type: object
      description: Returns the originator transfer object.
      properties:
        id:
          type: integer
          description: Transfer ID
          format: int64
          example: 16521632
        user:
          type: integer
          description: Your user ID
          format: int64
          example: 4342275
        targetAccount:
          type: integer
          description: Recipient account ID
          format: int64
          example: 8692237
        sourceAccount:
          type: integer
          description: Refund recipient account ID
          format: int64
          example: 1527389
        quote:
          type: string
          description: Quote ID
          example: 8fa9be20-ba43-4b15-abbb-9424e1481050
        status:
          type: string
          description: >-
            Transfer current status. See [Tracking
            Transfers](https://docs.wise.com/guides/product/send-money/tracking-transfers)
            for all possible statuses.
          example: cancelled
        rate:
          type: number
          description: Exchange rate value
          format: decimal
          example: 0.89
        details:
          $ref: '#/components/schemas/DetailsResponse'
        originator:
          $ref: '#/components/schemas/OriginatorResponse'
        hasActiveIssues:
          type: boolean
          description: Are there any pending issues which stop executing the transfer?
          example: false
        sourceCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Source currency code
          example: EUR
        sourceValue:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Transfer amount in source currency
          format: decimal
          example: 0
        targetCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Target currency code
          example: GBP
        targetValue:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Transfer amount in target currency
          format: decimal
          example: 150
        originalTransferId:
          type: string
          description: >-
            Unique identifier randomly generated per transfer request by the
            calling client
          example: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
        created:
          type: string
          description: Timestamp when transfer was created.
          format: date-time
          example: '2025-10-29T12:28:16.000Z'
    DeferredFee:
      type: object
      properties:
        amount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Amount
          format: decimal
          example: 14.79
        currency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Uppercase ISO 4217 target currency code
          example: BRL
      required:
        - amount
        - currency
    Details:
      type: object
      properties:
        reference:
          type: string
          maxLength: 250
          description: >-
            Recipient will see this reference text in their bank statement.
            Maximum allowed characters depends on the currency route.
                     [Business Payments Tips](https://wise.com/help/articles/2932870/tips-for-paying-invoices) for a full list
          example: T12789649
    DetailsResponse:
      type: object
      properties:
        reference:
          type: string
          description: >-
            Recipient will see this reference text in their bank statement.
            Maximum allowed characters depends on the currency route.
                     [Business Payments Tips](https://wise.com/help/articles/2932870/tips-for-paying-invoices) for a full list
          example: T12789649
    EntityNotFoundErrorErrorPayload:
      type: string
      example: transfer.not-found
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
          description: Code to denote the reason a payment method is unavailable
          example: INSUFFICIENT_BALANCE
        message:
          type: string
          description: User friendly message to display when a method is unavailable
          example: You don't have enough funds in your account.
        arguments:
          type: array
          items:
            type: string
          description: List of arguments to provide more context on the error
    EstimatedDeliveryDelayResponse:
      type: object
      properties:
        reason:
          type: string
          description: Reason given for the estimated delivery delay
          example: sample reason
        label:
          type: string
          description: Message why there's a delay in the completion of the transaction
        link:
          $ref: '#/components/schemas/Link'
      required:
        - reason
    Explanation:
      type: object
      description: Additional information on a price breakdown item
      properties:
        plainText:
          type: string
          description: Textual information
          example: Our fee for this transfer
        markdown:
          type: string
          description: Formatted textual information
          example: '**Our fee** for this transfer'
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
          description: Additional links
      required:
        - plainText
    ExternalFee:
      type: object
      properties:
        fixed:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Fixed fee that is added on top
          format: decimal
          example: 5
      required:
        - fixed
    FeeBreakdownItemResponse:
      type: object
      description: Fee breakdown items and their respective sum total
      properties:
        id:
          type: string
          description: ID
          example: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf
        value:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: The amount for this fee
          format: decimal
          example: 0.77
        label:
          type: string
          description: User friendly fee item description
          example: Fee for this transfer
    FeesBreakdownItemsResponse:
      type: object
      description: Fee breakdown items and their respective sum total
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/FeeBreakdownItemResponse'
          description: Entries representing each item applied
        totalValue:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: The sum total of all the breakdown items included
          format: decimal
          example: 0.77
    FeesBreakdownResponse:
      type: object
      description: The fees breakdown applied to a given payment option
      properties:
        discounts:
          $ref: '#/components/schemas/FeesBreakdownItemsResponse'
    FeesResponse:
      type: object
      properties:
        transferwise:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: >-
            The fee from wise to be paid by the sender based on the current
            state of the quote.
          format: decimal
          example: 3.04
        payIn:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: >-
            The fee for this payment option, based on the product type of the
            payment option.
          format: decimal
          example: 0
        discount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Any discounts that have been applied to this quote for the user.
          format: decimal
          example: 2.27
        partner:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: >-
            If you have agreed to custom pricing, any fees added by you will be
            included here.
          format: decimal
          example: 0
        total:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: >-
            The total fees to be paid - use this figure when displaying fees on
            your app.
          format: decimal
          example: 0.77
        priceSetId:
          type: integer
          description: The ID of the price set used to calculate the fees
          format: int64
          example: 999
      required:
        - discount
        - partner
        - payIn
        - total
        - transferwise
    FundingErrorCode:
      type: string
      description: >-
        Machine-readable error code returned with `status: REJECTED`. Each
        member's documentation notes the `type` values that can produce it and
        the underlying HTTP status.

            This is the complete set of error codes the API can return today. Consumers should treat unknown codes defensively (new codes may be added); a wildcard fallback to a generic 'funding failed' UI is recommended.
      enum:
        - transfer.not-found
        - transfer.invalid-state
        - payment.exists
        - transfer.not-accessible-for-user
        - balance.unauthorised.missing-security-role
        - payment.not-found
        - invalid.request
        - unexpected.error
        - payment.option-unavailable
        - balance.payment-option-unavailable
        - balance.account-not-found
        - balance.account-inactive
        - balance.insufficient-funds
        - balance.no-balance-for-currency
        - balance.currency-unsupported
        - trustedprefundbulk.payment-option-unavailable
        - trustedprefundtx.payment-option-unavailable
    FundingRequest:
      oneOf:
        - $ref: '#/components/schemas/FundingRequestBalance'
        - $ref: '#/components/schemas/FundingRequestTrustedPreFundBulk'
        - $ref: '#/components/schemas/FundingRequestTrustedPreFund'
      discriminator:
        propertyName: type
        mapping:
          BALANCE: '#/components/schemas/FundingRequestBalance'
          TRUSTED_PRE_FUND_BULK: '#/components/schemas/FundingRequestTrustedPreFundBulk'
          TRUSTED_PRE_FUND_TX: '#/components/schemas/FundingRequestTrustedPreFund'
    FundingRequestBalance:
      allOf:
        - $ref: '#/components/schemas/BalanceRequest'
        - $ref: '#/components/schemas/FundingRequestMixin'
    FundingRequestMixin:
      type: object
      properties:
        type:
          type: string
      required:
        - type
    FundingRequestTrustedPreFund:
      allOf:
        - $ref: '#/components/schemas/TrustedPreFundRequest'
        - $ref: '#/components/schemas/FundingRequestMixin'
    FundingRequestTrustedPreFundBulk:
      allOf:
        - $ref: '#/components/schemas/TrustedPreFundRequest'
        - $ref: '#/components/schemas/FundingRequestMixin'
    FundingResponse:
      oneOf:
        - $ref: '#/components/schemas/FundingResponseBalance'
        - $ref: '#/components/schemas/FundingResponseTrustedPreFundBulk'
        - $ref: '#/components/schemas/FundingResponseTrustedPreFund'
      discriminator:
        propertyName: type
        mapping:
          BALANCE: '#/components/schemas/FundingResponseBalance'
          TRUSTED_PRE_FUND_BULK: '#/components/schemas/FundingResponseTrustedPreFundBulk'
          TRUSTED_PRE_FUND_TX: '#/components/schemas/FundingResponseTrustedPreFund'
    FundingResponseBalance:
      allOf:
        - $ref: '#/components/schemas/BalanceResponse'
        - $ref: '#/components/schemas/FundingResponseMixin'
    FundingResponseMixin:
      type: object
      properties:
        type:
          type: string
      required:
        - type
    FundingResponseTrustedPreFund:
      allOf:
        - $ref: '#/components/schemas/TrustedPreFundResponse'
        - $ref: '#/components/schemas/FundingResponseMixin'
    FundingResponseTrustedPreFundBulk:
      allOf:
        - $ref: '#/components/schemas/TrustedPreFundResponse'
        - $ref: '#/components/schemas/FundingResponseMixin'
    FundingStatus:
      type: string
      description: Outcome of a funding attempt.
      enum:
        - CREATED
        - COMPLETED
        - REJECTED
    FundingType:
      type: string
      enum:
        - POST
        - PRE
    GetThirdPartyTransferResponseContent:
      type: object
      description: Returns the originator transfer object.
      properties:
        id:
          type: integer
          description: Transfer ID
          format: int64
          example: 16521632
        user:
          type: integer
          description: Your user ID
          format: int64
          example: 4342275
        targetAccount:
          type: integer
          description: Recipient account ID
          format: int64
          example: 8692237
        sourceAccount:
          type: integer
          description: Refund recipient account ID
          format: int64
          example: 1527389
        quote:
          type: string
          description: Quote ID
          example: 8fa9be20-ba43-4b15-abbb-9424e1481050
        status:
          type: string
          description: >-
            Transfer current status. See [Tracking
            Transfers](https://docs.wise.com/guides/product/send-money/tracking-transfers)
            for all possible statuses.
          example: cancelled
        rate:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Exchange rate value
          format: decimal
          example: 0.89
        details:
          $ref: '#/components/schemas/DetailsResponse'
        originator:
          $ref: '#/components/schemas/OriginatorResponse'
        hasActiveIssues:
          type: boolean
          description: Are there any pending issues which stop executing the transfer?
          example: false
        sourceCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Source currency code
          example: EUR
        sourceValue:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Transfer amount in source currency
          format: decimal
          example: 0
        targetCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Target currency code
          example: GBP
        targetValue:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Transfer amount in target currency
          format: decimal
          example: 150
        originalTransferId:
          type: string
          description: >-
            Unique identifier randomly generated per transfer request by the
            calling client
          example: 54a6bc09-cef9-49a8-9041-f1f0c654cd88
        created:
          type: string
          description: Timestamp when transfer was created.
          format: date-time
          example: '2025-10-29T12:28:16.000Z'
    HighAmountResponse:
      type: object
      description: High amount transaction configuration
      properties:
        showFeePercentage:
          type: boolean
          description: Show or hide fee percentage
          example: true
        trackAsHighAmountSender:
          type: boolean
          description: Track sender
          example: false
        showEducationStep:
          type: boolean
          description: Show or hide education step
          example: true
        offerPrefundingOption:
          type: boolean
          description: Give prefunding as an option
          example: false
        overLimitThroughCs:
          type: boolean
          description: Give option to proceed with transfer above the limit via CS
          example: false
        overLimitThroughWiseAccount:
          type: boolean
          description: Give option to proceed with transfer via balance conversions
          example: false
    InitializationType:
      type: string
      enum:
        - HAT_DEFAULT
        - DEFAULT
    InvalidRequestErrorErrorPayload:
      type: string
      example: transfer.not-found
    ItemValue:
      type: object
      description: Price item value
      properties:
        amount:
          type: number
          description: Amount
          format: decimal
          example: 0.77
        currency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Uppercase ISO 4217 target currency code
          example: GBP
        label:
          type: string
          description: User friendly item value representation
          example: 0.77 GBP
      required:
        - amount
        - currency
        - label
    LegalEntityType:
      type: string
      enum:
        - PERSONAL
        - BUSINESS
    LegalEntityTypeResponse:
      type: string
      enum:
        - PRIVATE
        - BUSINESS
    Link:
      type: object
      description: Link representation
      properties:
        label:
          type: string
          description: Link label
          example: Learn more
        url:
          type: string
          description: Link url
          example: https://wise.com/help
      required:
        - label
        - url
    Name:
      type: object
      description: Data block to capture the originator name details
      properties:
        givenName:
          type: string
          description: Payment originator first name
          example: John
        middleNames:
          type: array
          items:
            type: string
          maxItems: 10
          description: Payment originator middle name(s)
        familyName:
          type: string
          description: Payment originator family name
          example: Godspeed
        patronymicName:
          type: string
          description: Payment originator patronymic name
          example: Fitz
        fullName:
          type: string
          description: Payment originator full legal name
          example: John Godspeed
    NameResponse:
      type: object
      description: Data block to capture the originator name details
      properties:
        givenName:
          type: string
          description: Payment originator first name
          example: John
        middleNames:
          type: array
          items:
            type: string
          description: Payment originator middle name(s)
          example:
            - Fitz
            - John
        familyName:
          type: string
          description: Payment originator family name
          example: Godspeed
        patronymicName:
          type: string
          description: Payment originator patronymic name
          example: Fitz
        fullName:
          type: string
          description: Payment originator full legal name
          example: John Godspeed
    NoticeResponse:
      type: object
      properties:
        code:
          type: string
          example: TRANSFER_LIMIT_REACHED
        text:
          type: string
          description: Notice message
          example: >-
            You can have a maximum of 3 open transfers with a guaranteed rate.
            After that, they'll be transferred using the live rate. Complete or
            cancel your other transfers to regain the use of guaranteed rate.
        link:
          type: string
          description: Notice link
          example: https://wise.com/help
        type:
          $ref: '#/components/schemas/ApiNoticeType'
      required:
        - type
    Originator:
      oneOf:
        - $ref: '#/components/schemas/OriginatorPRIVATE'
        - $ref: '#/components/schemas/OriginatorBUSINESS'
      discriminator:
        propertyName: legalEntityType
        mapping:
          PRIVATE: '#/components/schemas/OriginatorPRIVATE'
          BUSINESS: '#/components/schemas/OriginatorBUSINESS'
    OriginatorBUSINESS:
      allOf:
        - $ref: '#/components/schemas/BusinessOriginator'
        - $ref: '#/components/schemas/OriginatorMixin'
    OriginatorMixin:
      type: object
      properties:
        legalEntityType:
          type: string
      required:
        - legalEntityType
    OriginatorPRIVATE:
      allOf:
        - $ref: '#/components/schemas/PrivateOriginator'
        - $ref: '#/components/schemas/OriginatorMixin'
    OriginatorResponse:
      type: object
      properties:
        legalEntityType:
          $ref: '#/components/schemas/LegalEntityTypeResponse'
        reference:
          type: string
          description: >-
            Unique customer ID in your system. This allows us to uniquely
            identify each originator
          example: CST-2991992
        name:
          $ref: '#/components/schemas/NameResponse'
        dateOfBirth:
          type: string
          description: Payment originator date of birth
          format: date
          example: '1977-07-01'
        nationality:
          type: string
          description: >-
            Payment originator nationality. Required for certain routes (e.g. to
            UGX)
          example: EE
        accountDetails:
          type: string
          description: Payment originator account number
          example: '23456789'
        address:
          $ref: '#/components/schemas/AddressResponse'
        businessRegistrationCode:
          type: string
          description: Payment originator business registry number / incorporation number
          example: 83920-546
        businessRegistrationDate:
          type: string
          description: >-
            Payment originator business registration date. Required for certain
            routes (e.g. to UGX)
          format: date
          example: '2020-01-15'
    PaymentAlreadyExistsErrorErrorPayload:
      type: string
      example: transfer.not-found
    PaymentOptionResponse:
      type: object
      properties:
        disabled:
          type: boolean
          description: Whether this option is enabled or not for this quote.
          example: false
        estimatedDelivery:
          type: string
          description: >-
            The estimated delivery time for this combination of payIn and payOut
            methods, assuming payIn is performed now.
          format: date-time
          example: '2019-04-08T12:30:00Z'
        formattedEstimatedDelivery:
          type: string
          description: A string to display to users for the estimated delivery date.
          example: by Apr 8
        estimatedDeliveryDelays:
          type: array
          items:
            $ref: '#/components/schemas/EstimatedDeliveryDelayResponse'
          description: List of estimated delays
        fee:
          $ref: '#/components/schemas/FeesResponse'
        feeBreakdown:
          $ref: '#/components/schemas/FeesBreakdownResponse'
        price:
          $ref: '#/components/schemas/PriceResponse'
        sourceAmount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Source amount
          format: decimal
          example: 100
        targetAmount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Target amount
          format: decimal
          example: 129.24
        sourceCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Uppercase ISO 4217 source currency code
          example: GBP
        targetCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Uppercase ISO 4217 target currency code
          example: USD
        payIn:
          type: string
          description: Payin method
          example: BANK_TRANSFER
        payOut:
          type: string
          description: Payout method
          example: BANK_TRANSFER
        disabledReason:
          $ref: '#/components/schemas/ErrorResponse'
        allowedProfileTypes:
          type: array
          items:
            $ref: '#/components/schemas/ProfileType'
          description: List of allowed profile types
        payInProduct:
          type: string
          description: Payin method category
          example: CHEAP
        feePercentage:
          type: number
          description: Percentage of the total amount that represents the fee
          format: decimal
          example: 0.0092
      required:
        - allowedProfileTypes
        - disabled
        - fee
        - formattedEstimatedDelivery
        - payIn
        - payOut
        - sourceAmount
        - sourceCurrency
        - targetAmount
        - targetCurrency
    PaymentPreferenceResponse:
      type: object
      properties:
        id:
          type: string
          description: Payment Preferences identifier
          example: pref-001
        methodGroup:
          type: string
          description: Payment preferences granular payin method type
          example: BANK_TRANSFER
        method:
          type: string
          description: Payment preferences pricing variant
          example: STANDARD
        disabled:
          type: boolean
          description: Whether this option is enabled or not for this quote.
          example: false
        estimatedDelivery:
          type: string
          description: >-
            The estimated delivery time for this combination of payIn and payOut
            methods, assuming payIn is performed now.
          format: date-time
          example: '2019-04-08T12:30:00Z'
        formattedEstimatedDelivery:
          type: string
          description: A string to display to users for the estimated delivery date.
          example: by Apr 8
        estimatedDeliveryDelays:
          type: array
          items:
            $ref: '#/components/schemas/EstimatedDeliveryDelayResponse'
          description: List of estimated delays
        fee:
          $ref: '#/components/schemas/FeesResponse'
        feeBreakdown:
          $ref: '#/components/schemas/FeesBreakdownResponse'
        price:
          $ref: '#/components/schemas/PriceResponse'
        sourceAmount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Source amount
          format: decimal
          example: 100
        targetAmount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Target amount
          format: decimal
          example: 129.24
        sourceCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Uppercase ISO 4217 source currency code
          example: GBP
        targetCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Uppercase ISO 4217 target currency code
          example: USD
        payIn:
          type: string
          description: Payin method
          example: BANK_TRANSFER
        payOut:
          type: string
          description: Payout method
          example: BANK_TRANSFER
        disabledReason:
          $ref: '#/components/schemas/ErrorResponse'
        allowedProfileTypes:
          type: array
          items:
            $ref: '#/components/schemas/ProfileType'
          description: List of allowed profile types
        payInProduct:
          type: string
          description: Payin method category
          example: CHEAP
        feePercentage:
          type: number
          description: Percentage of the total amount that represents the fee
          format: decimal
          example: 0.0092
      required:
        - method
        - methodGroup
    PriceResponse:
      type: object
      properties:
        priceSetId:
          type: integer
          description: The ID of the price set used to calculate the price
          format: int64
          example: 238
        total:
          $ref: '#/components/schemas/BreakdownItem'
        items:
          type: array
          items:
            $ref: '#/components/schemas/BreakdownItem'
          description: Entries representing each price item applied
        priceDecisionReferenceId:
          type: string
          description: >-
            The reference ID of the price decision made while calculating the
            price
          example: abc123-decision-ref
        deferredFee:
          $ref: '#/components/schemas/DeferredFee'
        calculatedOn:
          $ref: '#/components/schemas/CalculatedOn'
      required:
        - items
        - total
    PricingFee:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PricingFeeType'
        variable:
          type: number
          description: Variable percentage fee. For example, the value 0.009 means 0.9% fee
          format: decimal
          example: 0.011
        fixed:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Fixed fee that is added on top
          format: decimal
          example: 15.42
      required:
        - fixed
        - type
        - variable
    PricingFeeType:
      type: string
      enum:
        - OVERRIDE
    PrivateOriginator:
      type: object
      properties:
        reference:
          type: string
          minLength: 1
          pattern: \S
          description: >-
            Unique customer ID in your system. This allows us to uniquely
            identify each originator
          example: CST-2991992
        name:
          $ref: '#/components/schemas/Name'
        dateOfBirth:
          type: string
          description: Payment originator date of birth
          format: date
          example: '1977-07-01'
          x-temporal-constraint: past
        nationality:
          type: string
          description: >-
            Payment originator nationality. Required for certain routes (e.g. to
            UGX)
          example: EE
        accountDetails:
          type: string
          description: Payment originator account number
          example: '23456789'
        address:
          $ref: '#/components/schemas/Address'
      required:
        - address
        - dateOfBirth
        - name
        - reference
    ProfileType:
      type: string
      enum:
        - PERSONAL
        - BUSINESS
    QuoteRequest:
      type: object
      properties:
        sourceCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Source (sending) currency code.
          example: GBP
        targetCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Target (receiving) currency code.
          example: USD
        sourceAmount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: >-
            Amount in source currency. Either sourceAmount or targetAmount is
            required, never both
          format: decimal
          example: 100
        targetAmount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Amount in target currency.
          format: decimal
          example: 129.24
        targetAccount:
          type: integer
          description: >-
            Optional. This is the ID of transfer recipient, found in response
            from POST v1/accounts (recipient creation).
                If provided can be used as an alternative to [updating the quote.](https://docs.wise.com/api-reference/quote/quoteupdate)
          format: int64
          example: 12345
        payOut:
          type: string
          description: |-
            Optional. Preferred payout method. Default value is `BANK_TRANSFER`.
                Examples of other accepted values include `BALANCE`, `SWIFT`, `SWIFT_OUR`, `ALIPAY`, and `INTERAC`.
          example: BANK_TRANSFER
        payOutId:
          type: string
          description: Payout identifier
          example: pref-001
        preferredPayIn:
          type: string
          maxLength: 30
          description: >-
            Preferred payin method. Use `BANK_TRANSFER` to return this method at
            the top of the response's results.
          example: BANK_TRANSFER
        paymentMetadata:
          $ref: '#/components/schemas/ApiPaymentMetadata'
        pricingConfiguration:
          $ref: '#/components/schemas/ApiPricingConfiguration'
        guaranteedTargetAmount:
          type: boolean
          description: If quote is a guaranteed target amount quote
          example: false
        preferredPayInId:
          type: string
          description: Preferred payment-preference id
          example: pref-001
        payInId:
          type: string
          description: Payin identifier
          example: pay-001
        payInMethod:
          type: string
          description: Payin method
          example: BANK_TRANSFER
        payOutCountry:
          type: string
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          description: Uppercase ISO 3166 alpha-2 code of payout country
          example: US
        payInCountry:
          type: string
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          description: Uppercase ISO 3166 alpha-2 code of payin country
          example: GB
        discountCode:
          type: string
          maxLength: 32
          description: Discount code to be applied
          example: DISC10
        referralCode:
          type: string
          maxLength: 100
          description: Referral code to be applied
          example: REF123
        contactId:
          type: string
          description: Contact ID of the recipient
          example: contact-001
        targetAccountLegalEntityType:
          $ref: '#/components/schemas/LegalEntityType'
        targetAccountDetailsOwnedByProfile:
          type: boolean
          description: >-
            Mark if target account is owned by the sender. Used when
            targetAccount is not provided
          example: false
        funding:
          $ref: '#/components/schemas/FundingType'
        type:
          $ref: '#/components/schemas/ApiQuoteType'
        expectedFulfillmentTime:
          type: string
          description: >-
            The time we expect fulfillment to happen (ISO 8601). Used for
            estimating delivery
          format: date-time
          example: '2019-04-08T12:30:00Z'
        creationContext:
          $ref: '#/components/schemas/ApiCreationContext'
        template:
          $ref: '#/components/schemas/ApiTemplate'
        amountBreakdown:
          type: array
          items:
            $ref: '#/components/schemas/AmountBreakdown'
          description: >-
            A breakdown of the different components which make up the source
            amount. Used in the context of specific products (e.g. Pix Saque and
            Troco).
        initializationType:
          $ref: '#/components/schemas/InitializationType'
        externalRate:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Used by partners. Usually provided via swift message
          format: decimal
          example: 1.30445
      required:
        - sourceCurrency
        - targetCurrency
    QuoteResponse:
      type: object
      properties:
        id:
          type: string
          description: ID of this quote (GUID format).
          example: 11144c35-9fe8-4c32-b7fd-d05c2a7734bf
        sourceCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Source (sending) currency code.
          example: GBP
        targetCurrency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Target (receive) currency code.
          example: USD
        sourceAmount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Amount in source currency to send.
          format: decimal
          example: 100
        targetAmount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Amount in target currency to be received by the recipient.
          format: decimal
          example: 129.24
        payOut:
          type: string
          description: >-
            Mechanism we use to deliver the transfer. Not usually of interest to
            the user.
          example: BANK_TRANSFER
        preferredPayInId:
          type: string
          description: Preferred pay-in method.
          example: pref-001
        rate:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Exchange rate value used for the conversion.
          format: decimal
          example: 1.30445
        createdTime:
          type: string
          description: Quote created timestamp.
          format: date-time
          example: '2019-04-05T13:18:58Z'
        user:
          type: integer
          description: User ID who created the quote.
          format: int64
          example: 55
        profile:
          type: integer
          description: Personal or business profile ID.
          format: int64
          example: 101
        rateType:
          $ref: '#/components/schemas/RateType'
        rateExpirationTime:
          type: string
          description: Time the locked rate will expire.
          format: date-time
          example: '2019-04-08T13:18:57Z'
        guaranteedTargetRateFluctuationBuffer:
          type: number
          description: Rate buffer amount for non-fixed guaranteed target amount quote
          format: decimal
          example: 0.005
        guaranteedTargetAmountAllowed:
          type: boolean
          description: Whether guaranteed target amount is allowed.
          example: true
        targetAmountAllowed:
          type: boolean
          description: Whether target amount is allowed.
          example: true
        guaranteedTargetAmount:
          type: boolean
          description: Whether the target amount is guaranteed.
          example: false
        providedAmountType:
          $ref: '#/components/schemas/AmountType'
        pricingConfiguration:
          $ref: '#/components/schemas/ApiPricingConfiguration'
        paymentOptions:
          type: array
          items:
            $ref: '#/components/schemas/PaymentOptionResponse'
          description: List of payment options
        status:
          $ref: '#/components/schemas/QuoteStatus'
        expirationTime:
          type: string
          description: Time (ISO 8601) when quote will expire
          format: date-time
          example: '2019-04-05T13:48:58Z'
        discountCode:
          type: string
          description: Discount code applied
          example: DISC10
        referralCode:
          type: string
          description: Referral code applied
          example: REF123
        targetAccount:
          type: integer
          description: Account ID of the recipient
          format: int64
          example: 101
        contactId:
          type: string
          description: Id of the contact used to create the quote
          example: contact-001
        payInCountry:
          type: string
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          description: Uppercase ISO 3166 alpha-2 code of payin country
          example: GB
        payOutCountry:
          type: string
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          description: Uppercase ISO 3166 alpha-2 code of payout country
          example: US
        funding:
          $ref: '#/components/schemas/FundingType'
        type:
          $ref: '#/components/schemas/ApiQuoteType'
        payInId:
          type: string
          description: Payin identifier
          example: pay-001
        payInMethod:
          type: string
          description: Payin method
          example: BANK_TRANSFER
        preferredPayIn:
          type: string
          description: When present, will be used for sorting payment options in the quote
          example: BANK_TRANSFER
        paymentPreferences:
          type: array
          items:
            $ref: '#/components/schemas/PaymentPreferenceResponse'
          description: List of payment preferences
        notices:
          type: array
          items:
            $ref: '#/components/schemas/NoticeResponse'
          description: List of notices related to the quote
        transferFlowConfig:
          $ref: '#/components/schemas/TransferFlowConfigResponse'
        rateTimestamp:
          type: string
          description: Time (ISO 8601) when rate was fetched
          format: date-time
          example: '2019-04-05T13:18:57Z'
        targetAccountDetailsOwnedByProfile:
          type: boolean
          description: Denotes whether the target account is owned by the profile
          example: false
        targetAccountLegalEntityType:
          $ref: '#/components/schemas/LegalEntityType'
        clientId:
          type: string
          description: client Id for this quote
          example: client-001
        expectedFulfillmentTime:
          type: string
          description: Time (ISO 8601) that fulfillment is expected
          format: date-time
          example: '2019-04-08T12:30:00Z'
        creationContext:
          $ref: '#/components/schemas/ApiCreationContext'
        paymentMetadata:
          $ref: '#/components/schemas/ApiPaymentMetadata'
        amountBreakdown:
          type: array
          items:
            $ref: '#/components/schemas/AmountBreakdown'
          description: >-
            A breakdown of the different components which make up the source
            amount
      required:
        - createdTime
        - expirationTime
        - notices
        - payOut
        - paymentOptions
        - providedAmountType
        - rate
        - rateExpirationTime
        - rateType
        - sourceCurrency
        - status
        - targetCurrency
    QuoteStatus:
      type: string
      enum:
        - PENDING
        - ACCEPTED
        - FUNDED
        - EXPIRED
    RateType:
      type: string
      enum:
        - FIXED
        - FLOATING
    TransferFlowConfigResponse:
      type: object
      properties:
        highAmount:
          $ref: '#/components/schemas/HighAmountResponse'
        hiddenPaymentOptions:
          type: array
          items:
            type: string
          description: Hide payment options
    TrustedPreFundRequest:
      type: object
      properties:
        partnerReference:
          type: string
          description: >-
            The transaction/payment identifier in your system. Required for the
            Cross Currency Bulk Settlement model.
          example: PARTNER-REF-4711
        status:
          type: string
          description: Internal status field.
          example: COMPLETE
    TrustedPreFundResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/FundingStatus'
        errorCode:
          $ref: '#/components/schemas/FundingErrorCode'
        errorMessage:
          type: string
          description: >-
            Free-form human-readable explanation of a `REJECTED` outcome.
            Suitable for logging and developer-facing tools; not localised and
            not safe to surface to end users. May be absent.
          example: Transfer not found
        partnerReference:
          type: string
          description: Partner-supplied reference echoed back.
          example: PARTNER-REF-4711
    UnauthorisedAccessErrorErrorPayload:
      type: string
      example: transfer.not-found
    UnexpectedErrorErrorPayload:
      type: string
      example: transfer.not-found
    UnroundedAmountToConvert:
      type: object
      properties:
        amount:
          type: number
          minimum: 0
          exclusiveMinimum: 0
          description: Amount
          format: decimal
          example: 179.97342
        currency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          description: Uppercase ISO 4217 target currency code
          example: BRL
      required:
        - amount
        - currency
    UnsupportedOperationErrorErrorPayload:
      type: string
      example: transfer.not-found
  securitySchemes:
    BasicAuth:
      type: http
      description: >
        Basic Authentication using your Client ID and Client Secret as the
        username and password.

        Client credentials are provided by Wise when your partnership begins.
        See [Getting Started](/guides/developer) for details.
      scheme: Basic
    ClientCredentialsToken:
      type: oauth2
      description: >-
        Application-level token for partner operations that don't require a
        specific user context, such as bulk settlement and card spend controls.
            See [create an OAuth token](/api-reference/oauth-token) for details.
      flows:
        clientCredentials:
          tokenUrl: /oauth/token
          refreshUrl: /oauth/token
          scopes: {}
    PersonalToken:
      type: http
      description: >
        Personal API Token for individual personal or small business users.

        Generated from Wise.com > Settings > Integrations and Tools > API
        tokens.

        Has limited API access compared to OAuth tokens (PSD2 restrictions apply
        for EU/UK users).
      scheme: Bearer
      bearerFormat: JWT
    UserToken:
      type: oauth2
      description: |2-

                User Access Token for making API calls on behalf of a Wise user.

                Can be obtained via two OAuth 2.0 flows:
                - **registration_code grant**: For partners creating users via API
                - **authorization_code grant**: For partners using Wise's authorization page

                Access tokens are valid for 12 hours and can be refreshed using a refresh token.
                See [create an OAuth token](/api-reference/oauth-token) for details.
      flows:
        authorizationCode:
          authorizationUrl: /oauth/authorize
          tokenUrl: /oauth/token
          refreshUrl: /oauth/token
          scopes: {}
        x-registrationCode:
          authorizationUrl: /oauth/authorize
          tokenUrl: /oauth/token
          refreshUrl: /oauth/token
          scopes: {}
