POST /transfer/create

Use the /transfer/create endpoint to initiate a new transfer. This endpoint is retryable and idempotent; if a transfer with the provided transfer_id has already been created, it will return the transfer details without creating a new transfer. A transfer may still be created if a 500 error is returned; to detect this scenario, use Transfer events.

Servers

Request headers

Name Type Required Description
Content-Type String Yes The media type of the request body.

Default value: "application/json"

Request body fields

Name Type Required Description
network String No

The network or rails used for the transfer.

For transfers submitted as ach, the next-day cutoff is 8:30 PM Eastern Time.

For transfers submitted as same-day-ach, the same-day cutoff is 3:30 PM Eastern Time. If the transfer is submitted after this cutoff but before the next-day cutoff, it will be sent over next-day rails and will not incur same-day charges; this will apply to both legs of the transfer if applicable.

For transfers submitted as rtp, Plaid will automatically route between Real Time Payment rail by TCH or FedNow rails as necessary. If a transfer is submitted as rtp and the counterparty account is not eligible for RTP, the /transfer/authorization/create request will fail with an INVALID_FIELD error code. To pre-check to determine whether a counterparty account can support RTP, call /transfer/capabilities/get before calling /transfer/authorization/create.

Wire transfers are currently in early availability. To request access to wire as a payment network, contact your Account Manager. For transfers submitted as wire, the type must be credit; wire debits are not supported. The cutoff to submit a wire payment is 4:30 PM Eastern Time on a business day; wires submitted after that time will be processed on the next business day. The transaction limit for a wire is $999,999.99. Authorization requests sent with an amount greater than $999,999.99 will fail.

Possible values:

  • "ach"
  • "rtp"
  • "same-day-ach"
  • "wire"
description String Yes

The transfer description. Maximum of 15 characters. If reprocessing a returned transfer, please note that the description field must be "Retry 1" or "Retry 2" to indicate that it's a retry of a previously returned transfer. You may retry a transfer up to 2 times, within 180 days of creating the original transfer. Only transfers that were returned with code R01 or R09 may be retried. For a full listing of ACH return codes, see Transfer errors.

client_id String No

Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.

metadata Object No

The Metadata object is a mapping of client-provided string fields to any string value. The following limitations apply: The JSON values must be Strings (no nested JSON objects allowed) Only ASCII characters may be used Maximum of 50 key/value pairs Maximum key length of 40 characters Maximum value length of 500 characters

test_clock_id String No

Plaid’s unique identifier for a test clock. This field may only be used when using sandbox environment. If provided, the transfer is created at the virtual_time on the provided test_clock.

idempotency_key String No

Deprecated. authorization_id is now used as idempotency instead.

A random key provided by the client, per unique transfer. Maximum of 50 characters.

The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. For example, if a request to create a transfer fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single transfer is created.

iso_currency_code String No

The currency of the transfer amount. The default value is "USD".

authorization_id String Yes

Plaid’s unique identifier for a transfer authorization. This parameter also serves the purpose of acting as an idempotency identifier.

facilitator_fee String No

The amount to deduct from transfer.amount and distribute to the platform’s Ledger balance as a facilitator fee (decimal string with two digits of precision e.g. "10.00"). The remainder will go to the end-customer’s Ledger balance. This must be value greater than 0 and less than or equal to the transfer.amount.

user Object No

The legal name and other information for the account holder.

user.email_address String No

The user's email address.

user.legal_name String No

The user's legal name.

user.address Object No

The address associated with the account holder.

user.address.region String No

The state or province (e.g., "CA").

user.address.postal_code String No

The postal code (e.g., "94103").

user.address.country String No

A two-letter country code (e.g., "US").

user.address.street String No

The street number and name (i.e., "100 Market St.").

user.address.city String No

Ex. "San Francisco"

user.phone_number String No

The user's phone number.

origination_account_id String No

Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination account, this value must be specified. Otherwise, this field should be left blank.

amount String No

The amount of the transfer (decimal string with two digits of precision e.g. "10.00"). When calling /transfer/authorization/create, specify the maximum amount to authorize. When calling /transfer/create, specify the exact amount of the transfer, up to a maximum of the amount authorized. If this field is left blank when calling /transfer/create, the maximum amount authorized in the authorization_id will be sent.

ach_class String No

Specifies the use case of the transfer. Required for transfers on an ACH network. For more details, see ACH SEC codes.

Codes supported for credits: ccd, ppd Codes supported for debits: ccd, tel, web

"ccd" - Corporate Credit or Debit - fund transfer between two corporate bank accounts

"ppd" - Prearranged Payment or Deposit - The transfer is part of a pre-existing relationship with a consumer. Authorization was obtained in writing either in person or via an electronic document signing, e.g. Docusign, by the consumer. Can be used for credits or debits.

"web" - Internet-Initiated Entry. The transfer debits a consumer’s bank account. Authorization from the consumer is obtained over the Internet (e.g. a web or mobile application). Can be used for single debits or recurring debits.

"tel" - Telephone-Initiated Entry. The transfer debits a consumer. Debit authorization has been received orally over the telephone via a recorded call.

Possible values:

  • "ppd"
  • "web"
  • "tel"
  • "ccd"
type String No

The type of transfer. This will be either debit or credit. A debit indicates a transfer of money into the origination account; a credit indicates a transfer of money out of the origination account.

Possible values:

  • "credit"
  • "debit"
account_id String Yes

The Plaid account_id corresponding to the end-user account that will be debited or credited.

access_token String Yes

The Plaid access_token for the account that will be debited or credited.

secret String No

Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.

How to start integrating

  1. Add HTTP Task to your workflow definition.
  2. Search for the API you want to integrate with and click on the name.
    • This loads the API reference documentation and prepares the Http request settings.
  3. Click Test request to test run your request to the API and see the API's response.