Create a manage session
Lets a donor change or cancel a recurring gift from your account
area. Returns a Roster-hosted url (https://flow…/m/{token}) that
opens the manage flow for one enrollment at one of your churches.
Pass that URL to Roster.open on your account-area page.
- The donor still confirms with a code sent to their phone. You never change or cancel a gift yourself: the manage session only opens the donor's own flow.
-
urlis returned once, on creation only, with a single-use token and a 30-minute TTL. Idempotent replays return the session withouturl. -
donor_phone(optional) travels in the POST body and is never echoed back. Today the manage flow does not fill it in: the donor types their phone number and confirms it with the code. -
An enrollment that is not yours — not at one of your churches, or
made through another partner at a church you share — is rejected
with the same
400as one that does not exist. -
Manage sessions do not appear in
GET /v1/donor_sessions/{id}or inpartner_session.*events. Changes the donor makes arrive as enrollment events.
Headers
- Type: stringIdempotency
- Key min length:1max length:255requiredRequired on every POST, before any effect: 1–255 visible ASCII characters, no spaces. The key belongs to the first body sent with it on this operation for 30 days from the moment that request arrives, including while that request is running and after a
5xxor a timeout. On an operation that creates a resource (POST /v1/churches,POST /v1/churches/import,POST /v1/church_consents,POST /v1/donor_sessions,POST /v1/manage_sessions,POST /v1/refundsandPOST /v1/webhook_endpoints), a key whose request succeeded keeps its body for as long as the resource it created exists. A creation replayed with the same key and body returns the original resource with200and changes nothing; a4xxreleases the key.
Body·
- Type: stringenrollment
_id requiredThe recurring gift the donor will change or cancel. It must be at one of your churches and not made through another partner.
- Type: stringchurch
_id Optional. The church of the enrollment, to find it faster.
- Type: stringdonor
_phone Donor phone number, including country code (for example +12025550100). Never echoed back. Today the manage flow does not fill it in: the donor types their phone number and confirms it with a code sent to it.
Responses
- application/json
- application/json
- application/problem+json
- application/problem+json
- application/problem+json
- application/problem+json
curl https://api.sandbox.rostergiving.com/v1/manage_sessions \
--request POST \
--header 'Idempotency-Key: ' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"enrollment_id": "",
"church_id": "",
"donor_phone": "+12025550100"
}'
{
"id": "ms_1a2b3c4d5e6f",
"url": "https://example.com",
"status": "created",
"church_id": "string",
"enrollment_id": "string",
"expires_at": "2026-10-22T14:55:08.127Z"
}