Untangly API Docs

Contracts

List, retrieve, create, and edit service contracts / billing entries.

Contracts (called service entries internally) represent services rendered to a client — including billing details like fee, tax, and total.

List contracts

GET /contracts

Query parameters

ParameterTypeDescription
clientIdstringFilter by client UUID
searchstringFilter by service name or service type
limitnumberMax results (default 50, max 100)
offsetnumberPagination offset

Example

curl "https://api.untangly.com/contracts?clientId=3fa85f64-..." \
  -H "Authorization: Bearer mint_<key>"

Response

{
  "contracts": [
    {
      "id": 42,
      "clientId": "3fa85f64-...",
      "serviceName": "2025 Tax Return",
      "serviceType": "tax-filing",
      "serviceFee": 350.0,
      "taxPercent": 13.0,
      "totalFeeWithTax": 395.5,
      "serviceDate": "2026-04-15T00:00:00.000Z",
      "notes": "T1 personal return",
      "createdAt": "2026-04-15T10:00:00.000Z",
      "updatedAt": "2026-04-15T10:00:00.000Z"
    }
  ],
  "total": 1
}

Get contract details

GET /contracts/{id}

id is a numeric contract ID.


Add a contract

POST /contracts

Request body

{
  "clientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "serviceName": "2025 Tax Return",
  "serviceType": "tax-filing",
  "serviceFee": 350.0,
  "taxPercent": 13,
  "serviceDate": "2026-04-15",
  "notes": "T1 personal return"
}
FieldTypeRequiredDescription
clientIdstringUUID of the client
serviceNamestringDisplay name for the service
serviceTypestringCategory (e.g. "tax-filing", "bookkeeping")
serviceFeenumberFee before tax
taxPercentnumberTax percentage (default 0)
serviceDatestringISO date YYYY-MM-DD
notesstring

totalFeeWithTax is calculated automatically as serviceFee × (1 + taxPercent / 100).

Example

curl -X POST https://api.untangly.com/contracts \
  -H "Authorization: Bearer mint_<key>" \
  -H "Content-Type: application/json" \
  -d '{
    "clientId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "serviceName": "2025 Tax Return",
    "serviceType": "tax-filing",
    "serviceFee": 350,
    "taxPercent": 13
  }'

Edit a contract

PATCH /contracts/{id}

Send only the fields you want to change. totalFeeWithTax is recalculated automatically when serviceFee or taxPercent is updated.

Example

curl -X PATCH "https://api.untangly.com/contracts/42" \
  -H "Authorization: Bearer mint_<key>" \
  -H "Content-Type: application/json" \
  -d '{"serviceFee": 400, "notes": "Updated fee after review"}'

On this page