Dwolla Transfers API

Initiate, retrieve, list, search and cancel money transfers between funding sources over the U.S. banking rails — standard ACH, Same-Day ACH, and instant/real-time payments via the RTP Network and FedNow Service. Exposes transfer status, fees, and failure details, and is the core money-movement resource of the Dwolla platform.

OpenAPI Specification

dwolla-transfers-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Dwolla API - Transfers
  description: Dwolla API Documentation
  contact:
    name: Dwolla Developer Relations Team
    url: https://developers.dwolla.com
    email: api@dwolla.com
  version: '2.0'
  termsOfService: https://www.dwolla.com/legal/tos/
  license:
    name: MIT
    url: https://github.com/Dwolla/dwolla-openapi/blob/master/LICENSE
jsonSchemaDialect: https://spec.openapis.org/oas/3.1/dialect/base
servers:
- url: https://api.dwolla.com
  description: Production server
- url: https://api-sandbox.dwolla.com
  description: Sandbox server
security:
- clientCredentials: []
tags:
- name: transfers
  description: Operations related to Transfers
paths:
  /transfers:
    post:
      tags:
      - transfers
      summary: Initiate a transfer
      description: Initiate a transfer between funding sources from a Dwolla Account or API Customer resource.
        Supports ACH, Instant Payments (RTP/FedNow), Push-to-Debit Card, and wire transfers with optional
        expedited clearing, facilitator fees, metadata, and correlation IDs for enhanced traceability.
        Includes idempotency key support to prevent duplicate transfers and extensive customization options
        for addenda records and processing channels. Returns the location of the created transfer resource
        for tracking and management.
      operationId: initiateTransfer
      x-speakeasy-name-override: create
      x-codeSamples:
      - lang: bash
        source: "POST https://api-sandbox.dwolla.com/transfers\nAccept: application/vnd.dwolla.v1.hal+json\n\
          Content-Type: application/vnd.dwolla.v1.hal+json\nAuthorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n\
          \n{\n  \"_links\": {\n    \"source\": {\n      \"href\": \"https://api-sandbox.dwolla.com/funding-sources/707177c3-bf15-4e7e-b37c-55c3898d9bf4\"\
          \n    },\n    \"destination\": {\n      \"href\": \"https://api-sandbox.dwolla.com/funding-sources/9c7f8d57-cd45-4e7a-bf7a-914dbd6131db\"\
          \n    }\n  },\n  \"amount\": {\n    \"currency\": \"USD\",\n    \"value\": \"1.00\"\n  },\n\
          \  \"clearing\": {\n    \"source\": \"standard\",\n    \"destination\": \"next-available\"\n\
          \  },\n  \"achDetails\": {\n    \"source\": {\n      \"addenda\": {\n        \"values\": [\"\
          ABC123_AddendaValue\"]\n      }\n    },\n    \"destination\": {\n      \"addenda\": {\n    \
          \    \"values\": [\"ZYX987_AddendaValue\"]\n      }\n    }\n  },\n  \"instantDetails\": {\n\
          \    \"destination\": {\n      \"remittanceData\": \"ABC_123 Remittance Data\"\n    }\n  },\n\
          \  \"fees\": [\n    {\n      \"_links\": {\n        \"charge-to\": {\n          \"href\": \"\
          https://api-sandbox.dwolla.com/customers/d795f696-2cac-4662-8f16-95f1db9bddd8\"\n        }\n\
          \      },\n      \"amount\": {\n        \"value\": \"4.00\",\n        \"currency\": \"USD\"\n\
          \      }\n    }\n  ],\n  \"metadata\": {\n    \"key\": \"value\"\n  },\n  \"correlationId\"\
          : \"6d127333-69e9-4c2b-8cae-df850228e130\",\n  \"processingChannel\": {\n    \"destination\"\
          : \"instant\"\n  }\n}\n"
      - lang: javascript
        source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar requestBody = {\n\
          \  _links: {\n    source: {\n      href: \"https://api-sandbox.dwolla.com/funding-sources/707177c3-bf15-4e7e-b37c-55c3898d9bf4\"\
          ,\n    },\n    destination: {\n      href: \"https://api-sandbox.dwolla.com/funding-sources/9c7f8d57-cd45-4e7a-bf7a-914dbd6131db\"\
          ,\n    },\n  },\n  amount: {\n    currency: \"USD\",\n    value: \"1.00\",\n  },\n  clearing:\
          \ {\n    source: \"standard\",\n    destination: \"next-available\",\n  },\n  achDetails: {\n\
          \    source: {\n      addenda: {\n        values: [\"ABC123_AddendaValue\"],\n      },\n   \
          \ },\n    destination: {\n      addenda: {\n        values: [\"ZYX987_AddendaValue\"],\n   \
          \   },\n    },\n  },\n  instantDetails: {\n    destination: {\n      remittanceData: \"ABC_123\
          \ Remittance Data\",\n    },\n  },\n  fees: [\n    {\n      _links: {\n        \"charge-to\"\
          : {\n          href: \"https://api-sandbox.dwolla.com/customers/d795f696-2cac-4662-8f16-95f1db9bddd8\"\
          ,\n        },\n      },\n      amount: {\n        value: \"4.00\",\n        currency: \"USD\"\
          ,\n      },\n    },\n  ],\n  metadata: {\n    key: \"value\",\n  },\n  correlationId: \"6d127333-69e9-4c2b-8cae-df850228e130\"\
          ,\n  processingChannel: {\n    destination: \"instant\",\n  },\n};\n\ndwolla\n  .post(\"transfers\"\
          , requestBody)\n  .then((res) => res.headers.get(\"location\")); // => 'https://api-sandbox.dwolla.com/transfers/0e6b8c1e-7b6e-4b2e-8e2e-1b2e2e2e2e2e'\n"
      - lang: python
        source: "# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python\nrequest_body = {\n  '_links':\
          \ {\n    'source': {\n      'href': 'https://api-sandbox.dwolla.com/funding-sources/707177c3-bf15-4e7e-b37c-55c3898d9bf4'\n\
          \    },\n    'destination': {\n      'href': 'https://api-sandbox.dwolla.com/funding-sources/9c7f8d57-cd45-4e7a-bf7a-914dbd6131db'\n\
          \    }\n  },\n  'amount': {\n    'currency': 'USD',\n    'value': '1.00'\n  },\n  'clearing':\
          \ {\n    'source': 'standard',\n    'destination': 'next-available'\n  },\n  'achDetails': {\n\
          \    'source': {\n      'addenda': {\n        'values': ['ABC123_AddendaValue']\n      }\n \
          \   },\n    'destination': {\n      'addenda': {\n        'values': ['ZYX987_AddendaValue']\n\
          \      }\n    }\n  },\n  'instantDetails': {\n    'destination': {\n      'remittanceData':\
          \ 'ABC_123 Remittance Data'\n    }\n  },\n  'fees': [\n    {\n      '_links': {\n        'charge-to':\
          \ {\n          'href': 'https://api-sandbox.dwolla.com/customers/d795f696-2cac-4662-8f16-95f1db9bddd8'\n\
          \        }\n      },\n      'amount': {\n        'value': '4.00',\n        'currency': 'USD'\n\
          \      }\n    }\n  ],\n  'metadata': {\n    'key': 'value'\n  },\n  'correlationId': '6d127333-69e9-4c2b-8cae-df850228e130',\n\
          \  'processingChannel': {\n    'destination': 'instant'\n  }\n}\n\ntransfer = app_token.post('transfers',\
          \ request_body)\ntransfer.headers['location'] # => 'https://api-sandbox.dwolla.com/transfers/0e6b8c1e-7b6e-4b2e-8e2e-1b2e2e2e2e2e'\n"
      - lang: php
        source: "<?php\n// Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php\n$transfersApi\
          \ = new DwollaSwagger\\TransfersApi($apiClient);\n\n$transfer = $transfersApi->create([\n  '_links'\
          \ => [\n    'source' => [\n      'href' => 'https://api-sandbox.dwolla.com/funding-sources/707177c3-bf15-4e7e-b37c-55c3898d9bf4',\n\
          \    ],\n    'destination' => [\n      'href' => 'https://api-sandbox.dwolla.com/funding-sources/9c7f8d57-cd45-4e7a-bf7a-914dbd6131db',\n\
          \    ]\n  ],\n  'amount' => [\n    'currency' => 'USD',\n    'value' => '1.00'\n  ],\n  'clearing'\
          \ => [\n    'source' => 'standard',\n    'destination' => 'next-available'\n  ],\n  'achDetails'\
          \ => [\n    'source' => [\n      'addenda' => [\n        'values' => ['ABC123_AddendaValue']\n\
          \      ]\n    ],\n    'destination' => [\n      'addenda' => [\n        'values' => ['ZYX987_AddendaValue']\n\
          \      ]\n    ]\n  ],\n  'instantDetails' => [\n    'destination' => [\n      'remittanceData'\
          \ => 'ABC_123 Remittance Data'\n    ]\n  ],\n  'fees' => [\n    [\n      '_links' => [\n   \
          \     'charge-to' => [\n          'href' => 'https://api-sandbox.dwolla.com/customers/d795f696-2cac-4662-8f16-95f1db9bddd8',\n\
          \        ]\n      ],\n      'amount' => [\n        'value' => '4.00',\n        'currency' =>\
          \ 'USD'\n      ]\n    ]\n  ],\n  'metadata' => [\n    'key' => 'value'\n  ],\n  'correlationId'\
          \ => '6d127333-69e9-4c2b-8cae-df850228e130',\n  'processingChannel' => [\n    'destination'\
          \ => 'instant'\n  ]\n]);\n$transfer; # => \"https://api-sandbox.dwolla.com/transfers/0e6b8c1e-7b6e-4b2e-8e2e-1b2e2e2e2e2e\"\
          \n?>\n"
      - lang: ruby
        source: "# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby\nrequest_body = {\n  :_links\
          \ => {\n    :source => {\n      :href => \"https://api-sandbox.dwolla.com/funding-sources/707177c3-bf15-4e7e-b37c-55c3898d9bf4\"\
          \n    },\n    :destination => {\n      :href => \"https://api-sandbox.dwolla.com/funding-sources/9c7f8d57-cd45-4e7a-bf7a-914dbd6131db\"\
          \n    }\n  },\n  :amount => {\n    :currency => \"USD\",\n    :value => \"1.00\"\n  },\n  :clearing\
          \ => {\n    :source => \"standard\",\n    :destination => \"next-available\"\n  },\n  :achDetails\
          \ => {\n    :source => {\n      :addenda => {\n        :values => [\"ABC123_AddendaValue\"]\n\
          \      }\n    },\n    :destination => {\n      :addenda => {\n        :values => [\"ZYX987_AddendaValue\"\
          ]\n      }\n    }\n  },\n  :instantDetails => {\n    :destination => {\n      :remittanceData\
          \ => \"ABC_123 Remittance Data\"\n    }\n  },\n  :fees => [\n    {\n      :_links => {\n   \
          \     :\"charge-to\" => {\n          :href => \"https://api-sandbox.dwolla.com/customers/d795f696-2cac-4662-8f16-95f1db9bddd8\"\
          \n        }\n      },\n      :amount => {\n        :value => \"4.00\",\n        :currency =>\
          \ \"USD\"\n      }\n    }\n  ],\n  :metadata => {\n    :key => \"value\"\n  },\n  :correlationId\
          \ => \"6d127333-69e9-4c2b-8cae-df850228e130\",\n  :processingChannel => {\n    :destination\
          \ => \"instant\"\n  }\n}\n\ntransfer = app_token.post \"transfers\", request_body\ntransfer.response_headers[:location]\
          \ # => \"https://api-sandbox.dwolla.com/transfers/0e6b8c1e-7b6e-4b2e-8e2e-1b2e2e2e2e2e\"\n"
      parameters:
      - $ref: '#/components/parameters/Accept'
      - name: Idempotency-Key
        schema:
          type: string
        in: header
        example: 19051a62-3403-11e6-ac61-9e71128cae77
      requestBody:
        required: true
        description: Parameters to initiate a transfer
        content:
          application/json:
            schema:
              required:
              - _links
              - amount
              type: object
              properties:
                _links:
                  type: object
                  properties:
                    source:
                      type: object
                      properties:
                        href:
                          type: string
                    destination:
                      type: object
                      properties:
                        href:
                          type: string
                amount:
                  $ref: '#/components/schemas/TransferAmount'
                metadata:
                  type: object
                fees:
                  type: array
                  items:
                    type: object
                    properties:
                      _links:
                        type: object
                        properties:
                          charge-to:
                            type: object
                            properties:
                              href:
                                type: string
                      amount:
                        $ref: '#/components/schemas/TransferAmount'
                clearing:
                  type: object
                  properties:
                    source:
                      type: string
                    destination:
                      type: string
                achDetails:
                  type: object
                  properties:
                    source:
                      type: object
                      properties:
                        addenda:
                          type: object
                          properties:
                            values:
                              type: array
                              items:
                                type: string
                    destination:
                      type: object
                      properties:
                        addenda:
                          type: object
                          properties:
                            values:
                              type: array
                              items:
                                type: string
                rtpDetails:
                  type: object
                  description: Real-Time Payments (RTP) specific transaction details.
                  properties:
                    destination:
                      type: object
                      description: RTP details for the destination
                      properties:
                        remittanceData:
                          type: string
                          description: 'Remittance information for Real-Time Payments, providing context
                            about the payment purpose. Acceptable characters: alphanumeric (0-9, a-z,
                            A-Z), space, and special characters (#,.''&/-@!$%*()_+={}|:;`[]^~\")'
                          maxLength: 140
                          pattern: '^[0-9a-zA-Z #,.''&/\-@!$%*()_+={}|:;`\[\]\^\~\\"]+$'
                          example: ABC_123 Remittance Data
                instantDetails:
                  type: object
                  description: Instant Payments specific transaction details for both RTP and FedNow networks.
                  properties:
                    destination:
                      type: object
                      description: Instant payment details for the destination
                      properties:
                        remittanceData:
                          type: string
                          description: 'Remittance information for Instant Payments (RTP/FedNow), providing
                            context about the payment purpose. Acceptable characters: alphanumeric (0-9,
                            a-z, A-Z), space, and special characters (#,.''&/-@!$%*()_+={}|:;`[]^~\")'
                          maxLength: 140
                          pattern: '^[0-9a-zA-Z #,.''&/\-@!$%*()_+={}|:;`\[\]\^\~\\"]+$'
                          example: ABC_123 Remittance Data
                correlationId:
                  type: string
                processingChannel:
                  type: object
                  properties:
                    destination:
                      type: string
                      enum:
                      - real-time-payments
                      - instant
                      example: instant
      responses:
        '201':
          description: created
          headers:
            Location:
              $ref: '#/components/headers/Location'
        '400':
          description: Bad Request
          headers: {}
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/SourceNotFoundError'
                - $ref: '#/components/schemas/ReceiverNotFoundError'
                - $ref: '#/components/schemas/InvalidSourceFundingSourceError'
                - $ref: '#/components/schemas/SenderRestrictedError'
                - $ref: '#/components/schemas/ReceiverRestrictedError'
                - $ref: '#/components/schemas/InvalidMetadataError'
                - $ref: '#/components/schemas/OperationBlockedError'
                - $ref: '#/components/schemas/InvalidAmountLimitError'
                - $ref: '#/components/schemas/CannotParseAmountError'
                - $ref: '#/components/schemas/InsufficientFundsError'
                - $ref: '#/components/schemas/FacilitatorFeeAccountNotFoundError'
                - $ref: '#/components/schemas/FacilitatorFeeSumTooLargeError'
                - $ref: '#/components/schemas/FacilitatorFeeBelowMinimumError'
                - $ref: '#/components/schemas/HighRiskError'
                - $ref: '#/components/schemas/IncompatibleHoldingsError'
                - $ref: '#/components/schemas/DirectAccountWithoutBankError'
                - $ref: '#/components/schemas/SourceSameAsDestinationError'
                - $ref: '#/components/schemas/InvalidFacilitatorError'
                - $ref: '#/components/schemas/InvalidFacilitatorFeeCollectFromError'
                - $ref: '#/components/schemas/InvalidFacilitatorFeeCollectFromCombinationError'
                - $ref: '#/components/schemas/InvalidDestinationFundingSourceError'
                - $ref: '#/components/schemas/InvalidOrRemovedCardDestinationError'
                - $ref: '#/components/schemas/InvalidFacilitatorFeeAmountError'
                - $ref: '#/components/schemas/WeeklyReceiveLimitReachedError'
                - $ref: '#/components/schemas/InvalidDestinationClearingTypeError'
                - $ref: '#/components/schemas/InvalidAmountForDestinationClearingTypeError'
                - $ref: '#/components/schemas/InvalidCorrelationIdError'
                - $ref: '#/components/schemas/SourceAddendaMaxLengthError'
                - $ref: '#/components/schemas/DestinationAddendaMaxLengthError'
                - $ref: '#/components/schemas/AchAddendaEntriesNotEnabledForAccountError'
                - $ref: '#/components/schemas/PointOfSaleAddendaEntriesNotEnabledForAccountError'
                - $ref: '#/components/schemas/IncompatibleAddendaEntriesError'
                - $ref: '#/components/schemas/InvalidPointOfSaleAddendaIdentificationCodeError'
                - $ref: '#/components/schemas/InvalidPointOfSaleAddendaSerialNumberError'
                - $ref: '#/components/schemas/InvalidPointOfSaleAddendaDateError'
                - $ref: '#/components/schemas/InvalidPointOfSaleAddendaAddressError'
                - $ref: '#/components/schemas/InvalidPointOfSaleAddendaCityError'
                - $ref: '#/components/schemas/InvalidPointOfSaleAddendaStateError'
                - $ref: '#/components/schemas/TransferExpiredForFeeError'
                - $ref: '#/components/schemas/InvalidFeeOdfiError'
                - $ref: '#/components/schemas/InvalidSourceBankAccountTypeError'
                - $ref: '#/components/schemas/InvalidDestinationBankAccountTypeError'
                - $ref: '#/components/schemas/IncompatibleSourceAndDestinationTypesError'
                - $ref: '#/components/schemas/SourceNotCardNetworkSettlementError'
                - $ref: '#/components/schemas/CardSourceNotAllowedError'
                - $ref: '#/components/schemas/IncompatibleSourceForRtpDestinationError'
                - $ref: '#/components/schemas/InvalidAmountForDestinationProcessingChannelError'
                - $ref: '#/components/schemas/RtpFacilitatorFeeNotSupportedError'
                - $ref: '#/components/schemas/RtpUnverifiedSenderNotSupportedError'
                - $ref: '#/components/schemas/RtpPersonalToPersonalNotSupportedError'
                - $ref: '#/components/schemas/DestinationProcessingChannelNotSupportedError'
                - $ref: '#/components/schemas/DestinationRemittanceDataMaxLengthError'
                - $ref: '#/components/schemas/WithdrawInvalidAmountError'
                - $ref: '#/components/schemas/WithdrawInvalidFundingSourceError'
                - $ref: '#/components/schemas/WithdrawAccountRestrictedError'
                - $ref: '#/components/schemas/WithdrawInvalidAmountForClearingTypeError'
                - $ref: '#/components/schemas/WithdrawInvalidWireBeneficiaryLocalityError'
                - $ref: '#/components/schemas/WithdrawInvalidWireBeneficiaryRegionError'
                - $ref: '#/components/schemas/WithdrawInvalidWireBeneficiaryCountryError'
                - $ref: '#/components/schemas/WithdrawInvalidWireOriginatorToBeneficiaryError'
                - $ref: '#/components/schemas/WithdrawProcessingChannelNotSupportedError'
                - $ref: '#/components/schemas/WithdrawRtpUnverifiedSenderNotSupportedError'
                - $ref: '#/components/schemas/WithdrawRtpPersonalWithdrawalNotSupportedError'
                - $ref: '#/components/schemas/DepositAccountRestrictedError'
                - $ref: '#/components/schemas/WireInvalidImadError'
                - $ref: '#/components/schemas/WireAccountRestrictedError'
                - $ref: '#/components/schemas/WireNotEnabledError'
                - $ref: '#/components/schemas/WireAccountNotFoundError'
                - $ref: '#/components/schemas/PrefundingSourceNotAllowedError'
        '403':
          description: Forbidden
          headers: {}
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/InvalidAttemptToFacilitateFundsError'
                - $ref: '#/components/schemas/InvalidAttemptToPayInFundsError'
                - $ref: '#/components/schemas/InvalidAttemptToPayOutFundsError'
                - $ref: '#/components/schemas/RtpAccountSettingNotEnabledError'
        '429':
          description: Too Many Requests
          headers: {}
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorError'
  /transfers/{id}:
    get:
      tags:
      - transfers
      summary: Retrieve a transfer
      description: Retrieve detailed information for a specific transfer by its unique identifier belonging
        to an Account or Customer. Returns transfer status, amount, creation date, clearing details, and
        links to source and destination funding sources for complete transaction tracking. Includes cancellation
        links when applicable and references to related funding transfers. Essential for monitoring transfer
        lifecycle and transaction reconciliation.
      operationId: getTransfer
      x-speakeasy-name-override: get
      x-codeSamples:
      - lang: bash
        source: 'GET https://api-sandbox.dwolla.com/transfers/15c6bcce-46f7-e811-8112-e8dd3bececa8

          Accept: application/vnd.dwolla.v1.hal+json

          Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

          '
      - lang: javascript
        source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar transferUrl =\n  \"\
          https://api-sandbox.dwolla.com/transfers/15c6bcce-46f7-e811-8112-e8dd3bececa8\";\n\ndwolla.get(transferUrl).then((res)\
          \ => res.body.status); // => 'pending'\n"
      - lang: python
        source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python

          transfer_url = ''https://api-sandbox.dwolla.com/transfers/15c6bcce-46f7-e811-8112-e8dd3bececa8''


          transfer = account_token.get(transfer_url)

          transfer.body[''status''] # => ''pending''

          '
      - lang: php
        source: '<?php

          // Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php

          $transferUrl = ''https://api-sandbox.dwolla.com/transfers/15c6bcce-46f7-e811-8112-e8dd3bececa8'';


          $transfersApi = new DwollaSwagger\TransfersApi($apiClient);


          $transfer = $transfersApi->byId($transferUrl);

          $transfer->status; # => "pending"

          ?>

          '
      - lang: ruby
        source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby

          transfer_url = ''https://api.dwolla.com/transfers/15c6bcce-46f7-e811-8112-e8dd3bececa8''


          transfer = app_token.get transfer_url

          transfer.status # => "pending"

          '
      parameters:
      - name: id
        in: path
        description: ID of transfer to be retrieved
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/Accept'
      responses:
        '200':
          description: successful operation
          headers: {}
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                $ref: '#/components/schemas/Transfer'
        '404':
          description: 404 Not Found
          headers: {}
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
    post:
      tags:
      - transfers
      summary: Cancel a transfer
      description: Cancel a pending transfer by setting its status to cancelled. Only transfers in pending
        status can be cancelled before processing begins. Returns the updated transfer resource with cancelled
        status. Use this endpoint to stop a bank transfer from further processing.
      operationId: cancelTransfer
      x-speakeasy-name-override: cancel
      x-codeSamples:
      - lang: bash
        source: "POST https://api-sandbox.dwolla.com/transfers/3d48c13a-0fc6-e511-80de-0aa34a9b2388\n\
          Content-Type: application/vnd.dwolla.v1.hal+json\nAccept: application/vnd.dwolla.v1.hal+json\n\
          Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY\n\n{\n    \"status\"\
          : \"cancelled\"\n}\n"
      - lang: javascript
        source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar transferUrl =\n  \"\
          https://api-sandbox.dwolla.com/transfers/3d48c13a-0fc6-e511-80de-0aa34a9b2388\";\nvar requestBody\
          \ = {\n  status: \"cancelled\",\n};\n\ndwolla.post(transfer_url, requestBody).then((res) =>\
          \ res.body.status); // => \"cancelled\"\n"
      - lang: python
        source: "# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python\ntransfer_url = 'https://api-sandbox.dwolla.com/transfers/3d48c13a-0fc6-e511-80de-0aa34a9b2388'\n\
          request_body = {\n  'status': 'cancelled'\n}\n\ntransfer = app_token.post(transfer_url, request_body)\n\
          transfer.body['status'] # => 'cancelled'\n"
      - lang: php
        source: "<?php\n// Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php\n$transfersApi\
          \ = new DwollaSwagger\\TransfersApi($apiClient);\n\n$transferUrl = 'https://api-sandbox.dwolla.com/transfers/3d48c13a-0fc6-e511-80de-0aa34a9b2388';\n\
          $transfer = $transfersApi->update([\n  'status' => 'cancelled',\n], $transferUrl);\n\n$transfer->status;\
          \ # => \"cancelled\"\n?>\n"
      - lang: ruby
        source: "# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby\ntransfer_url = 'https://api-sandbox.dwolla.com/transfers/3d48c13a-0fc6-e511-80de-0aa34a9b2388'\n\
          request_body = {\n      \"status\" => \"cancelled\",\n}\n\ntransfer = app_token.post \"#{transfer_url}\"\
          , request_body\ntransfer.status # => \"cancelled\"\n"
      parameters:
      - name: id
        in: path
        description: ID of transfer
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/Accept'
      requestBody:
        required: true
        description: Parameters to cancel a transfer
        content:
          application/json:
            schema:
              required:
              - status
              type: object
              properties:
                status:
                  type: string
                  const: cancelled
      responses:
        '200':
          description: successful operation
          headers: {}
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                type: object
        '400':
          description: 400 Bad Request
          headers: {}
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/BadRequestError'
                - $ref: '#/components/schemas/StatusInvalidError'
                - $ref: '#/components/schemas/StatusNotAllowedError'
        '404':
          description: 404 Not Found
          headers: {}
          content:
            application/vnd.dwolla.v1.hal+json:
              schema:
                $ref: '#/components/schemas/NotFoundError'
  /customers/{id}/transfers:
    get:
      tags:
      - transfers
      summary: List and search transfers for a customer
      description: Retrieve and search transfers for a specific Customer with comprehensive filtering
        and pagination support. Supports searching by customer details (name, email, business name), amount
        ranges, date ranges, transfer status, and correlation IDs for enhanced transaction discovery.
        Returns paginated transfer results including status, amounts, metadata, and links to source and
        destination funding sources. Use this endpoint for transaction history analysis and reconciliation
        purposes.
      operationId: listCustomerTransfers
      x-speakeasy-group: customers.transfers
      x-speakeasy-name-override: list
      x-codeSamples:
      - lang: bash
        source: 'GET https://api-sandbox.dwolla.com/customers/33e56307-6754-41cb-81e2-23a7f1072295/transfers

          Accept: application/vnd.dwolla.v1.hal+json

          Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY

          '
      - lang: javascript
        source: "// Using dwolla-v2 - https://github.com/Dwolla/dwolla-v2-node\nvar customerUrl =\n  \"\
          http://api-sandbox.dwolla.com/customers/33e56307-6754-41cb-81e2-23a7f1072295\";\n\ndwolla\n\
          \  .get(`${customerUrl}/transfers`)\n  .then((res) => res.body._embedded[\"transfers\"][0].status);\
          \ // => \"pending\"\n"
      - lang: python
        source: '# Using dwollav2 - https://github.com/Dwolla/dwolla-v2-python

          customer_url = ''http://api-sandbox.dwolla.com/customers/33e56307-6754-41cb-81e2-23a7f1072295''


          transfers = app_token.get(''%s/transfers'' % customer_url)

          transfers.body[''_embedded''][''transfers''][0][''status''] # => ''pending''

          '
      - lang: php
        source: '<?php

          // Using dwollaswagger - https://github.com/Dwolla/dwolla-swagger-php

          $customerUrl = ''http://api-sandbox.dwolla.com/customers/33e56307-6754-41cb-81e2-23a7f1072295'';


          $TransfersApi = new DwollaSwagger\TransfersApi($apiClient);


          $transfers = $TransfersApi->getCustomerTransfers($customerUrl);

          $transfers->_embedded->{''transfers''}[0]->status; # => "pending"

          ?>

          '
      - lang: ruby
        source: '# Using dwolla_v2 - https://github.com/Dwolla/dwolla-v2-ruby

          customer_url = ''http://api-sandbox.dwolla.com/customers/33e56307-6754-41cb-81e2-23a7f1072295''


          transfers = app_token.get "#{customer_url}/transfers"

          transfers._embedded[''transfers''][0].status # => "pending"

          '
      parameters:
      - name: id
        in: path
        description: Customer's unique identifier
        required: true
        schema:
          type: string
      - name: search
        in: query
        description: A string to search on fields `firstName`, `lastName`, `email`, `businessName`
        required: false
        schema:
          type: string
      - name: startAmount
        in: query
        description: Only include transactions with an amount equal to or greater than `startAmount`
        required: false
        schema:
          type: string
      - name: endAmount
        in: query
        description: Only include transactions with an amount equal to or less than `endAmount`
        required: false
        schema:
          type: string
      - name: startDate
        in: query
        description: Only include transactions created after this date. ISO-8601 format `YYYY-MM-DD`
        required: false
        schema:
          type: string
      - name: endDate
        in: query
        description: Only include transactions created before this date. ISO-8601 format `YYYY-MM-DD`
        required: false
        schema:
          type: string
      - name: status
        in: query
        description: Filter on transaction status. Possible values are `pending`, `processed`, `failed`,
          or `cancelled`
        required: false
        schema:
          type: string
      - name: correlationId
        in: query
        description: A string value to search on if `correlationId` was specified for a transaction
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: Num

# --- truncated at 32 KB (124 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dwolla/refs/heads/main/openapi/dwolla-transfers-openapi.yml