Scheduled transfers Beta

Automate money movement on a recurring basis. Define a recurring schedule with a transfer amount, source, and destination.
Moov is looking for early adopters to test and provide feedback on schedules. Contact our team.

With scheduled transfers, you can create a schedule for a variety of purposes, such as sending payments, setting up a subscription or financing. You can create a schedule specific to your needs, or set RRULE and let Moov create the schedule.

Set up a schedule

You can set up a schedule of future-dated transfers in a combination of ways - by generating a schedule through Moov, or by providing your own specific future dates.

Creating a schedule

Provide transfer details and a recurrence rule for Moov to generate each occurrence of a transfer dated for the future. The recurrenceRule accepts a string that conforms to the RRULE. This option is useful for creating a schedule that continues indefinitely or until a date or count where all transfer details are the same.

For the account being charged, create a schedule using POST /accounts/{accountID}/schedules

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
{
  "description": "Monthly subscription",
  "recurTransfer": {
    "transfer": {
      "amount": {
        "currency": "USD",
        "amount": 1000
      },
      "partnerAccountID": "partner-account-ID",
      "source": {
        "paymentMethodID": "payment-method-ID"
      },
      "destination": {
        "paymentMethodID": "payment-method-ID"
      }
    },
    "recurrenceRule": "FREQ=MONTHLY;DTSTART=20460101T150405Z;COUNT=36"
  }
}

A recurrence rule is typically made up of the following:

  • FREQ - frequency (daily, weekly, monthly) (required)
  • INTERVAL - interval (1, 2, etc)
  • DTSTART - The recurrence start date
  • UNTIL - The recurrence end date. Not present if indefinite
  • COUNT - The number of occurrences that will be generated. Not present if indefinite

Once DTSTART is set it should not be changed as it can cause unintended changes to occurrence timing. We suggest you set it to a static value you can continuously use when creating schedules, or leave it empty, which will allow Moov to use our own static value.

Create the occurrences of each transfer with a specific date for Moov to initiate them. This option is recommended if the transfer details differ between any occurrences, or if the recurring dates don’t follow a pattern supported by RRULE.

For the account being charged, create a schedule using POST /accounts/{accountID}/schedules

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
  "description": "Repayment",
  "occurrences": [
    {
      "runOn": "datetime",
      "transfer": {
        "amount": {
          "currency": "USD",
          "amount": 1000
        },
        "partnerAccountID": "partner-account-ID",
        "source": {
          "paymentMethodID": "payment-method-ID"
        },
        "destination": {
          "paymentMethodID": "payment-method-ID"
        }
      }
    },
    // remaining occurrences
  ]
}

It’s possible to combine recurTransfer and occurrences into a single schedule, such as for a one-time charge along with scheduled transfers.

For projects written in Go, we recommend rrule-go if you need to support complex recurring rules. For Node.js projects, we recommend rrule.js.

Manage schedules

Once created, a schedule can be updated to:

  • Modify or cancel an future individual occurrences.
  • Change the recurrence rule. Future occurrences will shift according to the new rule.
  • Add a new one time occurrence. For example, a fine, or to retry a failed occurrence.
  • Update the transfer, or runOn time of an individual occurrence.
  • Update one transfer in a set of recurring transfers and have the updates apply to all future recurring occurrences.

Once created, a schedule can be updated to modify or remove individual occurrences, as well as stop any future transfers from being created. However, transfers that have already been created from a schedule will not be canceled by updating a schedule. Occurrences past the runOn time cannot be changed.

You can list all schedules for an account with the GET /accounts/{accountID}/schedules endpoint. This is useful for displaying any scheduled payments to a user, such as the next payment date and amount.

Automatic updates to payment methods

For debit and credit card payments that have card-on-file enabled, any issuer updates to the card will allow future-dated transfers to process.

Card-based transfers in a schedule are also automatically set with the correct transactionSource specifying first-recurring or recurring.

Likewise, for bank accounts, if Moov receives a notice of change from the receiving financial institution, the bank account will be automatically updated to prevent interruption.

Summary Beta