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:
32350000576Request Body
| Field | Type | Required | Description |
|---|---|---|---|
procarePayId | string | Required | Procare Pay merchant ID for this group. |
scheduleDate | string (date) | Required | UTC date to process payments. Format: yyyy-MM-dd. |
scheduleHour | integer (0–23) | Required | UTC hour to process payments on scheduleDate. |
locationId | integer | Required | Location (school) ID for this group. |
transactionInitiator | string | Optional | Merchant (default) or Consumer. |
surchargeCompliance | boolean | Optional | Enforce surcharge compliance rules. Default: false. |
allowPartial | boolean | Optional | Allow partial authorizations for payments in this group. |
applicationId | integer | Optional | Application ID to associate with this group. |
payments | array | Optional | Payments to create and add to the group. See Payment fields. |
Payment Object Fields (within payments array)
| Field | Type | Required | Description |
|---|---|---|---|
profileId | string | Required | Tokenized payment method: [ProfileID]/[AccountID]. |
amount | number | Required | Payment amount. |
orderId | string | Optional | External order reference. |
recurring | boolean | Optional | Part of a recurring series. Default: false. |
allowPartial | boolean | Optional | Allow partial authorization for this payment. |
sendEmailReceipt | boolean | Optional | Send receipt email after settlement. Default: false. Can be updated later. |
sendPaymentScheduledNotification | boolean | Optional | Send scheduling notification email now. Default: false. Immutable after creation. |
customAttributes | object | Optional | Key-value pairs for integrator use. |
fees | array | Optional | Fees 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
| Status | Meaning |
|---|---|
| 400 | Validation error — missing required fields, invalid date/time values, or malformed request. |
| 401 | Missing or expired bearer token. |
| 500 | Unexpected server error. |