Ask an owner for a contribution
Raises a request asking an owner to put money into a property. The request starts in requested and becomes completed once a matching contribution is recorded.
Authorization
AuthorizationstringrequiredBody
application/json
propertyId and ownerId are the only ids in this API sent as JSON numbers rather than decimal strings. A 19-digit Snowflake does not survive a round trip through a JavaScript number, so build the request body by hand rather than with JSON.stringify on parsed data. They are left out of the example below because a bare 19-digit number cannot be written accurately here either.
propertyIdintegerrequiredThe property the money is for. Sent as a number, unlike most ids in this API, which are decimal strings.
amountnumberrequiredHow much to ask for, in dollars and cents. Must be greater than 0.
requestDatestring · daterequiredThe day to date the request.
ownerIdintegerWhich owner to ask. Sent as a number. Left out, the request is raised against the property without naming an owner.
dueDatestring · dateThe day the owner is asked to pay by.
memostringWhat the money is for. At most 1000 characters.
Response
200 · The request that was raised. `owner` and `property` are not resolved on this response.
idstringThe contribution request. A Snowflake id sent as a decimal string.
amountnumberHow much the owner is being asked to put in, in dollars and cents. Always positive.
requestDatestring · dateThe day the request was raised.
dueDatestring · dateThe day the owner is asked to pay by. Absent when no due date was set.
memostringWhat the money is for. Absent when none was set.
statusenum<string>Where the request stands. requested is waiting on the owner, pending means a payment is in flight, completed means the contribution landed, and cancelled means it was withdrawn.
ownerContributionIdstringThe contribution this request produced. Absent until the owner has paid.
ownerobjectThe owner being asked, as the full owner record. Absent when the request was raised without naming an owner, or the owner could not be resolved.
propertyobjectThe property the money is for. Absent on the single-request responses that do not resolve it.
createdstring · date-timeWhen the request was created, in the company's timezone.
updatedstring · date-timeWhen it last changed, in the company's timezone.
400 · `amount` is not greater than 0, `memo` is longer than 1000 characters, or a required field is missing.
401 · The access token is missing, expired, or does not belong to a property manager.
404 · The owner or property does not exist for the caller's company.
422 · The owner is deactivated.
Everywhere else in this API a Snowflake id is sent as a decimal string, because a 19-digit integer loses digits in JavaScript. This endpoint's propertyId and ownerId are declared as 64-bit integers and are rejected if you quote them. Assemble the JSON body as text so the digits survive.
curl --request POST \
--url '{{baseUrl}}/company-app/owners/contributions/requests' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{"propertyId":1799110447398404096,"ownerId":1812910038475120640,"amount":5000.00,"requestDate":"2026-02-25","dueDate":"2026-03-10","memo":"Roof repair funding"}'