API Reference


Scheduled Payments — API Reference

Endpoints

MethodPathDescription
POST/api/v2/scheduled-paymentCreate a scheduled payment
GET/api/v2/scheduled-paymentList or retrieve scheduled payments
POST/api/v2/scheduled-payment/cancelCancel an entire schedule
POST/api/v2/scheduled-payment/editUpdate the amount for an entire schedule
POST/api/v2/scheduled-payment/upcoming-payment/cancelCancel a single upcoming payment
POST/api/v2/scheduled-payment/upcoming-payment/editEdit a single upcoming payment

POST /api/v2/scheduled-payment

Creates a scheduled payment. All future payment dates are calculated and stored at creation time.

Request parameters

Required

ParameterTypeDescription
AmountdecimalPayment amount (e.g. 100.00)
CurrencystringCurrency code (e.g. CAD, USD)
PaymentTypestringdebit to collect funds from the customer; credit to send funds to the customer
PaymentRailstringPayment method (e.g. EFT, ACH)
StartDateTimestringEarliest date to begin payments. Format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS. Must be tomorrow or later.
TokenstringBank account or payment method token
NumberOfPaymentsintegerHow many payments to schedule (required when Repeats is set)

Optional

ParameterTypeDefaultDescription
RepeatsstringRecurrence frequency. Omit for a one-time payment. See Frequency values.
Intervalinteger1How many units to advance per period. Only applies to daily, weekly, monthly, and annually. Range: 1–365.
ByDaystringPin payments to a specific weekday. Only applies to weekly and monthly. See ByDay values.
ClientReferenceNumberstringYour own reference ID for this payment
NotesstringFree-text notes attached to the payment
GLCodestringGeneral ledger code for accounting purposes
ClientAccountIDstringClient account to associate this payment with

Frequency values

RepeatsDescription
dailyEvery calendar day
weeklyEvery 7 days (use Interval to skip multiples; use ByDay to pin to a weekday)
bi-weeklyEvery 14 days
monthlySame date each month (use Interval for every N months; use ByDay for a specific weekday)
semi-monthlyTwice a month — 15th and last day
quarterlyEvery 3 months
semi-annuallyEvery 6 months
annuallyOnce a year
weekdaysEvery Monday through Friday

ByDay values

With Repeats: weekly — two-letter weekday abbreviation only:

MO TU WE TH FR SA SU

With Repeats: monthly — ordinal (1–4 or -1 for last) followed by weekday:

ExampleMeaning
1MOFirst Monday of the month
2TUSecond Tuesday of the month
3FRThird Friday of the month
4WEFourth Wednesday of the month
-1FRLast Friday of the month
-1MOLast Monday of the month
🚧

ByDay cannot be used with bi-weekly, semi-monthly, quarterly, semi-annually, annually, or weekdays.

Request examples

One-time payment

{
  "Amount": "250.00",
  "Currency": "CAD",
  "PaymentType": "debit",
  "PaymentRail": "EFT",
  "StartDateTime": "2026-06-01",
  "Token": "bank-token-abc",
  "NumberOfPayments": 1
}

Monthly recurring (every month on the same date)

{
  "Amount": "99.00",
  "Currency": "CAD",
  "PaymentType": "debit",
  "PaymentRail": "EFT",
  "StartDateTime": "2026-06-01",
  "Token": "bank-token-abc",
  "Repeats": "monthly",
  "NumberOfPayments": 12
}

Every other Friday

{
  "Amount": "500.00",
  "Currency": "CAD",
  "PaymentType": "credit",
  "PaymentRail": "EFT",
  "StartDateTime": "2026-06-01",
  "Token": "bank-token-abc",
  "Repeats": "weekly",
  "Interval": 2,
  "ByDay": "FR",
  "NumberOfPayments": 26
}

3rd Friday of every month

{
  "Amount": "1000.00",
  "Currency": "USD",
  "PaymentType": "debit",
  "PaymentRail": "ACH",
  "StartDateTime": "2026-06-01",
  "Token": "bank-token-abc",
  "Repeats": "monthly",
  "ByDay": "3FR",
  "NumberOfPayments": 12
}

Response

{
  "Success": true,
  "ErrorMessage": "",
  "ScheduledPaymentsID": 1042,
  "Amount": "99.00",
  "Repeats": "monthly",
  "Interval": 1,
  "ByDay": "",
  "StartDateTime": "2026-06-01 21:00:00",
  "Notes": "",
  "ClientReferenceNumber": "",
  "GLCode": ""
}
FieldDescription
ScheduledPaymentsIDUnique ID for this schedule. Use it to retrieve, edit, or cancel.
IntervalThe interval in effect (1 if not specified)
ByDayThe ByDay value in effect (empty string if not specified)

