Plaid logo
Docs
ALL DOCS

Transfer

  • Transfer Overview
  • Transfer Application
  • Creating transfers
  • Monitoring transfers
  • Plaid Ledger flow of funds
  • Transfer Dashboard
  • Refunds
  • Recurring transfers
  • Transfer UI
  • Platform Payments
  • Errors and troubleshooting
  • Testing in Sandbox
  • Legacy Flow of funds
Plaid logo
Docs
Close search modal
Ask Bill!
Ask Bill!
Hi! I'm Bill! You can ask me all about the Plaid API. Try asking questions like:
  • Why is /transactions/sync/ better than /get?
  • Do access tokens expire?
  • How do I set up Link on the web?
Note: Bill isn't perfect. He's just a robot platypus that reads our docs for fun. You should treat his answers with the same healthy skepticism you might treat any other answer on the internet. This chat may be logged for quality and training purposes. Please don't send Bill any PII -- he's scared of intimacy. All chats with Bill are subject to Plaid's Privacy Policy.
Plaid.com
Log in
Get API Keys
Open nav

Recurring Transfers

Learn how to set up and use recurring ACH transactions

Recurring transfers allow you to automatically originate fixed amount ACH transactions with a regular interval according to a schedule you define. Plaid currently supports intervals with an arbitrary number of weeks or months.

Once you set up the recurring transfer, Plaid automatically originates the ACH transaction on the planned date, defined by the recurring schedule. You can look up and cancel recurring transfers. You may also receive updates about the recurring transfer itself, as well as each individual transfer originated by the recurring transfer.

Recurring transfers cannot be used with Platform payments.

Creating a recurring transfer

Use /transfer/recurring/create to create a new recurring transfer. The request body is very similar to /transfer/authorization/create, except that you will provide an additional schedule parameter.

The schedule defines the start date and the recurring interval. Optionally, you may provide an end date, which is the last day, inclusively, that an ACH transaction can be originated. If the end date is not set, the recurring transfer remains active until it is canceled.

The recurrence interval is calculated by multiplying interval_unit by interval_count. For example, to set up a recurring transfer that's originated once every 2 weeks, set interval_unit = "week" and interval_count = 2.

The interval_execution_day parameter indicates which day in the week or month that you expect a new ACH transaction to be originated.

For a weekly recurring schedule, interval_execution_day should be an integer ranging from 1 to 5, representing Monday through Friday.

For a monthly recurring schedule, interval_execution_day should be either a positive integer ranging from 1 to 28, indicating the 1st through 28th day of the month; or a negative integer ranging from -1 to -5, where -1 is the last day of the month, -2 is the second-to-last day of the month, and so on.

Canceling a recurring transfer

To cancel a recurring transfer, use /transfer/recurring/cancel and provide the recurring_transfer_id of the recurring transfer you wish to cancel.

If you cancel a recurring transfer on the same day that a new ACH transaction is supposed to be originated, it is not guaranteed that this transaction can be canceled.

Weekend and bank holiday adjustment

If the planned origination date falls on a weekend or a bank holiday, Plaid automatically adjusts it to the next available banking day, provided that the adjusted date is on or before the schedule's end_date.

This means if the origination date after adjustment falls after the recurring schedule's end_date, it will not be originated. We recommend you always choose a banking day as the end_date in the schedule if it's needed.

Receiving updates of a recurring transfer

Plaid sends following webhook events regarding a recurring transfer:

  • RECURRING_NEW_TRANSFER when a new ACH transaction is originated on the planned date.
  • RECURRING_TRANSFER_SKIPPED when Plaid is unable to originate a new ACH transaction on the planned date due to a failed authorization, such the account having insufficient funds.
  • RECURRING_CANCELLED when the recurring transfer is cancelled by Plaid.
  • For all transfers created through recurring transfer, TRANSFER_EVENTS_UPDATE webhook events are also sent so that you can receive updates on each individual ACH transaction.

The transfers created through recurring transfer appear in the response of /transfer/list and can be queried by /transfer/get given a transfer_id. The recurring_transfer object also has a transfer_ids field, containing the ids of the transfers originated by this recurring transfer.

Was this helpful?
Developer community
GitHub
GitHub
Stack Overflow
Stack Overflow
YouTube
YouTube
Discord
Discord