Create a schedule | Moov Documentation

Create a schedule

Describes the schedule to create or modify.

To access this endpoint using an access token you'll need to specify the /accounts/{accountID}/transfers.write scope.

POST

/accounts/{accountID}/schedules

Ask

curl -X POST "https://api.moov.io/accounts/{accountID}/schedules" \
  -H "Authorization: Bearer {token}" \
  -H "X-Moov-Version: v2026.07.00"

Ask in Go

mc, _ := moov.NewClient()

var accountID string
now := time.Now()
start := now.AddDate(0, 1, 0)

mc.CreateSchedule(ctx, accountID, moov.CreateSchedule{
  Description: "string",

Occurrences: []moov.CreateOccurrence{
    {
      RunOn: now,
      RunTransfer: moov.CreateRunTransfer{
        Description: "Gym Dues",
        Amount: moov.ScheduleAmount{
          Value:    1204,
          Currency: "USD",
        },
        PartnerAccountID: "string",
        Source: moov.SchedulePaymentMethod{
          PaymentMethodID: "string",
        },
        Destination: moov.SchedulePaymentMethod{
          PaymentMethodID: "string",
        },
      },
    },
  },

Recur: &moov.CreateRecur{
    Start:           &start,
    RecurrenceRule: "FREQ=MONTHLY;COUNT=5",
    RunTransfer: moov.CreateRunTransfer{
      Description: "Gym Dues",
      Amount: moov.ScheduleAmount{
        Value:    1204,
        Currency: "USD",
      },
      PartnerAccountID: "string",
      Source: moov.SchedulePaymentMethod{
        PaymentMethodID: "string",
      },
      Destination: moov.SchedulePaymentMethod{
        PaymentMethodID: "string",
      },
    },
  },
})

Ask in TypeScript

import { Moov } from "@moovio/sdk";

const moov = new Moov({
  security: {
    username: "",
    password: "",
  },
});

async function run() {
  const result = await moov.scheduling.create({
    accountID: "38fd6ae1-0e70-4162-9359-d64482d61854",
    upsertSchedule: {
      occurrences: [
        {
          occurrenceID: "c520f1b9-0ba7-42f5-b977-248cdbe41c69",
          runOn: new Date("2009-11-10T23:00:00Z"),
          runTransfer: {
            amount: {
              currency: "USD",
              value: 1204,
            },
            destination: {
              paymentMethodID: "c520f1b9-0ba7-42f5-b977-248cdbe41c69",
              achDetails: {
                companyEntryDescription: "Gym dues",
                originatingCompanyName: "Whole Body Fit",
              },
              cardDetails: {
                dynamicDescriptor: "WhlBdy *Yoga 11-12",
              },
            },
            partnerAccountID: "c520f1b9-0ba7-42f5-b977-248cdbe41c69",
            source: {
              paymentMethodID: "c520f1b9-0ba7-42f5-b977-248cdbe41c69",
              achDetails: {
                companyEntryDescription: "Gym dues",
                originatingCompanyName: "Whole Body Fit",
              },
              cardDetails: {
                dynamicDescriptor: "WhlBdy *Yoga 11-12",
              },
            },
            description: "sediment yahoo a rudely mmm massive helpful brr",
          },
        },
        {
          occurrenceID: "c520f1b9-0ba7-42f5-b977-248cdbe41c69",
          runOn: new Date("2009-11-10T23:00:00Z"),
          runTransfer: {
            amount: {
              currency: "USD",
              value: 1204,
            },
            destination: {
              paymentMethodID: "c520f1b9-0ba7-42f5-b977-248cdbe41c69",
              achDetails: {
                companyEntryDescription: "Gym dues",
                originatingCompanyName: "Whole Body Fit",
              },
              cardDetails: {
                dynamicDescriptor: "WhlBdy *Yoga 11-12",
              },
            },
            partnerAccountID: "c520f1b9-0ba7-42f5-b977-248cdbe41c69",
            source: {
              paymentMethodID: "c520f1b9-0ba7-42f5-b977-248cdbe41c69",
              achDetails: {
                companyEntryDescription: "Gym dues",
                originatingCompanyName: "Whole Body Fit",
              },
              cardDetails: {
                dynamicDescriptor: "WhlBdy *Yoga 11-12",
              },
            },
            description: "sediment yahoo a rudely mmm massive helpful brr",
          },
        },
      ],
      recur: {
        recurrenceRule: "<value>",
        runTransfer: {
          amount: {
            currency: "USD",
            value: 1204,
          },
          salesTaxAmount: {
            currency: "USD",
            value: 1204,
          },
          destination: {
            paymentMethodID: "c520f1b9-0ba7-42f5-b977-248cdbe41c69",
            achDetails: {
              companyEntryDescription: "Gym dues",
              originatingCompanyName: "Whole Body Fit",
            },
            cardDetails: {
              dynamicDescriptor: "WhlBdy *Yoga 11-12",
            },
          },
          partnerAccountID: "c520f1b9-0ba7-42f5-b977-248cdbe41c69",
          source: {
            paymentMethodID: "c520f1b9-0ba7-42f5-b977-248cdbe41c69",
            achDetails: {
              companyEntryDescription: "Gym dues",
              originatingCompanyName: "Whole Body Fit",
            },
            cardDetails: {
              dynamicDescriptor: "WhlBdy *Yoga 11-12",
            },
          },
          description: "sediment yahoo a rudely mmm massive helpful brr",
          lineItems: {
            items: [],
          },
        },
        start: new Date("2009-11-10T23:00:00Z"),
      },
    },
  });

console.log(result);
}
run();

Ask in PHP

declare(strict_types=1);

require 'vendor/autoload.php';

use Moov\