
Connect AppFolio Property Manager through its Reports API. A System Administrator generates a Client ID and Client Secret in AppFolio (General Settings → Manage API Settings → Reports API Credentials); you paste them into the AppFolio connector along with your AppFolio database name. The connector authenticates with HTTP Basic auth, pulls the property and unit directories, the rent roll, the tenant directory, charge detail, and receivables activity, and stores every raw report for audit. Rent charges and receipts are reduced to one payment record per lease per month using your grace period and due-day policy, mapped to Metro 2 Base and J1 segments, validated against CDIA rules, and delivered to Equifax, Experian, TransUnion, and Innovis under your own data furnisher credentials. Full-file (late and unpaid rent) reporting is a portfolio policy you switch on, gated by each resident's consent.
BureauRelay authenticates to https://{your-database}.appfolio.com/api/v2/reports with HTTP Basic auth using the Reports API Client ID and Client Secret. Twice a day it pulls property_directory, unit_directory, rent_roll (or tenant_tickler), tenant_directory, charge_detail, and receivables_activity, reduces the ledger to one payment record per lease per month under your grace-period policy, and stores raw snapshots for audit. On the 5th of each month the build turns enrolled residents' payment records into Metro 2 Base and J1 segments, validates them against CDIA rules, and queues them for delivery to Equifax, Experian, TransUnion, and Innovis.
AppFolioTechnical details about connecting to the AppFolio API.
Authentication
HTTP Basic (Reports API Client ID + Client Secret)
Base URL
https://{your-database}.appfolio.com/api/v2/reports/
Documentation
View DocsSandbox
Not available
Pricing
Reports API access is included with AppFolio Plus and Max; not available on Core. Plus is read-only, Max is read/write; the connector only reads.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v2/reports/property_directory.json | Property names and addresses for the Metro 2 address fields. |
| POST | /api/v2/reports/unit_directory.json | Unit numbers and bed/bath for the address line 2. |
| GET | /api/v1/reports/rent_roll.json | Occupancies with status, lease dates, move-in/out, and monthly rent. |
| GET | /api/v1/reports/tenant_directory.json | One row per resident with contact details, linked to the occupancy. |
| POST | /api/v2/reports/charge_detail.json | Rent charges with amounts applied, filtered to a charge-date range. |
| POST | /api/v2/reports/receivables_activity.json | Receipts by resident and date, used for payment dates and amounts. |
AppFolio Plus and Max customers generate Reports API credentials themselves. There is no marketplace approval, no partner queue, and no OAuth redirect: paste the Client ID and Client Secret and the connection is live.
The connector reads the property directory, unit directory, rent roll, tenant directory, charge detail, and receivables activity, so scheduled rent, payments received, and payment dates all come from AppFolio's own ledger.
Configure a grace period and due day, then choose positive-only or full-file reporting. Late and unpaid months are aged into 30/60/90/120-day Metro 2 statuses only for residents whose consent covers negative information.
Sync every active property or limit the connection to specific AppFolio property IDs. Past residents can be included so move-outs get their final month reported and the tradeline closed.
The Reports API is read-only on the Plus plan and the connector never writes back to AppFolio on any plan. Credentials are encrypted at rest and never displayed again after you save them.
Every raw report pulled from AppFolio is retained with the sync batch, and every payment record carries the charge and receipt IDs it was derived from, so any disputed tradeline traces back to the source ledger.
BureauRelay maps these fields from AppFolio to Metro 2 format automatically.
Reports API access is included with AppFolio Plus and Max (it is not on Core). A user with the System Administrator role must generate the credentials.
In AppFolio, open your account name menu → General Settings → Manage API Settings → Reports API Credentials → Generate New Credentials. Copy the Client ID and Client Secret; generating new credentials later invalidates the previous pair.
Go to Integrations → Add AppFolio, enter your AppFolio database (the subdomain of your AppFolio URL), the Client ID, and the Client Secret, then click Test connection. The probe lists the properties it can see.
Set the rent due day, grace period, and which GL accounts count as rent. Choose positive-only or full-file reporting, pick which resident statuses to include, and optionally limit the sync to specific properties.
Run a dry-run sync to see the counts and payment statuses that would be written, then run the full sync. Enroll residents with a signed consent; only enrolled residents are furnished. Automatic syncs run twice daily and the monthly Metro 2 build runs on the 5th.
Yes. The Reports API is available on both Plus and Max. Plus is read-only, which is all the connector needs; Max adds write access that the connector never uses.
AppFolio's Reports API uses HTTP Basic authentication with a Client ID and Client Secret that a System Administrator generates inside AppFolio. There is no OAuth redirect and no partner approval step. BureauRelay encrypts the secret at rest and never displays it again.
Yes. Turn on full-file reporting in the connector's policy. Unpaid and partially paid months are aged from your due date, so they report as 30, 60, 90, or 120+ days delinquent, and move-outs with a balance close as unpaid. Residents whose consent is positive-only are never reported negatively regardless of the policy.
AppFolio partners with RentPlus by Rent Dynamics for native rent reporting. This integration generates a full Metro 2 file under your own data furnisher credentials for Equifax, Experian, TransUnion, and Innovis, with your own grace-period and negative-reporting policy.
Charge detail shows the amount applied to each rent charge; where that column is not present, receipts posted in the month are used instead. A month paid short is recorded as partial, with the outstanding balance and days late carried into the Metro 2 record.
Automatic syncs run twice a day. You can trigger a dry run or a full sync at any time from the connector page. AppFolio's Reports API has no webhooks, so the connector polls within AppFolio's 7-requests-per-15-seconds limit.
AppFolio Stack is the partner marketplace; its partner API uses OAuth and is gated behind AppFolio's partner program. The Reports API is the customer-facing API on Plus and Max that you enable yourself. This connector uses the Reports API, so nothing depends on partner approval.
Each month the connector compares the rent charged against payments received and their dates. Payments within your grace period are on time; later payments carry the days late; unpaid months age until paid. The monthly build maps that into Account Status and Payment Rating following the CDIA Metro 2 rental guidance.

Pull tenant, lease, and payment data from Yardi Voyager's SOAP/WSDL web services via interface credentials to generate Metro 2 credit reports for all three bureaus.

Pull tenant, lease, and payment data from Buildium's REST API via API key authentication to generate Metro 2 credit reports for all three bureaus.

Pull tenant, lease, and payment data from Propertyware's REST API via API key to generate Metro 2 credit reports for SFR portfolios across all three bureaus.