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

# List international transfer requirements

> OAuth scope: `international_transfer.write`

Creates a new international transfer.

<Info>
This endpoint is still in **beta**. Please get in touch with our team if you have any question or feedback: [here](https://getqonto.atlassian.net/servicedesk/customer/portals).
</Info>

The first time you will call this endpoint, you will have to provide:

* `quote_id`: The ID of the quote you got in the previous step
* `target_account_id`: The account\_id of the beneficiary, obtained after creating or updating the beneficiary

Then, you will receive a response containing the requirements the user must provide to properly configure the transfer.
The `requirements` field is an array, with only one item in it (or 0 if everything is already configured).

Like the beneficiary requirements endpoint, you will retrieve all fields that are required to complete the transfer, so
you will have to collect the required information from the user.

For instance, if the requirements look like this:

```json theme={null}
{
  "requirements": [
    {
      "type": "transfer",
      "fields": [
        {
          "name": "Transfer purpose",
          "group": [{"key":  "reference", ...}]
        }
      ]
    }
  ]
}
```

Then, you will have to collect the `reference` information.

When you collect the required information, you may be asked to call again this endpoint (boolean
`refresh_requirements_on_change`). You have to add the `key` of the field and the `value` (provided by the user)
in the `details` object.

```json theme={null}
{
  "quote_id": "quote_1234567890",
  "target_account_id": "beneficiary_1234567890",
  "details": {
    "reference": "My first payment"
  }
}
```

<Info>
  If the field key has a dot (.) in it, it means that the field is a nested object.
  Example: `source.funds` means that the field is an object with a `funds` property, you should call our api
  with the following payload:
</Info>

```json theme={null}
{
  "quote_id": "quote_1234567890",
  "target_account_id": "beneficiary_1234567890",
  "details": {
    "source": {
      "funds": "My funds"
    }
  }
}
```

You have to iterate over this endpoint until you have collected all the required information.


## OpenAPI

````yaml post /v2/international/transfers/requirements
openapi: 3.1.1
info:
  version: v2
  title: Qonto
servers:
  - url: https://thirdparty.qonto.com
    description: Production URL
  - url: https://thirdparty-sandbox.staging.qonto.co
    description: Sandbox URL
security:
  - OAuth:
      - organization.read
      - membership.read
      - membership.write
      - attachment.write
      - internal_transfer.write
      - payment.write
      - supplier_invoice.write
      - supplier_invoice.read
      - client_invoices.read
      - client_invoice.write
      - client.read
      - client.write
      - product.read
      - product.write
      - request_review.write
      - request_review.read
      - team.read
      - team.write
      - request_transfers.write
      - insurance_contract.read
      - insurance_contract.write
      - card.read
      - card.write
      - bank_account.write
      - beneficiary.trust
      - webhook
      - payment_link.write
      - payment_link.read
      - sepa_direct_debit.read
      - sepa_direct_debit.write
      - terminal.read
      - terminal.write
  - SecretKey: []
paths:
  /v2/international/transfers/requirements:
    parameters:
      - $ref: '#/components/parameters/X-Qonto-Staging-Token'
    post:
      tags:
        - International Transfers
      summary: List international transfer requirements
      description: >-
        OAuth scope: `international_transfer.write`


        Creates a new international transfer.


        <Info>

        This endpoint is still in **beta**. Please get in touch with our team if
        you have any question or feedback:
        [here](https://getqonto.atlassian.net/servicedesk/customer/portals).

        </Info>
      operationId: listInternationalTransferRequirements
      parameters:
        - in: header
          name: Accept-Language
          description: >-
            Language to be used to display the requirements. Languages
            supported: en, it, es, de, fr, pt
          required: false
          schema:
            type: string
            example: en
            default: en
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ListInternationalTransferRequirementsRequest
      responses:
        '200':
          description: Returns the list of international transfer's requirements
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternationalTransfersRequirementsPayload'
        '400':
          $ref: '#/components/responses/400-Bad-request'
        '401':
          $ref: '#/components/responses/401-Unauthorized'
        '403':
          $ref: '#/components/responses/403-Forbidden'
        '404':
          $ref: '#/components/responses/404-Not-Found'
        '500':
          $ref: '#/components/responses/500-Internal-Server-Error'
      security:
        - OAuth:
            - international_transfer.write
components:
  parameters:
    X-Qonto-Staging-Token:
      name: X-Qonto-Staging-Token
      in: header
      description: >-
        Required only for Sandbox API requests; to get one, please sign up to
        the [Developer Portal](https://developers.qonto.com/).
      schema:
        type: string
  schemas:
    ListInternationalTransferRequirementsRequest:
      type: object
      properties:
        quote_id:
          type: string
          format: uuid
          description: The quote unique identifier
          example: 0196edb0-9b6e-7554-9864-d111285a0a44
        target_account_id:
          type: string
          description: >-
            The target account id of the beneficiary, obtained after the
            beneficiary is created or updated
          example: 0196edb0-9b6e-7554-9864-d111285a0a44
        details:
          type: object
          description: Data collected from the user to create a transfer.
          example:
            reference: 'Payment for invoice #123'
            sourceOfFunds: verification.source.of.funds.other
            sourceOfFundsOther: Trust funds
      required:
        - quote_id
        - target_account_id
        - details
    InternationalTransfersRequirementsPayload:
      type: object
      properties:
        requirements:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                description: The type of the current set of requirements
                example: transfer
              fields:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      description: Field display name
                      example: Transfer purpose
                    group:
                      type: array
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: >
                              Key to be used in the payloads when asking for
                              additional requirements or creating a beneficiary.

                              For example, if the user inputted 12345 for this
                              group, it should appear in the payload as
                              accountNumber: "12345".
                            example: transferPurpose
                          name:
                            type: string
                            description: Display name of the field group
                            example: Transfer purpose
                          type:
                            type: string
                            enum:
                              - text
                              - select
                              - radio
                              - date
                            description: Type of the field group
                            example: text
                          refresh_requirements_on_change:
                            type: boolean
                            description: >-
                              If true, new requirements should be asked for when
                              the value of this group changes.
                            example: false
                          required:
                            type: boolean
                            description: If true, this field is required.
                            example: true
                          display_format:
                            type: string
                            description: Format used to display the data
                          example:
                            type: string
                            description: >-
                              Example of the data to be inputted (as placeholder
                              for instance)
                            example: '123456789'
                          min_length:
                            type: number
                            description: Minimum length of the field
                            example: 8
                          max_length:
                            type: number
                            description: Maximum length of the field
                            example: 20
                          validation_regexp:
                            type: string
                            description: Regular expression used to validate the field
                            example: ^[0-9]{8,20}$
                          values_allowed:
                            type: array
                            items:
                              type: object
                              properties:
                                key:
                                  type: string
                                  description: The key expected (to be sent in the API)
                                  example: USD
                                value:
                                  type: string
                                  description: >-
                                    The value of the option (to be shown to the
                                    user)
                                  example: US Dollar
                              required:
                                - key
                                - value
                        required:
                          - key
                          - name
                          - type
                          - refresh_requirements_on_change
                          - required
                  required:
                    - name
                    - group
            required:
              - type
              - fields
    BadRequestResponseBody:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/BadRequestError'
      required:
        - errors
    UnauthorizedResponseBody:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/UnauthorizedError'
      required:
        - errors
    ForbiddenResponseBody:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ForbiddenError'
      required:
        - errors
    NotFoundError:
      type: object
      properties:
        code:
          type: string
          description: Error code.
        detail:
          type: string
          description: Human readable error that explains error `code`.
        source:
          type: object
          properties:
            parameter:
              type: string
              description: The parameter that causes the error.
      required:
        - code
        - detail
      x-examples:
        Object not found:
          code: not_found
          detail: Object not found
          source:
            parameter: id
    BadRequestError:
      type: object
      properties:
        code:
          type: string
          description: Error code.
        detail:
          type: string
          description: Human readable error that explains error `code`.
        source:
          type: object
          properties:
            pointer:
              type: string
              description: >-
                The property in the request body that caused the error
                (optional).
            parameter:
              type: string
              description: The query parameter that caused the error (optional).
      required:
        - code
        - detail
      x-examples:
        Authorization field missing:
          code: bad_request
          detail: Authorization field missing
    UnauthorizedError:
      type: object
      properties:
        code:
          type: string
          description: Error code.
        detail:
          type: string
          description: Human readable error that explains error `code`.
      required:
        - code
        - detail
      x-examples:
        Invalid credentials:
          code: unauthorized
          detail: Invalid credentials
    ForbiddenError:
      type: object
      properties:
        code:
          type: string
          description: Error code.
        detail:
          type: string
          description: Human readable error that explains error `code`.
      required:
        - code
        - detail
      x-examples:
        Insufficient permissions:
          code: forbidden
          detail: User does not have sufficient permissions for this action.
  responses:
    400-Bad-request:
      description: Returns a bad request error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequestResponseBody'
          examples:
            Authorization field missing:
              value:
                errors:
                  - code: bad_request
                    detail: Authorization field missing
    401-Unauthorized:
      description: Returns an unauthorized error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UnauthorizedResponseBody'
          examples:
            authorization_header_missing:
              value:
                errors:
                  - code: authorization_header_missing
                    detail: authorization header missing
            authorization_token_invalid:
              value:
                errors:
                  - code: authorization_token_invalid
                    detail: authorization token invalid
    403-Forbidden:
      description: Returns a forbidden error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ForbiddenResponseBody'
          examples:
            Insufficient permissions:
              value:
                errors:
                  - code: forbidden
                    detail: User does not have sufficient permissions for this action.
    404-Not-Found:
      description: Returns a not found error.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  $ref: '#/components/schemas/NotFoundError'
    500-Internal-Server-Error:
      description: Returns an internal server error.
  securitySchemes:
    OAuth:
      type: oauth2
      description: >
        Bearer authorization header: `Bearer <token>`, where `<token>` is the
        access token received from the authorization server at the end of the
        [OAuth 2.0
        flow](/get-started/business-api/authentication/oauth/oauth-flow).
      flows:
        authorizationCode:
          refreshUrl: https://oauth.qonto.com/oauth2/token
          authorizationUrl: https://oauth.qonto.com/oauth2/auth
          scopes:
            attachment.read: Retrieve attachments
            attachment.write: Upload attachments and remove attachments from transactions
            bank_account.write: Create, update and close bank accounts
            beneficiary.trust: Trust SEPA beneficiaries
            card.read: Retrieve cards
            card.write: Create or update cards
            client.read: Retrieve clients
            client.write: Create clients
            client_invoice.write: Create client invoices
            client_invoices.read: Retrieve client invoices and credit notes
            einvoicing.read: Retrieve e-invoicing settings
            embed_auth_link.write: Create Embed auth links
            insurance_contract.read: Retrieve insurance contracts
            insurance_contract.write: Create and update insurance contracts
            internal_transfer.write: >-
              Create internal transfers (between 2 Qonto accounts of the same
              organization)
            international_transfer.write: Create international transfers
            membership.read: Retrieve the authentified membership
            membership.write: Invite team members
            offline_access: Retrieve a refresh token
            organization.read: >-
              Retrieve organization, bank accounts, transactions, transfers,
              beneficiaries, labels, memberships, requests & statements
            payment.write: Create external transfers and untrust beneficiaries
            payment_link.read: >-
              Retrieve payment links, their payments, and the available payment
              methods
            payment_link.write: >-
              Connect to the payment links provider, create and deactivate
              payment links
            product.read: Retrieve products
            product.write: Create products
            request_cards.write: Create card requests
            request_review.write: Approve or decline requests
            request_transfers.write: Create transfer requests
            sepa_direct_debit.read: View SEPA Direct Debit payments
            sepa_direct_debit.write: Manage SEPA Direct Debit payments
            supplier_invoice.read: Retrieve supplier invoices
            supplier_invoice.write: Create supplier invoices
            team.read: Retrieve teams
            team.write: Create teams
            terminal.read: View your payment terminals
            terminal.write: Configure your terminals and initiate payments
            webhook: >-
              Receive a notification each time a particular event occurs in
              Qonto
          tokenUrl: https://oauth.qonto.com/oauth2/token
    SecretKey:
      type: apiKey
      description: cf. [API key](/get-started/business-api/authentication/api-key)
      name: Authorization
      in: header

````