Procare Pay Scheduled Payments

Complete API Documentation for Scheduled Payment Processing

Create Scheduled Payment Group

POST /rest/merchants/{MID}/groups

Description: Creates a new scheduled payment group. You may optionally include an array of payments in the same request to create the group and its payments atomically. Payments can also be added later via the Add Payment endpoint.

Best practice: Include payments in the initial create request whenever possible. This reduces the total number of API calls and ensures the group and its payments are created together.

Path Parameters

MID (required)
Type: string — 8 or 11 digits
Description: The Procare Pay merchant ID (TEID).
Example: 32350000576

Request Body

FieldTypeRequiredDescription
procarePayIdstringRequiredProcare Pay merchant ID for this group.
scheduleDatestring (date)RequiredUTC date to process payments. Format: yyyy-MM-dd.
scheduleHourinteger (0–23)RequiredUTC hour to process payments on scheduleDate.
locationIdintegerRequiredLocation (school) ID for this group.
transactionInitiatorstringOptionalMerchant (default) or Consumer.
surchargeCompliancebooleanOptionalEnforce surcharge compliance rules. Default: false.
allowPartialbooleanOptionalAllow partial authorizations for payments in this group.
applicationIdintegerOptionalApplication ID to associate with this group.
paymentsarrayOptionalPayments to create and add to the group. See Payment fields.

Payment Object Fields (within payments array)

FieldTypeRequiredDescription
profileIdstringRequiredTokenized payment method: [ProfileID]/[AccountID].
amountnumberRequiredPayment amount.
orderIdstringOptionalExternal order reference.
recurringbooleanOptionalPart of a recurring series. Default: false.
allowPartialbooleanOptionalAllow partial authorization for this payment.
sendEmailReceiptbooleanOptionalSend receipt email after settlement. Default: false. Can be updated later.
sendPaymentScheduledNotificationbooleanOptionalSend scheduling notification email now. Default: false. Immutable after creation.
customAttributesobjectOptionalKey-value pairs for integrator use.
feesarrayOptionalFees associated with this payment.
sendPaymentScheduledNotification is immutable. Once a payment is created, this flag cannot be changed via PUT. Set it correctly here at creation time. Changing it via PUT will return a 400 error.

Example Request

POST /rest/merchants/32350000576/groups
Authorization: Bearer <token>
Content-Type: application/json

{
  "procarePayId": "32350000576",
  "scheduleDate": "2030-12-31",
  "scheduleHour": 22,
  "locationId": 12,
  "transactionInitiator": "Merchant",
  "surchargeCompliance": false,
  "payments": [
    {
      "profileId": "5380083609111899173/5274056435998490280",
      "amount": 125.00,
      "sendEmailReceipt": true,
      "sendPaymentScheduledNotification": true,
      "customAttributes": { "invoiceId": "INV-2030-001" }
    },
    {
      "profileId": "9876543210987654321/1234567890123456789",
      "amount": 75.50,
      "sendEmailReceipt": false,
      "sendPaymentScheduledNotification": false
    }
  ]
}

Responses

201 Created

Returns the created group including all embedded payments.

{
  "paymentGroupId": "01234567-abcd-1234-9876-abcdef123456",
  "procarePayId": "32350000576",
  "scheduleDate": "2030-12-31",
  "scheduleHour": 22,
  "locationId": 12,
  "transactionInitiator": "Merchant",
  "surchargeCompliance": false,
  "allowPartial": null,
  "deleted": false,
  "paymentCount": 2,
  "totalAmount": 200.50,
  "dateCreated": "2025-06-01T14:30:00Z",
  "lastUpdated": "2025-06-01T14:30:00Z",
  "payments": [
    {
      "paymentId": "aaaaaaaa-1111-2222-3333-444444444444",
      "paymentGroupId": "01234567-abcd-1234-9876-abcdef123456",
      "profileId": "5380083609111899173/5274056435998490280",
      "amount": 125.00,
      "deleted": false,
      "sendEmailReceipt": true,
      "sendPaymentScheduledNotification": true,
      "customAttributes": { "invoiceId": "INV-2030-001" }
    },
    {
      "paymentId": "bbbbbbbb-5555-6666-7777-888888888888",
      "paymentGroupId": "01234567-abcd-1234-9876-abcdef123456",
      "profileId": "9876543210987654321/1234567890123456789",
      "amount": 75.50,
      "deleted": false,
      "sendEmailReceipt": false,
      "sendPaymentScheduledNotification": false
    }
  ]
}

Error Responses

StatusMeaning
400Validation error — missing required fields, invalid date/time values, or malformed request.
401Missing or expired bearer token.
500Unexpected server error.