GET /api/v2/scheduled-payment

Returns scheduled payments for your account. Pass ScheduledPaymentsID to fetch a single record, or use filters to list multiple.

Request parameters (all optional)

ParameterTypeDescription
ScheduledPaymentsIDintegerFetch a specific scheduled payment by ID
LimitintegerMaximum number of results to return
OffsetintegerNumber of results to skip (for pagination)
StartDatestringFilter by schedule start date (from) — format YYYY-MM-DD HH:MM:SS
EndDatestringFilter by schedule start date (to) — format YYYY-MM-DD HH:MM:SS
RepeatsstringFilter by frequency
PaymentTypestringFilter by debit or credit
CurrencystringFilter by currency code
PaymentRailstringFilter by payment method
TokenstringFilter by token
GLCodestringFilter by GL code
ClientAccountIDstringFilter by client account

Response

{
  "PaginationMetaData": {
    "TotalRecords": 1,
    "Offset": 0,
    "Limit": 10
  },
  "ScheduledPayment": [
    {
      "ID": 1042,
      "ClientAccountID": "",
      "Amount": "99.00",
      "Currency": "CAD",
      "PaymentType": "debit",
      "TransactionType": "EFT",
      "Token": "bank-token-abc",
      "ClientReferenceNumber": "",
      "Notes": "",
      "StartDateTime": "2026-06-01 21:00:00",
      "NumberOfPayments": 12,
      "Repeats": "monthly",
      "Interval": 1,
      "ByDay": "",
      "GLCode": "",
      "UpcomingTransactions": [
        {
          "ID": 5501,
          "TransactionID": "",
          "ScheduledDate": "2026-07-01 21:00:00",
          "LastModified": "",
          "Status": "upcoming",
          "Amount": "99.00"
        }
      ],
      "CompletedTransactions": [
        {
          "ID": 5500,
          "TransactionID": "txn-789",
          "ScheduledDate": "2026-06-01 21:00:00",
          "LastModified": "2026-06-01 21:00:42",
          "Status": "successful",
          "Amount": "99.00"
        }
      ]
    }
  ]
}

POST /api/v2/scheduled-payment/cancel

Cancels an entire schedule, marking all remaining upcoming payments as cancelled.

Request parameters

ParameterTypeRequiredDescription
ScheduledPaymentsIDintegerYesID of the schedule to cancel

Response

{
  "Success": true,
  "ErrorMessage": "",
  "Status": "cancelled"
}

POST /api/v2/scheduled-payment/edit

Updates the amount for all remaining upcoming payments in a schedule.

Request parameters

ParameterTypeRequiredDescription
ScheduledPaymentsIDintegerYesID of the schedule to update
AmountdecimalYesNew amount to apply to all upcoming payments

Response

{
  "Success": true,
  "ErrorMessage": ""
}

POST /api/v2/scheduled-payment/upcoming-payment/cancel

Cancels a single upcoming payment without affecting the rest of the schedule.

Request parameters

ParameterTypeRequiredDescription
ScheduledPaymentDetailsIDintegerYesID of the specific upcoming payment to cancel

Response

{
  "Success": true,
  "ErrorMessage": "",
  "Status": "cancelled"
}

POST /api/v2/scheduled-payment/upcoming-payment/edit

Updates the amount and/or date of a single upcoming payment without affecting the rest of the schedule.

Request parameters

ParameterTypeRequiredDescription
ScheduledPaymentDetailsIDintegerYesID of the specific upcoming payment to edit
AmountdecimalNoNew amount for this payment only
DatestringNoNew date for this payment only — format YYYY-MM-DD or YYYY-MM-DD HH:MM:SS. Must be tomorrow or later.

Response

{
  "Success": true,
  "ErrorMessage": ""
}

Error responses

All endpoints return a consistent error shape when something goes wrong:

{
  "Success": false,
  "ErrorMessage": "A description of what went wrong."
}

Common error conditions:

ScenarioMessage
StartDateTime is today or in the pastStartDateTime must be greater than or equal to tomorrow's date
ByDay used with an incompatible RepeatsByDay can only be used with weekly or monthly frequency
ByDay format is wrong for the frequencyByDay for monthly frequency must include an ordinal and weekday (e.g. 3FR, -1MO)
Interval is out of rangeInterval must be between 1 and 365
ScheduledPaymentsID not foundScheduled payment does not exist in our records
Trying to edit/cancel an already-cancelled scheduleYou can only modify scheduled payments that are in upcoming status