Skip to main content

Edit Lease Transaction

This PATCH endpoint allows you to provide Funnel with the PMS identifiers related to a lease transaction. This endpoint currently supports RealPage integrations only.

PATCH
/api/v2/lease-transactions/:id

Request

Example requestPATCHapplication/json
curl -X PATCH \
    -H "Content-Type: application/json" \
    --user "YOUR_API_KEY:" \
    -d '{
      "resident_household_id": "rh-123",
      "lease_integration_id": "lease-123",
      "residents": [
        {
          "resident_member_id": "rm-123",
          "account_id": 737759
        },
        {
          "resident_member_id": "rm-456",
          "account_id": 737787
        }
      ]
    }' \
    "https://api.funnelleasing.com/api/v2/lease-transactions/564323"

Response

Example responseJSON200 · application/json
(no response body)
📝

Success response is 200 with an empty body

On success, this endpoint returns 200 OK with a zero-length body and no Content-Type: application/json header. Do not attempt to parse the response as JSON.

⚠️

A 200 doesn't guarantee the lease integration ID was saved

If Funnel can't create the underlying TenantIntegration record for this household — most commonly because the community is missing its property integration setup — this endpoint still returns 200 with an empty body, but skips writing lease_integration_id entirely. A 200 response confirms the request was accepted, not that every identifier was persisted. This is different from the Integration Setup Incomplete (400) error below, which is caught earlier, before Funnel attempts to write anything. Contact your Funnel representative if you suspect this is happening for a specific community.

Errors

LeaseTransaction ID Is Required (400)

Returned when the lease transaction id is missing from the URL path. Unlike the errors below, this body has no lease_transaction_id field, since none was provided.

Error responseJSON400 · application/json
{
  "message": "LeaseTransaction ID is required"
}

LeaseTransaction Not Found (404)

Returned when id doesn't match a lease transaction for your company. Like the error above, this body has no lease_transaction_id field.

Error responseJSON404 · application/json
{
  "message": "LeaseTransaction not found"
}

Unparseable Request Body (500)

Returned when the request body can't be parsed at all (for example, malformed JSON).

Error responseJSON500 · application/json
{
  "message": "Failed to process request data. Please check the request format and try again.",
  "lease_transaction_id": 347612
}

Invalid Request Data (400)

Returned when the request body fails schema validation — for example, a required field like resident_household_id or lease_integration_id is missing or the wrong type.

Error responseJSON400 · application/json
{
  "message": "The request data is invalid. Please check that all required fields are provided and have the correct format.",
  "lease_transaction_id": 347612
}

Resident Account Not Found (400)

Returned when an account_id in residents doesn't match an applicant on this lease transaction.

Error responseJSON400 · application/json
{
  "message": "One or more resident accounts could not be found. Please verify the account IDs provided.",
  "lease_transaction_id": 347612
}

Integration Setup Incomplete (400)

Returned when the lease transaction is missing a primary client or employee group, or the employee group has no single active RealPage integration group configured.

Error responseJSON400 · application/json
{
  "message": "Unable to process this lease transaction. The integration setup is incomplete.",
  "lease_transaction_id": 347612
}

Internal Processing Error (500)

Returned when an unexpected failure happens while Funnel is writing the identifiers, at one of several stages of processing. The message text varies by stage — you may see "An error occurred while processing the lease transaction", "...updating client information", "...processing tenant information", "...updating tenant information", "...creating lease integration", or "...processing lease integration" — each followed by "Please try again later." Treat all of these as retryable.

Error responseJSON500 · application/json
{
  "message": "An error occurred while updating client information. Please try again later.",
  "lease_transaction_id": 347612
}