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

# List Transfers

> GET /v1/transfers

List transfers for the authenticated organization ordered by `createdAt desc, id desc`.



## OpenAPI

````yaml /openapi.json get /v1/transfers
openapi: 3.1.0
info:
  title: Waycore Bank Connections API
  description: >-
    Developer-first API for direct bank connections, accounts, and transactions.


    Design goals:

    - Flat records with minimal nesting.

    - Clear, bank-centric naming.

    - One canonical endpoint per resource.

    - Sparse fieldsets via `fields=`.

    - Historical browsing via `GET /transactions`.

    - Incremental ETL via `GET /transactions/sync`.

    - Discover supported institutions via `GET /institutions`.

    - Model downstream client businesses via `/entities` and explicit `entityId`
    ownership.


    Authentication:

    - Opaque API keys passed as `Authorization: Bearer <key>`.

    - Key format: `way_<environment>_<key_id>_<secret>`.

    - Keys are organization-bound, environment-bound (`live` or `test`),
    scope-carrying, and expiring.

    - Managed via the Waycore Console.
  version: 0.5.0
servers:
  - url: https://api.waycore.com
security: []
paths:
  /v1/transfers:
    get:
      tags:
        - transfers
      summary: List Transfers
      description: >-
        GET /v1/transfers


        List transfers for the authenticated organization ordered by `createdAt
        desc, id desc`.
      operationId: list_transfers_v1_transfers_get
      parameters:
        - name: status
          in: query
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/TransferStatus'
              - type: 'null'
            description: Filter by transfer status.
            title: Status
          description: Filter by transfer status.
        - name: accountId
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: Filter by source or internal destination account identifier.
            title: Accountid
          description: Filter by source or internal destination account identifier.
        - name: createdAtFrom
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date-time
              - type: 'null'
            description: Inclusive lower bound for `createdAt`.
            title: Createdatfrom
          description: Inclusive lower bound for `createdAt`.
        - name: createdAtTo
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date-time
              - type: 'null'
            description: Exclusive upper bound for `createdAt`.
            title: Createdatto
          description: Exclusive upper bound for `createdAt`.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            minimum: 1
            description: Maximum number of items to return.
            default: 50
            title: Limit
          description: Maximum number of items to return.
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Opaque pagination cursor from a previous response.
            title: Cursor
          description: Opaque pagination cursor from a previous response.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferListResponse'
        '400':
          description: >-
            Bad Request. `type` may be `invalid_request` for malformed query
            parameters or validation failures, or `invalid_cursor` when a list
            cursor is malformed or does not match the supplied query.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
          description: Forbidden
        '429':
          description: >-
            Too Many Requests. Retry after the number of seconds in
            `Retry-After` when present, then retry the same request.
          headers:
            Retry-After:
              description: >-
                Number of seconds to wait before retrying, when rate limiting
                provides a specific backoff.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicErrorResponse'
          description: Internal Server Error
      security:
        - apiKeyBearer:
            - transfers:read
