Skip to main content
Consumers represent the individuals whose payments are being reported to credit bureaus. You register a consumer once, then create tradelines and report payments against them.

Creating a consumer

curl -X POST https://vvdufluovypptsnkihyv.supabase.co/functions/v1/consumers \
  -H "x-api-key: sk_test_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Jane",
    "last_name": "Doe",
    "date_of_birth": "1990-05-15",
    "ssn": "123-45-6789",
    "phone": "+15551234567",
    "email": "[email protected]",
    "address": {
      "street": "123 Main St",
      "city": "Austin",
      "state": "TX",
      "postal_code": "73301"
    },
    "external_id": "sp-user-001"
  }'

Required fields

FieldTypeDescription
first_namestringMax 25 chars
last_namestringMax 25 chars
date_of_birthstringYYYY-MM-DD
phonestringE.164 format (e.g., +15551234567)
emailstringValid email address
addressobjectStreet, city, state (2-char), postal_code

Optional fields

FieldTypeDescription
middle_namestringMax 25 chars
ssnstringSSN (XXX-XX-XXXX or XXXXXXXXX). Encrypted at rest, never returned.
address.countrystring2-char ISO code. Default: US
external_idstringYour internal ID. Max 255 chars.

SSN handling

SSNs are encrypted at rest using PGP symmetric encryption and are never returned in any API response, including GET requests.
You can update an SSN via PATCH /consumers/:id — the new value will be re-encrypted.

Uniqueness

Uniqueness is enforced per-partner on email and external_id. Attempting to create a duplicate returns 409 CONFLICT.

Soft deletion

DELETE /consumers/:id is a soft delete:
  • Sets deleted_at to the current timestamp
  • Deactivates all related tradelines (is_active = false)
  • Consumer no longer appears in list results or is accessible by ID
Delete response
{ "message": "Consumer deleted" }

Listing and filtering

curl "https://vvdufluovypptsnkihyv.supabase.co/functions/v1/[email protected]" \
  -H "x-api-key: sk_test_your_api_key_here"
FilterTypeDescription
emailstringExact match
external_idstringExact match
phonestringExact match
See Pagination for page and per_page params.