Apply for AppFolio Stack partner access at appfolio.com/stack/partners/api; API is not self-serve — approval and a signed agreement are required.
Authenticate with the client credentials OAuth 2.0 flow to obtain a bearer token scoped to the properties your integration manages.
Call the tenant ledgers endpoint (path varies by partner agreement) with query parameters for property ID and date range to retrieve occupancy-level charge, payment, and credit records.
Each ledger record returns fields including OccupancyId, AmountDue, ChargedOn, Description, and GlAccountId; page through results using the cursor or offset parameter provided in the response.
Reconcile the AmountDue balance against your own system and flag occupancies with a balance older than a configurable threshold for collections outreach.
Refresh your access token before expiry using the token endpoint; store client credentials securely in a secrets manager, never in source code.
Known gotchas
AppFolio's API is partner-gated — endpoint paths and scopes are disclosed only after a signed agreement; do not rely on third-party scraped endpoint lists.
Ledger data reflects the state at query time; there is no guaranteed webhook for new charge events, so poll on a schedule and diff against a local snapshot.
Multi-property portfolios require that each property is linked to your partner application in AppFolio's admin; missing linkage causes 403 errors that look like auth failures.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp