POST /transfer/recurring/create

Use the /transfer/recurring/create endpoint to initiate a new recurring transfer. This capability is not currently supported for Transfer UI or Platform Payments (beta) customers.

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
device Object No

Information about the device being used to initiate the authorization.

device.ip_address String Yes

The IP address of the device being used to initiate the authorization.

device.user_agent String Yes

The user agent of the device being used to initiate the authorization.

network String Yes

Networks eligible for recurring transfers.

Possible values:

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

The description of the recurring transfer.

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.

schedule Object Yes

The schedule that the recurring transfer will be executed on.

schedule.interval_execution_day Integer Yes

The day of the interval on which to schedule the transfer.

If the interval_unit is week, interval_execution_day should be an integer from 1 (Monday) to 5 (Friday).

If the interval_unit is month, interval_execution_day should be an integer indicating which day of the month to make the transfer on. Integers from 1 to 28 can be used to make a transfer on that day of the month. Negative integers from -1 to -5 can be used to make a transfer relative to the end of the month. To make a transfer on the last day of the month, use -1; to make the transfer on the second-to-last day, use -2, and so on.

The transfer will be originated on the next available banking day if the designated day is a non banking day.

schedule.start_date String Yes

A date in ISO 8601 format (YYYY-MM-DD). The recurring transfer will begin on the first interval_execution_day on or after the start_date.

For rtp recurring transfers, start_date must be in the future. Otherwise, if the first interval_execution_day on or after the start date is also the same day that /transfer/recurring/create was called, the bank may make the first payment on that day, but it is not guaranteed to do so.

schedule.end_date String No

A date in ISO 8601 format (YYYY-MM-DD). The recurring transfer will end on the last interval_execution_day on or before the end_date. If the interval_execution_day between the start date and the end date (inclusive) is also the same day that /transfer/recurring/create was called, the bank may make a payment on that day, but it is not guaranteed to do so.

schedule.interval_unit String Yes

The unit of the recurring interval.

Possible values:

  • "month"
  • "week"
schedule.interval_count Integer Yes

The number of recurring interval_units between originations. The recurring interval (before holiday adjustment) is calculated by multiplying interval_unit and interval_count. For example, to schedule a recurring transfer which originates once every two weeks, set interval_unit = week and interval_count = 2.

user_present Boolean No

If the end user is initiating the specific transfer themselves via an interactive UI, this should be true; for automatic recurring payments where the end user is not actually initiating each individual transfer, it should be false.

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 created recurring_transfer is associated with the test_clock. New originations are automatically generated when the associated test_clock advances.

idempotency_key String Yes

A random key provided by the client, per unique recurring 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 recurring fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single recurring transfer is created.

iso_currency_code String No

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

user Object Yes

The legal name and other information for the account holder.

user.email_address String No

The user's email address.

user.legal_name String Yes

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.

amount String Yes

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 Yes

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"
funding_account_id String No

Specify the account used to fund the transfer. Customers can find a list of funding_account_ids in the Accounts page of your Plaid Dashboard, under the "Account ID" column. If this field is left blank, it will default to the default funding_account_id specified during onboarding.

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.