/v1/rental-agreements/{id}/deductionsAdd a deduction by hand
Access: API key or member session. Permission rentals.edit.
Parameters
idpathrequired- Id
Opaque record id.
Request body
sourcerequired- "damage" | "missing_item" | "utilities" | "cleaning" | "keys" | "unpaid_rent" | …
labelrequired- string
detail- string or null
amountrequired- PaiseInput
Money in paise (₹1 = 100): an integer, or a digit string for huge amounts.
Response · 201
datarequired- RentalDepositPanel
metarequired- object
curl -X POST 'https://api.propzolo.com/v1/rental-agreements/{id}/deductions' \
-H 'Authorization: Bearer pz_live_…' \
-H 'Content-Type: application/json' \
-d '{"source":"damage","label":"string","detail":"string","amount":0}'{
"data": {
"today": "2026-10-06",
"agreement": {
"id": "cmusrceel0000q7kaafxqi1om",
"status": "string",
"deposit_amount": 850000000,
"deal_id": "cmusrceel0000q7kaafxqi1om"
},
"deposit": {
"id": "cmusrceel0000q7kaafxqi1om",
"agreed_amount": 850000000,
"holder": "owner",
"holder_label": "string",
"escrow": {
"partner": "string",
"reference": "string",
"provider": "string",
"account_open": true,
"status": "string",
"synced_at": "2026-10-06T05:30:00.000Z"
},
"status": "awaiting",
"status_label": "string",
"figures": {
"received": 850000000,
"retained": 850000000,
"refunded": 850000000,
"decided": 850000000,
"pending": 850000000,
"refund_due": 850000000,
"refundable_now": 850000000,
"shortfall": 850000000,
"landlord_due": 850000000,
"balance_held": 850000000
},
"settlement_started": true,
"refund_due_on": "2026-10-06",
"days_to_refund": 0,
"settled_at": "2026-10-06T05:30:00.000Z",
"review": {
"status": "string",
"sent_at": "2026-10-06T05:30:00.000Z",
"expires_at": "2026-10-06T05:30:00.000Z",
"opened_at": "2026-10-06T05:30:00.000Z",
"blocked_reason": "string"
}
},
"entries": [
{
"id": "cmusrceel0000q7kaafxqi1om",
"kind": "received",
"kind_label": "string",
"amount": 850000000,
"holder": "string",
"mode": "string",
"reference": "string",
"occurred_on": "2026-10-06",
"note": "string",
"source": "string",
"reversed": true,
"reverses_id": "cmusrceel0000q7kaafxqi1om",
"recorded_by": {
"id": "cmusrceel0000q7kaafxqi1om",
"name": "string"
},
"created_at": "2026-10-06T05:30:00.000Z",
"can_reverse": true
}
],
"deductions": [
{
"id": "cmusrceel0000q7kaafxqi1om",
"source": "damage",
"source_label": "string",
"ref": "string",
"inspection_id": "cmusrceel0000q7kaafxqi1om",
"label": "string",
"detail": "string",
"basis": "string",
"proposed_amount": 850000000,
"amount": 850000000,
"counted": 850000000,
"status": "draft",
"status_label": "string",
"tenant_note": "string",
"responded_at": "2026-10-06T05:30:00.000Z",
"responded_via": "string",
"final_amount": 850000000,
"resolution_note": "string",
"resolved_at": "2026-10-06T05:30:00.000Z",
"waive_reason": "string",
"proposed_at": "2026-10-06T05:30:00.000Z",
"needs_amount": true,
"can": {
"edit": true,
"waive": true,
"respond": true,
"resolve": true
}
}
],
"holders": {
"escrow": true,
"brokerage": true
},
"escrow_available": true,
"capabilities": {
"edit": true,
"money": true,
"send_review": true
}
},
"meta": {}
}Errors
401No valid session or API key (missing, expired or revoked).403The caller lacks the permission, API-key scope or support grant this operation needs.404Not found — records of another company are reported the same way.409A unique value already exists, a concurrent change won, or the Idempotency-Key is still in use or was sent with a different request.422Invalid input; `error.fields` maps field paths to messages.429Too many requests; retry after the Retry-After header.500Unexpected error; quote `error.request_id` to support.

