MyChurchDocs

Members and children

The church's member register: congregants and visitors, their family links, groups and status, and the children registered under them.

Read routes accept church:members:view, and also head_office:churches:view or system:churches:view with an X-Church header (see the overview). Members registered through the app or USSD arrive here with status pending when the church approves new members, and move to active with the status route.

Members

RoutePermissionPurpose
GET/v1/memberschurch:members:viewList members. Filters: q (name, phone, member number), status, kind (member | visitor), gender, department, cell_group, age_group (uuids), sort (name | newest | number), page, page_size.
GET/v1/members/statschurch:members:viewCounts: total, active, pending, inactive, visitors, children, new this month.
GET/v1/members/searchchurch:members:viewQuick search for pickers (q), returning uuid, name and phone.
GET/v1/members/age-groupschurch:members:viewThe church's age groups, for the age_group field.
POST/v1/memberschurch:members:createRegister a member.
GET/v1/members/{uuid}church:members:viewOne member with spouse, parent, departments and cell groups.
PUT/v1/members/{uuid}church:members:editUpdate a member (PATCH accepted). Same body as create, without pin.
POST/v1/members/{uuid}/statuschurch:members:approve or church:members:editSet status: active, inactive or pending (approves pending registrations).
DELETE/v1/members/{uuid}church:members:deleteRemove a member. The record is kept for giving history but leaves every list.

Member fields

Parameters

FieldTypeRequiredDescription
first_namestringYesFirst name.
other_namesstringNoSurname and any other names.
middle_namestringNoMiddle name.
phonestringNoPrimary phone. 07..., 2547... and +2547... accepted. It is the member's app login, so another member of the church with the same number answers 409.
alternative_phonestringNoA second number.
emailstringNoEmail, used for statements.
physical_addressstringNoWhere the member lives.
date_of_birthdateNoYYYY-MM-DD. Drives birthday messages and the age group.
genderstringNomale or female.
marital_statusstringNosingle, married, single_parent, widowed or divorced.
married_ondateNoWedding date, for anniversary messages.
kindstringNomember (default) or visitor.
member_typestringNoThe church's member type label.
member_numberstringNoThe church's member number. Generated with the church's prefix when left blank.
tithe_numberstringNoTithe card number, if the church uses them.
date_joineddateNoWhen the member joined.
is_baptisedbooleanNoBaptised or not; baptism_date and confirmation_date alongside.
age_group_uuiduuidNoOne of GET /v1/members/age-groups.
spouse_uuiduuidNoLink to the spouse's member record.
parent_uuiduuidNoLink to a parent's member record.
departmentsuuid[]NoDepartments and ministries to join.
cell_groupsuuid[]NoCell groups to join.
pinstringNoCreate only: a 4-digit app PIN. Without it the member sets one at first app login.
# Paste your token once (it starts with mc_):
export MYCHURCH_TOKEN="mc_your_token_here"

curl -X POST https://uat-api.mychurch.co.ke/v1/members \
  -H "Authorization: Bearer $MYCHURCH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Jane",
    "other_names": "Wanjiku",
    "phone": "0712345678",
    "email": "[email protected]",
    "gender": "female",
    "date_of_birth": "1990-04-12",
    "marital_status": "married",
    "departments": [
      "5d1c0a3e-0000-4000-8000-00000000d001"
    ]
  }'
200 OK
{
  "success": true,
  "data": {
    "uuid": "0b6f4c1e-1111-4a2b-9c3d-000000000001",
    "first_name": "Jane",
    "other_names": "Wanjiku",
    "name": "Jane Wanjiku",
    "phone": "254712345678",
    "email": "[email protected]",
    "date_of_birth": "1990-04-12T00:00:00Z",
    "gender": "female",
    "marital_status": "married",
    "kind": "member",
    "status": "active",
    "member_type": "member",
    "member_number": "EFC0412",
    "is_baptised": false,
    "has_pin": false,
    "departments": [{ "uuid": "5d1c0a3e-0000-4000-8000-00000000d001", "name": "Choir" }],
    "created_at": "2026-11-01T09:12:44Z",
    "updated_at": "2026-11-01T09:12:44Z"
  }
}

Phones and hashed phones

The api stores every phone in international form and keeps a SHA-256 hash beside it, because Safaricom sends payers' numbers hashed. A correct phone on the member record is what lets a paybill payment land on the right member automatically.

Children

Children are registered under a parent member and are what Sunday school check-in and checkout work with.

RoutePermissionPurpose
GET/v1/childrenchurch:children:view or church:members:viewList children. Filters: q, status, parent (member uuid), page, page_size.
POST/v1/childrenchurch:children:manageRegister a child: first_name, other_names, gender, date_of_birth, child_phone, parent_uuid.
PUT/v1/children/{uuid}church:children:manageUpdate a child (PATCH accepted).
DELETE/v1/children/{uuid}church:children:manageRemove a child.

Related

  • Bulk registration from a spreadsheet: Imports.
  • Department and cell group membership: Groups.
  • Who must approve new members, and the member number prefix: Settings.