Settings API

Organization profile — name, business name, display name, timezone, contact details.

Authentication: JWT Base path: /api/v1/settings

Sweep configuration is not under settings — it lives at /api/v1/sweep/config. See Sweep. Fee configuration lives at /api/v1/fees/config — see Fees.


Get organization settings

GET /api/v1/settings/organization

Response

{
  "message": "Organization settings retrieved",
  "data": {
    "id": "uuid",
    "name": "Acme Inc",
    "email": "owner@acme.com",
    "email_verified": true,
    "business_name": "Acme Holdings LLC",
    "display_name": "Acme",
    "website": "https://acme.com",
    "phone": "+15555550100",
    "timezone": "America/New_York",
    "industry": "Fintech",
    "status": "active",
    "created_at": "2026-05-01T10:00:00Z"
  }
}
Field Description
name Legal org name set at registration
email Owner email — drives login + notifications
email_verified Set once the verification code is accepted
business_name Public-facing business name
display_name Short form used in UI
website, phone, timezone, industry Org-level metadata
status active, suspended, etc. — set by platform admins

Update organization settings

PUT /api/v1/settings/organization

Role required: owner or admin.

Updates are partial — send only the fields you want to change. Omit a field to leave it untouched.

Request body

Field Type Description
business_name string Public business name
display_name string Short display name
website string Website URL
phone string Contact phone (E.164 recommended)
timezone string IANA tz name (America/New_York)

Example

curl -X PUT https://api.hasapay.com/api/v1/settings/organization \
  -H "Authorization: Bearer $JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "Acme",
    "timezone": "America/Los_Angeles"
  }'

Response

{
  "message": "Organization settings updated successfully",
  "data": {
    "id": "uuid",
    "business_name": "Acme Holdings LLC",
    "display_name": "Acme",
    "website": "https://acme.com",
    "phone": "+15555550100",
    "timezone": "America/Los_Angeles"
  }
}

Read-only fields

These are not updatable via this endpoint:

Field Where to change
name Contact support — legal name changes need verification
email Auth flow (currently no in-app change)
email_verified Verification flow — see Auth
industry Currently set at registration only
status Platform admin only

Errors

Code Cause
unauthorized No JWT
forbidden Caller is developer or viewer — only owner/admin can update
validation_error Empty body (No fields to update) or invalid field shape
not_found Org context missing — re-login