Adjust a property charge
Changes a recorded charge — its amount, date, memo, ledger account or bank account. Send only the fields you want changed; at least one must actually differ.
Authorization
AuthorizationstringrequiredPath parameters
propertyIdstringrequiredSnowflake id of the property the charge belongs to.
propertyChargeIdstringrequiredSnowflake id of the property charge.
Body
application/json
At least one field must be present and different from what is stored.
amountnumberThe new amount. A decimal with at most two places, and it must be greater than zero.
bankAccountIdstringMove the charge to a different bank account.
chartOfAccountIdstringBook the amount to a different revenue account.
cashChartOfAccountIdstringUse a different cash asset account for the other side of the entry.
chargeDatestring · dateThe new charge date, as YYYY-MM-DD, read in the company's timezone.
memostringNew free text, up to 200 characters.
externalTransactionIdstringYour own reference for the payment, up to 100 characters.
Response
200 · The adjusted charge, hydrated.
idstringSnowflake id of the charge.
createdstring · date-timeWhen the charge was recorded, as a wall clock in the company's timezone with no offset.
updatedstring · date-timeWhen it last changed.
chargeDatestring · dateThe date the charge is booked against, in the company's timezone.
amountnumberHow much, as a decimal amount such as 45.00. Always greater than zero.
memostringFree text on the charge, up to 200 characters. Absent when none was written.
referencestringA reference carried on the charge from the accounting side. Absent when there is none — no field on this API sets it.
chartOfAccountIdstringThe revenue account the amount was booked to.
transactionIdstringThe transaction this charge created. Read it from transactions on this same response to see the bank account and status.
portfolioIdstringThe portfolio behind the property. Derived, not supplied.
propertyIdstringThe property the charge is booked against.
unitIdstringThe unit the charge is narrowed to. Absent when the charge is against the whole property.
leaseIdstringThe lease the charge is narrowed to. Absent when it is not tied to one.
returnedTransactionIdstringThe transaction that pulled the money back. Absent unless the charge was returned.
returnedAmountnumberHow much came back. Absent unless the charge was returned.
returnedDatestring · date-timeWhen it came back. Absent unless the charge was returned.
returnedReasonstringWhy it came back. Absent unless the charge was returned.
filesobject[]Documents attached to the charge. Empty in practice — this API has no endpoint that attaches one.
metadataobjectWhatever you passed as metadata when the charge was created, as a map of string keys to string values. Empty when none was given.
creatorobjectWho recorded the charge.
portfolioobjectThe portfolio behind the property, expanded.
propertyobjectThe property the charge is booked against, expanded.
unitobjectThe unit the charge is narrowed to, expanded. Absent when the charge is against the whole property.
leaseLeaseThe lease the charge is narrowed to, in the same shape the leases endpoints return. Absent when it is not tied to one.
transactionsTransaction[]The transaction this charge created, and the returning transaction if there is one, in the same shape the transactions endpoints return.
bankAccountsBankAccount[]The bank accounts those transactions touch.
chartOfAccountsChartOfAccount[]The ledger accounts those transactions touch.
creatorInfoobjectThe record behind creator, expanded. Exactly one of the four is present, matching creator.type; all four are absent for system and magicDoor.
400 · Nothing in the body differs from the stored charge, `amount` is zero or negative or has more than two decimal places, or the memo is over 200 characters. The response carries an `errors` member mapping each rejected field name to its message.
401 · The access token is missing, expired, or not for this company.
404 · No charge with that id, or it belongs to another company.
This controller is registered on both /company-app/properties/{propertyId}/bills and /company-app/properties/{propertyId}/charges. Both paths reach the same code and behave identically. The pages here document the /bills form.
Unlike the property and unit update endpoints, this body only touches the fields you send. Anything you leave out keeps its current value. A body that changes nothing is rejected.