---
title: "Initiate a transfer"
method: POST
path: "/transfers"
tags: ["transfers"]
---

# Initiate a transfer

`POST /transfers`

Initiate a transfer between funding sources from a Dwolla Account or API Customer resource. Supports ACH, Instant Payments (RTP/FedNow), 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.

## Headers

- `Accept` 'application/vnd.dwolla.v1.hal+json', required
- `Idempotency-Key` string

## Request body

- object
  - `_links` object, required
    - `source` object
      - `href` string
    - `destination` object
      - `href` string
  - `amount` TransferAmount, required
    - `value` string, required
    - `currency` string, required
  - `metadata` object
  - `fees` object[]
    - `_links` object
      - `charge-to` object
        - `href` string
    - `amount` TransferAmount
      - `value` string, required
      - `currency` string, required
  - `clearing` object
    - `source` string
    - `destination` string
  - `achDetails` object
    - `source` object
      - `addenda` object
        - `values` string[]
    - `destination` object
      - `addenda` object
        - `values` string[]
  - `rtpDetails` object — Real-Time Payments (RTP) specific transaction details.
    - `destination` object — RTP details for the destination
      - `remittanceData` string — Remittance information for Real-Time Payments, providing context about the payment purpose
  - `instantDetails` object — Instant Payments specific transaction details for both RTP and FedNow networks.
    - `destination` object — Instant payment details for the destination
      - `remittanceData` string — Remittance information for Instant Payments (RTP/FedNow), providing context about the payment purpose
  - `correlationId` string
  - `processingChannel` object
    - `destination` 'real-time-payments' | 'instant'

## Response `201`

created

## Other responses

- `400` — Bad Request
- `403` — Forbidden
- `429` — Too Many Requests

## Changes

- **2025-12-11** `cc67dc949947` — 2 breaking, 1 warning
  - added the new required request property `fees/items/amount/value`
  - the request property `fees/items/amount/currency` became required
  - removed the request property `fees/items/amount/amount`
- **2025-10-01** `df0692083893` — 1 info
  - added the new optional `header` request parameter `Idempotency-Key`
- **2025-07-24** `a4bc838f854b` — 2 breaking, 1 warning, 3 info
  - request property `processingChannel/destination` was restricted to a list of enum values
  - added the pattern `^[A-Za-z0-9\s\-_\.\/\(\),]*$` to the request property `rtpDetails/destination/remittanceData`
  - the `rtpDetails/destination/remittanceData` request property's maxLength was set to `140`
  - added the new optional request property `instantDetails`
  - …2 more
- **2025-06-06** `231d0268586b` — 1 breaking, 140 info
  - request body became required
  - the response property `code` became required for the status `429`
  - the response property `message` became required for the status `429`
  - the response property `oneOf[subschema #10: InsufficientFundsError]/code` became required for the status `400`
  - …137 more
- **2025-05-23** `4c8b16e05918` — 1 breaking
  - added the new required `header` request parameter `Accept`

[Change history](https://skmtc.dev/dwolla/apis/dwolla-api/changes/transfers/post.md)

---

[API](https://skmtc.dev/dwolla/apis/dwolla-api.md) · [All operations](https://skmtc.dev/dwolla/apis/dwolla-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/dwolla/dwolla-api/revisions/36925bea9e06/schema)