components:
  schemas:
    TransferStatus:
      type: string
      enum:
        - queued
        - executing
        - pending_bank_approval
        - completed
        - failed
        - returned
        - cancelled
        - unknown
      title: TransferStatus
    TransferListResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Transfer'
          type: array
          title: Data
        pagination:
          $ref: '#/components/schemas/app__transfers__public__models__Pagination'
        meta:
          $ref: '#/components/schemas/app__transfers__public__models__Meta'
      type: object
      required:
        - data
        - pagination
        - meta
      title: TransferListResponse
    PublicErrorResponse:
      properties:
        type:
          title: Type
          type: string
        message:
          type: string
          title: Message
        requestId:
          anyOf:
            - type: string
            - type: 'null'
          title: Requestid
        details:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Details
      type: object
      required:
        - type
        - message
      title: PublicErrorResponse
    Transfer:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Stable transfer identifier.
        status:
          $ref: '#/components/schemas/TransferStatus'
          description: >-
            Current transfer lifecycle status. `pending_bank_approval` means
            Waycore has initiated the bank flow and the integrator should direct
            its user to approve in the bank portal.
        type:
          $ref: '#/components/schemas/TransferKind'
          description: Transfer direction.
        requestedAmount:
          $ref: '#/components/schemas/MoneyAmount-Output'
          description: Amount requested by the caller.
        executedAmount:
          anyOf:
            - $ref: '#/components/schemas/MoneyAmount-Output'
            - type: 'null'
          description: Actual amount sent once execution is known.
        sourceAccountId:
          type: string
          format: uuid
          title: Sourceaccountid
          description: Source connected account identifier.
        destination:
          oneOf:
            - $ref: '#/components/schemas/InternalAccountDestination'
            - $ref: '#/components/schemas/MaskedExternalAccountDestination'
          title: Destination
          description: Transfer destination.
          discriminator:
            propertyName: type
            mapping:
              account:
                $ref: '#/components/schemas/InternalAccountDestination'
              externalAccount:
                $ref: '#/components/schemas/MaskedExternalAccountDestination'
        transferType:
          $ref: '#/components/schemas/TransferType'
          description: Transfer rail used or requested.
        memo:
          anyOf:
            - type: string
            - type: 'null'
          title: Memo
          description: Integrator-visible memo.
        clientReference:
          type: string
          title: Clientreference
          description: >-
            Integrator-supplied payment reference distinct from the idempotency
            key. Where supported by the bank, this is the reference sent with
            the payment.
        failureReason:
          anyOf:
            - $ref: '#/components/schemas/TransferFailureReason'
            - type: 'null'
          description: >-
            Failure details when `status` is `failed`, `returned`, or
            `cancelled`.
        createdAt:
          type: string
          format: date-time
          title: Createdat
          description: When the transfer was created.
        updatedAt:
          type: string
          format: date-time
          title: Updatedat
          description: When the transfer last changed.
      type: object
      required:
        - id
        - status
        - type
        - requestedAmount
        - sourceAccountId
        - destination
        - transferType
        - clientReference
        - createdAt
        - updatedAt
      title: Transfer
    app__transfers__public__models__Pagination:
      properties:
        hasMore:
          type: boolean
          title: Hasmore
        nextCursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Nextcursor
      type: object
      required:
        - hasMore
      title: Pagination
    app__transfers__public__models__Meta:
      properties:
        requestId:
          type: string
          title: Requestid
      type: object
      required:
        - requestId
      title: Meta
    TransferKind:
      type: string
      enum:
        - internal
        - external
      title: TransferKind
    MoneyAmount-Output:
      properties:
        type:
          type: string
          const: money
          title: Type
          description: Amount expressed in a currency.
        value:
          type: string
          pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
          title: Value
          description: Positive monetary amount.
        currency:
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]{3}$
          title: Currency
          description: ISO 4217 currency supplied by the caller.
      additionalProperties: false
      type: object
      required:
        - type
        - value
        - currency
      title: MoneyAmount
      examples:
        - currency: USD
          type: money
          value: '1250.00'
    InternalAccountDestination:
      properties:
        type:
          type: string
          const: account
          title: Type
          description: Connected Waycore account destination.
        accountId:
          type: string
          format: uuid
          title: Accountid
          description: Destination account identifier.
      additionalProperties: false
      type: object
      required:
        - type
        - accountId
      title: InternalAccountDestination
    MaskedExternalAccountDestination:
      properties:
        type:
          type: string
          const: externalAccount
          title: Type
          description: External destination.
        accountHolderName:
          type: string
          title: Accountholdername
          description: Destination account holder name.
        recipientType:
          anyOf:
            - $ref: '#/components/schemas/RecipientType'
            - type: 'null'
          description: Recipient classification, when supplied.
        addressProvided:
          type: boolean
          title: Addressprovided
          description: Whether recipient address details were captured for the transfer.
        paymentIdentifier:
          oneOf:
            - $ref: '#/components/schemas/UsAchMaskedExternalPaymentIdentifier'
            - $ref: >-
                #/components/schemas/UkSortCodeAccountNumberMaskedExternalPaymentIdentifier
            - $ref: '#/components/schemas/CaEftMaskedExternalPaymentIdentifier'
            - $ref: >-
                #/components/schemas/AuBsbAccountNumberMaskedExternalPaymentIdentifier
            - $ref: '#/components/schemas/IbanMaskedExternalPaymentIdentifier'
          title: Paymentidentifier
          description: Masked destination account identifier.
          discriminator:
            propertyName: scheme
            mapping:
              au_bsb_account_number:
                $ref: >-
                  #/components/schemas/AuBsbAccountNumberMaskedExternalPaymentIdentifier
              ca_eft:
                $ref: '#/components/schemas/CaEftMaskedExternalPaymentIdentifier'
              iban:
                $ref: '#/components/schemas/IbanMaskedExternalPaymentIdentifier'
              uk_sort_code_account_number:
                $ref: >-
                  #/components/schemas/UkSortCodeAccountNumberMaskedExternalPaymentIdentifier
              us_ach:
                $ref: '#/components/schemas/UsAchMaskedExternalPaymentIdentifier'
      type: object
      required:
        - type
        - accountHolderName
        - addressProvided
        - paymentIdentifier
      title: MaskedExternalAccountDestination
    TransferType:
      type: string
      enum:
        - internal
        - ach
        - wire
        - swift
        - fednow
        - rtp
        - sepa
        - local
      title: TransferType
    TransferFailureReason:
      properties:
        code:
          $ref: '#/components/schemas/TransferFailureCode'
        message:
          anyOf:
            - type: string
            - type: 'null'
          title: Message
          description: Generic, actionable failure summary safe for client display.
      type: object
      required:
        - code
      title: TransferFailureReason
    RecipientType:
      type: string
      enum:
        - individual
        - business
      title: RecipientType
    UsAchMaskedExternalPaymentIdentifier:
      properties:
        scheme:
          type: string
          const: us_ach
          title: Scheme
          description: US ACH account identifier.
        countryCode:
          type: string
          const: US
          title: Countrycode
          description: US country code.
        detailsMask:
          $ref: '#/components/schemas/UsAchMaskedPaymentIdentifierDetails'
      type: object
      required:
        - scheme
        - countryCode
        - detailsMask
      title: UsAchMaskedExternalPaymentIdentifier
    UkSortCodeAccountNumberMaskedExternalPaymentIdentifier:
      properties:
        scheme:
          type: string
          const: uk_sort_code_account_number
          title: Scheme
          description: UK sort-code and account-number identifier.
        countryCode:
          type: string
          const: GB
          title: Countrycode
          description: GB country code.
        detailsMask:
          $ref: >-
            #/components/schemas/UkSortCodeAccountNumberMaskedPaymentIdentifierDetails
      type: object
      required:
        - scheme
        - countryCode
        - detailsMask
      title: UkSortCodeAccountNumberMaskedExternalPaymentIdentifier
    CaEftMaskedExternalPaymentIdentifier:
      properties:
        scheme:
          type: string
          const: ca_eft
          title: Scheme
          description: Canadian EFT account identifier.
        countryCode:
          type: string
          const: CA
          title: Countrycode
          description: CA country code.
        detailsMask:
          $ref: '#/components/schemas/CaEftMaskedPaymentIdentifierDetails'
      type: object
      required:
        - scheme
        - countryCode
        - detailsMask
      title: CaEftMaskedExternalPaymentIdentifier
    AuBsbAccountNumberMaskedExternalPaymentIdentifier:
      properties:
        scheme:
          type: string
          const: au_bsb_account_number
          title: Scheme
          description: Australian BSB and account-number identifier.
        countryCode:
          type: string
          const: AU
          title: Countrycode
          description: AU country code.
        detailsMask:
          $ref: >-
            #/components/schemas/AuBsbAccountNumberMaskedPaymentIdentifierDetails
      type: object
      required:
        - scheme
        - countryCode
        - detailsMask
      title: AuBsbAccountNumberMaskedExternalPaymentIdentifier
    IbanMaskedExternalPaymentIdentifier:
      properties:
        scheme:
          type: string
          const: iban
          title: Scheme
          description: IBAN account identifier.
        countryCode:
          type: string
          maxLength: 2
          minLength: 2
          pattern: ^[A-Z]{2}$
          title: Countrycode
          description: ISO 3166-1 alpha-2 country code for the destination account.
        detailsMask:
          $ref: '#/components/schemas/IbanMaskedPaymentIdentifierDetails'
      type: object
      required:
        - scheme
        - countryCode
        - detailsMask
      title: IbanMaskedExternalPaymentIdentifier
    TransferFailureCode:
      type: string
      enum:
        - insufficient_funds
        - invalid_destination
        - unsupported_transfer_type
        - provider_rejected
        - provider_unavailable
        - timed_out
        - unknown
      title: TransferFailureCode
    UsAchMaskedPaymentIdentifierDetails:
      properties:
        routingNumber:
          anyOf:
            - type: string
            - type: 'null'
          title: Routingnumber
          description: Masked routing number, when safe to display.
        accountNumber:
          anyOf:
            - type: string
            - type: 'null'
          title: Accountnumber
          description: Masked account number, when safe to display.
      type: object
      title: UsAchMaskedPaymentIdentifierDetails
    UkSortCodeAccountNumberMaskedPaymentIdentifierDetails:
      properties:
        sortCode:
          anyOf:
            - type: string
            - type: 'null'
          title: Sortcode
          description: Masked sort code, when safe to display.
        accountNumber:
          anyOf:
            - type: string
            - type: 'null'
          title: Accountnumber
          description: Masked account number, when safe to display.
      type: object
      title: UkSortCodeAccountNumberMaskedPaymentIdentifierDetails
    CaEftMaskedPaymentIdentifierDetails:
      properties:
        institutionNumber:
          anyOf:
            - type: string
            - type: 'null'
          title: Institutionnumber
          description: Masked Canadian financial institution number, when safe to display.
        transitNumber:
          anyOf:
            - type: string
            - type: 'null'
          title: Transitnumber
          description: Masked Canadian branch transit number, when safe to display.
        accountNumber:
          anyOf:
            - type: string
            - type: 'null'
          title: Accountnumber
          description: Masked Canadian EFT account number, when safe to display.
      type: object
      title: CaEftMaskedPaymentIdentifierDetails
    AuBsbAccountNumberMaskedPaymentIdentifierDetails:
      properties:
        bsb:
          anyOf:
            - type: string
            - type: 'null'
          title: Bsb
          description: Masked Australian BSB, when safe to display.
        accountNumber:
          anyOf:
            - type: string
            - type: 'null'
          title: Accountnumber
          description: Masked Australian account number, when safe to display.
      type: object
      title: AuBsbAccountNumberMaskedPaymentIdentifierDetails
    IbanMaskedPaymentIdentifierDetails:
      properties:
        iban:
          anyOf:
            - type: string
            - type: 'null'
          title: Iban
          description: Masked IBAN, when safe to display.
        bic:
          anyOf:
            - type: string
            - type: 'null'
          title: Bic
          description: SWIFT/BIC, when safe to display.
      type: object
      title: IbanMaskedPaymentIdentifierDetails
  securitySchemes:
    apiKeyBearer:
      type: http
      scheme: bearer
      bearerFormat: way_<environment>_<key_id>_<secret>
      description: >-
        Opaque API key passed as `Authorization: Bearer <key>`. Keys are
        organization-bound, environment-bound (`live` or `test`),
        scope-carrying, and expiring. Create and manage keys via the console.

````