Create multiple contributions for a specified employer in a single request. Contributions are processed asynchronously — the response returns an upload ID that can be used to track processing status via the Uploads endpoints.
Body
Required
-
Identifier for the employee associated with the contribution.
-
The amount of the employer's contribution for the given pay period.
-
The amount of the employee's contribution for the given pay period.
-
The start date of the pay period, in YYYY-MM-DD format.
-
The end date of the pay period, in YYYY-MM-DD format.
POST
/employers/{employerId}/contributions
curl \
--request POST 'https://partner-api.getpenfold.com/v1/employers/{employerId}/contributions' \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '[{"employeeId":"e9876-wxyz-4321-stuv","employerContributionsAmount":1200.0,"employeeContributionsAmount":300.0,"payPeriodStartDate":"2023-03-01","payPeriodEndDate":"2023-03-15"}]'
Request examples
[
{
"employeeId": "e9876-wxyz-4321-stuv",
"employerContributionsAmount": 1200.0,
"employeeContributionsAmount": 300.0,
"payPeriodStartDate": "2023-03-01",
"payPeriodEndDate": "2023-03-15"
}
]
Response examples (201)
{
"id": "u1234-abcd-5678-efgh",
"status": "ReceivedFile",
"createdAt": "2023-03-01T12:00:00Z"
}
Response examples (400)
{
"error": "validation failed",
"validationErrors": [
{
"field": "companyNumber",
"message": "companyNumber is required"
},
{
"field": "primaryContactEmail",
"message": "must be a valid email address"
}
]
}
Response examples (401)
{
"error": "unauthorized"
}
Response examples (404)
{
"error": "not found"
}
Response examples (500)
{
"error": "internal server error"
}