{"id":24721,"date":"2026-10-09T13:12:48","date_gmt":"2026-10-09T13:12:48","guid":{"rendered":"https:\/\/maspartner.com\/?post_type=publications&#038;p=24721"},"modified":"2026-10-09T13:13:22","modified_gmt":"2026-10-09T13:13:22","slug":"appfolio-trust-accounting","status":"publish","type":"publications","link":"https:\/\/maspartner.com\/en-us\/publications\/appfolio-trust-accounting\/","title":{"rendered":"The Complete AppFolio Accounting Guide for Property Managers"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"24721\" class=\"elementor elementor-24721\">\n\t\t\t\t<div class=\"e-con-with-custom-width elementor-element elementor-element-075981e e-con-full sc_inner_width_1_1 e-flex sc_layouts_column_icons_position_left e-con e-parent\" data-id=\"075981e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d0a8121 sc_fly_static elementor-widget elementor-widget-html\" data-id=\"d0a8121\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- =========================================================\r\nMASPARTNER PUBLICATION HERO\r\nReplace the publication details for each new publication.\r\n========================================================= -->\r\n\r\n<section class=\"mas-publication-standalone-hero\">\r\n\r\n  <style>\r\n    .mas-publication-standalone-hero {\r\n      --mas-gold: #fabc17;\r\n      --mas-black: #000000;\r\n      --mas-white: #ffffff;\r\n      --mas-content-width: 1240px;\r\n      --mas-desktop-padding: 70px;\r\n\r\n      position: relative;\r\n      left: 50%;\r\n      width: 100vw;\r\n      max-width: 100vw;\r\n      margin-left: -50vw;\r\n      margin-right: -50vw;\r\n\r\n      background: var(--mas-black);\r\n      color: var(--mas-white);\r\n      border-top: 6px solid var(--mas-gold);\r\n\r\n      font-family: inherit;\r\n      box-sizing: border-box;\r\n      overflow: hidden;\r\n      z-index: 1;\r\n    }\r\n\r\n    .mas-publication-standalone-hero *,\r\n    .mas-publication-standalone-hero *::before,\r\n    .mas-publication-standalone-hero *::after {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    .mas-publication-standalone-hero-inner {\r\n      width: 100%;\r\n      max-width: var(--mas-content-width);\r\n      margin: 0 auto;\r\n      padding: 60px 70px 65px 70px;\r\n    }\r\n\r\n    .mas-publication-standalone-hero h1 {\r\n      width: 100%;\r\n      max-width: 1100px;\r\n      margin: 0 0 22px;\r\n      padding: 0;\r\n\r\n      color: var(--mas-white);\r\n      font-size: clamp(38px, 5vw, 62px);\r\n      font-weight: 800;\r\n      line-height: 1.06;\r\n      letter-spacing: -0.5px;\r\n    }\r\n\r\n    .mas-publication-standalone-subtitle {\r\n      width: 100%;\r\n      max-width: 1000px;\r\n      margin: 0 0 30px;\r\n      padding: 0;\r\n\r\n      color: var(--mas-gold);\r\n      font-size: clamp(19px, 2.4vw, 28px);\r\n      font-weight: 700;\r\n      line-height: 1.35;\r\n    }\r\n\r\n    .mas-publication-standalone-rule {\r\n      width: 100%;\r\n      max-width: 880px;\r\n      height: 4px;\r\n      margin: 0 0 34px;\r\n\r\n      background: var(--mas-gold);\r\n      border-radius: 2px;\r\n    }\r\n\r\n    \/* ---------- META ROW WITH SLASH DIVIDERS ---------- *\/\r\n    .mas-publication-standalone-meta {\r\n      display: flex;\r\n      align-items: flex-start;\r\n      gap: 0;\r\n      width: 100%;\r\n      max-width: 1080px;\r\n      flex-wrap: wrap;\r\n    }\r\n\r\n    .mas-publication-standalone-meta-item {\r\n      flex: 1 1 0;\r\n      min-width: 0;\r\n    }\r\n\r\n    .mas-publication-standalone-meta-divider {\r\n      flex: 0 0 1px;\r\n      align-self: stretch;\r\n      background: rgba(255,255,255,0.18);\r\n      margin: 0 30px;\r\n    }\r\n\r\n    .mas-publication-standalone-label {\r\n      margin: 0 0 6px;\r\n      padding: 0;\r\n\r\n      color: var(--mas-gold);\r\n      font-size: 12px;\r\n      font-weight: 800;\r\n      line-height: 1.4;\r\n      letter-spacing: 1.5px;\r\n      text-transform: uppercase;\r\n    }\r\n\r\n    .mas-publication-standalone-value {\r\n      margin: 0;\r\n      padding: 0;\r\n\r\n      color: #e0e0e3;\r\n      font-size: 15px;\r\n      line-height: 1.55;\r\n    }\r\n\r\n    .mas-publication-standalone-credit-name {\r\n      margin: 0 0 4px;\r\n      padding: 0;\r\n\r\n      color: var(--mas-white);\r\n      font-size: 22px;\r\n      font-weight: 800;\r\n      line-height: 1.3;\r\n    }\r\n\r\n    .mas-publication-standalone-credit-name a,\r\n    .mas-publication-standalone-credit-name a:link,\r\n    .mas-publication-standalone-credit-name a:visited {\r\n       color: var(--mas-white) !important;\r\n       text-decoration: none;\r\n       border: none;\r\n       outline: none;\r\n       transition: none;\r\n       position: relative;\r\n       z-index: 10;\r\n       pointer-events: auto;\r\n       cursor: pointer;\r\n    }\r\n\r\n    .mas-publication-standalone-credit-name a:hover,\r\n    .mas-publication-standalone-credit-name a:focus,\r\n    .mas-publication-standalone-credit-name a:active,\r\n    .mas-publication-standalone-credit-name a:visited:hover,\r\n    .mas-publication-standalone-credit-name a:visited:focus,\r\n    .mas-publication-standalone-credit-name a:visited:active {\r\n       color: var(--mas-gold) !important;\r\n       text-decoration: none;\r\n       border: none;\r\n       outline: none;\r\n    }\r\n\r\n    .mas-publication-standalone-credit-role {\r\n      margin: 0;\r\n      padding: 0;\r\n\r\n      color: #d0d0d4;\r\n      font-size: 15px;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    \/* Inline research-by line: Name | Title | Email *\/\r\n    .mas-publication-standalone-credit-inline {\r\n      margin: 0;\r\n      padding: 0;\r\n      color: #d0d0d4;\r\n      font-size: 15px;\r\n      line-height: 1.55;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .mas-publication-inline-sep {\r\n      margin: 0 8px;\r\n      color: rgba(255,255,255,0.25);\r\n    }\r\n\r\n    .mas-publication-inline-link,\r\n    .mas-publication-inline-link:link,\r\n    .mas-publication-inline-link:visited {\r\n      color: #d0d0d4 !important;\r\n      text-decoration: none !important;\r\n      border: none;\r\n      outline: none;\r\n      position: relative;\r\n      z-index: 10;\r\n      pointer-events: auto;\r\n      cursor: pointer;\r\n    }\r\n\r\n    .mas-publication-inline-link:hover,\r\n    .mas-publication-inline-link:focus,\r\n    .mas-publication-inline-link:active,\r\n    .mas-publication-inline-link:visited:hover,\r\n    .mas-publication-inline-link:visited:focus,\r\n    .mas-publication-inline-link:visited:active {\r\n      color: var(--mas-gold) !important;\r\n      text-decoration: none !important;\r\n    }\r\n\r\n    \/* Tablet *\/\r\n    @media (max-width: 1024px) {\r\n      .mas-publication-standalone-hero {\r\n        --mas-desktop-padding: 30px;\r\n      }\r\n\r\n      .mas-publication-standalone-meta-divider {\r\n        margin: 0 18px;\r\n      }\r\n    }\r\n\r\n    \/* Mobile *\/\r\n    @media (max-width: 767px) {\r\n      .mas-publication-standalone-hero {\r\n        --mas-desktop-padding: 20px;\r\n      }\r\n\r\n      .mas-publication-standalone-hero-inner {\r\n        padding-top: 36px;\r\n        padding-bottom: 42px;\r\n      }\r\n\r\n      .mas-publication-standalone-hero h1 {\r\n        margin-bottom: 18px;\r\n        font-size: clamp(34px, 10vw, 42px);\r\n        line-height: 1.08;\r\n        letter-spacing: -0.3px;\r\n      }\r\n\r\n      .mas-publication-standalone-subtitle {\r\n        margin-bottom: 26px;\r\n        font-size: 20px;\r\n        line-height: 1.4;\r\n      }\r\n\r\n      .mas-publication-standalone-rule {\r\n        margin-bottom: 28px;\r\n      }\r\n\r\n      .mas-publication-standalone-meta {\r\n        flex-direction: column;\r\n        gap: 0;\r\n      }\r\n\r\n      .mas-publication-standalone-meta-item {\r\n        padding: 16px 0;\r\n        border-bottom: 1px solid rgba(255,255,255,0.12);\r\n      }\r\n\r\n      .mas-publication-standalone-meta-item:last-child {\r\n        border-bottom: none;\r\n      }\r\n\r\n      .mas-publication-standalone-meta-divider {\r\n        display: none;\r\n      }\r\n\r\n      .mas-publication-standalone-credit-name {\r\n        font-size: 20px;\r\n      }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"mas-publication-standalone-hero-inner\">\r\n\r\n    <!-- MAIN TITLE -->\r\n    <h1>\r\n      The Complete AppFolio Accounting Guide for Property Managers\r\n    <\/h1>\r\n\r\n    <!-- SUBTITLE \/ DESCRIPTION -->\r\n    <p class=\"mas-publication-standalone-subtitle\">\r\n     Understanding AppFolio\u2019s Trust Accounting Architecture, Why Trust Balances Drift, and How to Audit, Correct, and Prevent Trust-Liability Gaps\r\n    <\/p>\r\n\r\n    <!-- YELLOW DIVIDER -->\r\n    <div class=\"mas-publication-standalone-rule\"><\/div>\r\n\r\n    <!-- PUBLICATION DETAILS: Published | Audience | Research By -->\r\n    <div class=\"mas-publication-standalone-meta\">\r\n\r\n      <!-- PUBLISHED -->\r\n      <div class=\"mas-publication-standalone-meta-item\">\r\n        <p class=\"mas-publication-standalone-label\">Published<\/p>\r\n        <p class=\"mas-publication-standalone-value\">october 2026 | MASPARTNER E-Guides<\/p>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-standalone-meta-divider\"><\/div>\r\n\r\n      <!-- AUDIENCE -->\r\n      <div class=\"mas-publication-standalone-meta-item\">\r\n        <p class=\"mas-publication-standalone-label\">Audience<\/p>\r\n        <p class=\"mas-publication-standalone-value\">PM Company Owners \u00b7 Operations Managers \u00b7 Property Bookkeepers \u00b7 Accountants<\/p>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-standalone-meta-divider\"><\/div>\r\n\r\n      <!-- RESEARCH BY -->\r\n      <div class=\"mas-publication-standalone-meta-item\">\r\n        <p class=\"mas-publication-standalone-label\">Research By<\/p>\r\n        <p class=\"mas-publication-standalone-credit-inline\">\r\n          <a href=\"https:\/\/maspartner.com\/en-us\/people\/rohit-kumar\/\" class=\"mas-publication-inline-link\">Rohit Kumar<\/a> <span class=\"mas-publication-inline-sep\">|<\/span> Director <span class=\"mas-publication-inline-sep\">|<\/span> <a href=\"mailto:rohit@maspartner.com\" class=\"mas-publication-inline-link\">rohit@maspartner.com<\/a>\r\n        <\/p>\r\n      <\/div>\r\n\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n  <script>\r\n  (function(){\r\n    var hero = document.currentScript\r\n      ? document.currentScript.closest('.mas-publication-standalone-hero')\r\n      : null;\r\n    if(!hero){\r\n      var all = document.querySelectorAll('.mas-publication-standalone-hero');\r\n      hero = all[all.length - 1];\r\n    }\r\n    if(!hero) return;\r\n\r\n    hero.querySelectorAll('.mas-publication-standalone-credit-name a').forEach(function(el){\r\n      el.addEventListener('click', function(e){\r\n        e.stopPropagation();\r\n        var href = (this.getAttribute('href') || '').trim();\r\n        href = href.replace(\/^\\[+\/, '').replace(\/\\]+$\/, '').trim();\r\n        var isReal = \/^https?:\\\/\\\/\/i.test(href) || href.charAt(0) === '\/';\r\n        if(!isReal){ e.preventDefault(); return; }\r\n        e.preventDefault();\r\n        window.location.href = href;\r\n      }, true);\r\n    });\r\n\r\n    \/\/ Force inline research-by links (name + email) to work in Elementor\r\n    hero.querySelectorAll('.mas-publication-inline-link').forEach(function(el){\r\n      el.addEventListener('click', function(e){\r\n        e.stopPropagation();\r\n        var href = (this.getAttribute('href') || '').trim();\r\n        if(!href){ e.preventDefault(); return; }\r\n        e.preventDefault();\r\n        if(\/^mailto:\/i.test(href)){\r\n          window.location.href = href;\r\n        } else {\r\n          window.location.href = href;\r\n        }\r\n      }, true);\r\n    });\r\n  })();\r\n  <\/script>\r\n\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"e-con-with-custom-width elementor-element elementor-element-f4f913f e-con-full e-flex sc_layouts_column_icons_position_left e-con e-parent\" data-id=\"f4f913f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8870685 sc_fly_static elementor-widget elementor-widget-html\" data-id=\"8870685\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\r\n============================================================\r\n  MASPARTNER \/ MERCURIUS WEB PUBLICATION\r\n  The Complete AppFolio Accounting Guide for Property Managers\r\n  Understanding AppFolio's Trust Accounting Architecture, Why Trust\r\n  Balances Drift, and How to Audit, Correct, and Prevent\r\n  Trust-Liability Gaps\r\n  Paste this entire block into an Elementor \"HTML\" widget\r\n  (or a WordPress \"Custom HTML\" block) on a full-width page.\r\n============================================================\r\n  REPLACE THESE PLACEHOLDERS BEFORE PUBLISHING:\r\n\r\n    IMAGES - every image is a standard <img decoding=\"async\" src=\"[IMAGE_n_URL]\"> tag.\r\n    Use Find & Replace on [IMAGE_n_URL] and paste the WordPress media URL.\r\n    Until a URL is pasted, a labelled dashed placeholder box shows in its spot.\r\n\r\n    [IMAGE_1_URL]   -> AppFolio's Three-Ledger Architecture (Tenant Ledger \/ Trust Bank Account \/ Owner Ledger)\r\n                       Figure 1 - Section 1 (PDF page 5)  | uploaded file: Img_6.png\r\n    [IMAGE_2_URL]   -> AppFolio Transaction Lifecycle: Charge Posted to Owner Disbursed (6 steps)\r\n                       Figure 2 - Section 1 (PDF page 6)  | uploaded file: Img_5.png\r\n    [IMAGE_3_URL]   -> Trust Accounting Risk Exposure: Which PM Firms Are Most Vulnerable\r\n                       Figure 3 - Section 2 (PDF page 9)  | uploaded file: Img_4.png\r\n    [IMAGE_4_URL]   -> What a Healthy vs. Drifted Trust Balance Looks Like at Month-End\r\n                       Figure 4 - Section 3 (PDF page 12) | uploaded file: Img_3.png\r\n    [IMAGE_5_URL]   -> AppFolio Trust Account Balance report screenshot (as of 07\/28\/2026)\r\n                       Section 3 (PDF page 13)            | uploaded file: Img_2.png\r\n    [IMAGE_6_URL]   -> Why the Trust Balance Drifts: Root Causes by Category (mind map)\r\n                       Figure 5 - Section 4 (PDF page 14) | uploaded file: Img_1.png\r\n    [IMAGE_7_URL]   -> Trust Account Balance + Trust Account Detail reports side by side (screenshot)\r\n                       Section 5 (PDF page 18) | file: IMAGE_7_Trust_Account_Balance_and_Detail_Reports.png (extracted from the PDF)\r\n    [IMAGE_8_URL]   -> AppFolio Bank Feed auto-match settings (screenshot)\r\n                       Section 7 (PDF page 25) | file: IMAGE_8_Bank_Feed_Auto-Match_Settings.png (extracted from the PDF)\r\n    [IMAGE_9_URL]   -> How to Audit Your AppFolio Trust Accounting - Step by Step (7 steps)\r\n                       Figure 6 - Section 5 (PDF page 17) | file: IMAGE_9_Audit_Trust_Accounting_Step_by_Step.png (extracted from the PDF)\r\n    [IMAGE_10_URL]  -> Six Common Trust Drift Scenarios and the Correct Fix for Each\r\n                       Figure 7 - Section 6 (PDF page 20) | file: IMAGE_10_Six_Trust_Drift_Scenarios.png (extracted from the PDF)\r\n    [IMAGE_11_URL]  -> AppFolio Monthly Close Checklist - Trust Reconciliation First\r\n                       Figure 8 - Section 7 (PDF page 24) | file: IMAGE_11_Monthly_Close_Checklist.png (extracted from the PDF)\r\n\r\n    RESOURCE LINKS - PLACEHOLDERS (these entries have NO hyperlink in the PDF):\r\n    [RESOURCE_APPFOLIO_HELP_URL] -> AppFolio Property Manager: Help & Training\r\n    [RESOURCE_STATE_REC_URL]     -> Your State Real Estate Commission: Trust Account and Security Deposit Rules\r\n\r\n    RESOURCE LINKS - ALREADY SET (taken from the hyperlinks inside the PDF):\r\n    AppFolio Stack: Accounting and Consulting Partners -> https:\/\/www.appfolio.com\/stack\r\n    ARELLO: Regulatory Agency Directory                -> https:\/\/www.arello.org\/\r\n    IRS: Recordkeeping for Business Taxpayers          -> https:\/\/www.irs.gov\/businesses\/small-businesses-self-employed\/recordkeeping\r\n    IRS: Publication 583                               -> https:\/\/www.irs.gov\/publications\/p583\r\n    SBA: Manage Your Finances                          -> https:\/\/www.sba.gov\/business-guide\/manage-your-business\/manage-your-finances\r\n    MASPARTNER Bookkeeping Service                     -> https:\/\/maspartner.com\/bookkeeping\/\r\n    MASPARTNER Accounting Service                      -> https:\/\/maspartner.com\/accounting-services\/\r\n    MASPARTNER US Tax Solutions                        -> https:\/\/maspartner.com\/en-us\/   (as linked in the PDF)\r\n\r\n    PDF DOWNLOAD LINK (delivered after CF7 form submission) - ALREADY SET:\r\n    https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/MASPARTNER_NetSuite_Chart_of_Accounts_Best_Practices_E-Guide.pdf.pdf\r\n    (To change it, edit the single MAS_PDF_URL line in the <script> at the bottom.)\r\n\r\n    NOTE: The sticky button opens a CF7 popup form.\r\n    CF7 Form ID: d62a501 (title: Publication)\r\n    Add an Elementor \"Shortcode\" widget BELOW this HTML widget containing:\r\n        [contact-form-7 id=\"d62a501\" title=\"Publication\"]\r\n    The script hides that widget and moves the form into the popup.\r\n    If no CF7 form is found on the page, the button opens the PDF directly,\r\n    so the download always works.\r\n\r\n    NOTE: The hero \/ banner (title, subtitle, topic, published date,\r\n    audience, Research By and Edited & Presented By) is built separately\r\n    in Elementor and is NOT part of this code.\r\n============================================================\r\n-->\r\n\r\n<div class=\"mas-publication-wrapper\">\r\n\r\n  <style>\r\n    .mas-publication-wrapper{\r\n      --mas-white:#ffffff;\r\n      --mas-light-yellow:#ffdc74;\r\n      --mas-yellow:#ffd240;\r\n      --mas-gold:#fabc17;\r\n      --mas-dark-gold:#cfa434;\r\n      --mas-black:#000000;\r\n      --mas-ink:#16161a;\r\n      --mas-muted:#55555c;\r\n      --mas-line:#e7e7e7;\r\n      --mas-soft:#fbf7ec;\r\n      --mas-maxw:1240px;\r\n      --mas-pad:40px;\r\n      font-family:inherit;\r\n      color:var(--mas-ink);\r\n      line-height:1.7;\r\n      box-sizing:border-box;\r\n      width:100%;\r\n      overflow-x:clip;\r\n    }\r\n    .mas-publication-wrapper *,\r\n    .mas-publication-wrapper *::before,\r\n    .mas-publication-wrapper *::after{box-sizing:border-box;}\r\n\r\n    \/* ---------- BODY ---------- *\/\r\n    .mas-publication-body{\r\n      max-width:var(--mas-maxw);margin:0 auto;padding:0 var(--mas-pad);\r\n    }\r\n    .mas-publication-details{\r\n      padding:44px 0 12px;border-bottom:1px solid var(--mas-line);\r\n    }\r\n    .mas-publication-block-label{\r\n      font-size:11px;font-weight:800;letter-spacing:1.5px;\r\n      color:var(--mas-dark-gold);text-transform:uppercase;margin:26px 0 8px;\r\n    }\r\n    .mas-publication-details p{margin:0 0 14px;font-size:15px;}\r\n    .mas-publication-disclaimer{\r\n      font-size:13px;color:var(--mas-muted);\r\n      background:#fffbe8;border-left:4px solid var(--mas-gold);\r\n      padding:14px 18px;border-radius:0 8px 8px 0;\r\n    }\r\n\r\n    \/* ---------- TABLE OF CONTENTS ---------- *\/\r\n    .mas-publication-toc{\r\n      background:var(--mas-soft);\r\n      border:1px solid #f0e6c8;\r\n      border-radius:10px;\r\n      padding:28px 30px;\r\n      margin:38px 0;\r\n    }\r\n    .mas-publication-toc h2{\r\n      font-size:22px;font-weight:800;margin:0 0 18px;color:var(--mas-ink);\r\n      padding-bottom:12px;border-bottom:3px solid var(--mas-gold);\r\n    }\r\n    .mas-publication-toc ol{margin:0;padding:0;list-style:none;counter-reset:toc;}\r\n    .mas-publication-toc li{\r\n      counter-increment:toc;border-bottom:1px solid #efe7cf;\r\n    }\r\n    .mas-publication-toc li:last-child{border-bottom:none;}\r\n    .mas-publication-toc a{\r\n      display:flex;align-items:baseline;gap:12px;\r\n      padding:11px 4px;text-decoration:none;color:var(--mas-ink);\r\n      font-size:15px;font-weight:600;transition:color .15s;\r\n    }\r\n    .mas-publication-toc a:hover,\r\n    .mas-publication-toc a.mas-toc-active{color:var(--mas-dark-gold);}\r\n    .mas-publication-toc a::before{\r\n      content:counter(toc, decimal-leading-zero);\r\n      color:var(--mas-dark-gold);font-weight:800;font-size:13px;\r\n      min-width:26px;flex:0 0 auto;\r\n    }\r\n    .mas-publication-toc li.mas-publication-toc-plain{counter-increment:none;}\r\n    .mas-publication-toc li.mas-publication-toc-plain a::before{\r\n      content:\"\\2014\";min-width:26px;text-align:center;font-size:14px;\r\n    }\r\n\r\n    \/* ---------- SECTIONS ---------- *\/\r\n    .mas-publication-section{\r\n      padding:40px 0 6px;scroll-margin-top:80px;\r\n    }\r\n    .mas-publication-section-head{\r\n      display:flex;align-items:center;gap:14px;margin:0 0 22px;\r\n      padding-bottom:14px;border-bottom:3px solid var(--mas-gold);\r\n    }\r\n    .mas-publication-num{\r\n      flex:0 0 auto;width:38px;height:38px;border-radius:7px;\r\n      background:var(--mas-gold);color:var(--mas-black);\r\n      font-weight:800;font-size:18px;display:flex;\r\n      align-items:center;justify-content:center;\r\n    }\r\n    .mas-publication-section-head h2{\r\n      font-size:clamp(22px,3.4vw,30px);font-weight:800;margin:0;\r\n      color:var(--mas-ink);line-height:1.2;\r\n    }\r\n    .mas-publication-eyebrow{\r\n      font-size:11px;font-weight:800;letter-spacing:2px;\r\n      color:var(--mas-dark-gold);text-transform:uppercase;margin:0 0 4px;\r\n    }\r\n    .mas-publication-section h3{\r\n      font-size:19px;font-weight:800;margin:30px 0 10px;color:var(--mas-ink);\r\n    }\r\n    .mas-publication-section h4{\r\n      font-size:16px;font-weight:800;margin:22px 0 8px;color:var(--mas-ink);\r\n    }\r\n    .mas-publication-section p{margin:0 0 16px;font-size:16px;}\r\n    .mas-publication-section ul{margin:0 0 18px;padding-left:22px;}\r\n    .mas-publication-section ul li{margin:0 0 8px;font-size:16px;}\r\n\r\n    \/* two-column bullet lists (as laid out in the PDF) *\/\r\n    .mas-publication-section ul.mas-publication-cols{\r\n      columns:2;column-gap:44px;\r\n    }\r\n    .mas-publication-section ul.mas-publication-cols li{\r\n      break-inside:avoid;-webkit-column-break-inside:avoid;\r\n    }\r\n\r\n    \/* ---------- KPI AT A GLANCE ---------- *\/\r\n    .mas-publication-glance{\r\n      background:#fffbe8;border:1px solid #f0e6c8;\r\n      border-left:5px solid var(--mas-gold);border-radius:8px;\r\n      padding:20px 26px;margin:4px 0 30px;\r\n    }\r\n    .mas-publication-glance .mas-publication-box-title{\r\n      font-size:12px;font-weight:800;letter-spacing:1.5px;\r\n      color:var(--mas-dark-gold);text-transform:uppercase;margin:0 0 6px;\r\n    }\r\n    .mas-publication-glance dl{\r\n      margin:0;display:grid;grid-template-columns:200px minmax(0,1fr);\r\n    }\r\n    .mas-publication-glance dt{\r\n      font-size:14px;font-weight:800;color:var(--mas-ink);\r\n      padding:11px 16px 11px 0;border-bottom:1px solid #f0e6c8;\r\n    }\r\n    .mas-publication-glance dd{\r\n      margin:0;font-size:15px;color:#39393f;\r\n      padding:11px 0;border-bottom:1px solid #f0e6c8;\r\n    }\r\n    .mas-publication-glance dt:last-of-type,\r\n    .mas-publication-glance dd:last-of-type{border-bottom:none;}\r\n\r\n    \/* ---------- CALLOUT BOXES ---------- *\/\r\n    .mas-publication-statbox{\r\n      background:#fffbe8;border:1px solid #f0e6c8;\r\n      border-left:5px solid var(--mas-gold);border-radius:8px;\r\n      padding:22px 26px;margin:24px 0 30px;\r\n    }\r\n    .mas-publication-statbox .mas-publication-box-title{\r\n      font-size:12px;font-weight:800;letter-spacing:1.5px;\r\n      color:var(--mas-dark-gold);text-transform:uppercase;margin:0 0 12px;\r\n    }\r\n    .mas-publication-statbox ul{margin:0;padding-left:20px;}\r\n    .mas-publication-statbox li{margin:0 0 9px;font-size:15px;}\r\n    .mas-publication-statbox li:last-child{margin-bottom:0;}\r\n\r\n    .mas-publication-warning{\r\n      background:#fffbe8;border:2px solid var(--mas-gold);\r\n      border-radius:6px;\r\n      padding:22px 26px;margin:26px 0 30px;\r\n    }\r\n    .mas-publication-warning .mas-publication-box-title{\r\n      font-size:13px;font-weight:800;letter-spacing:1px;\r\n      color:var(--mas-black);text-transform:uppercase;margin:0 0 12px;\r\n    }\r\n    .mas-publication-warning p{margin:0;font-size:15px;color:#222;}\r\n    .mas-publication-warning p + p{margin-top:12px;}\r\n\r\n    \/* example box: gold left rule on transparent background *\/\r\n    .mas-publication-example{\r\n      border-left:3px solid var(--mas-gold);\r\n      padding:4px 0 4px 22px;margin:24px 0 30px;\r\n    }\r\n    .mas-publication-example .mas-publication-box-title{\r\n      font-size:12px;font-weight:800;letter-spacing:1.5px;\r\n      color:var(--mas-dark-gold);text-transform:uppercase;margin:0 0 8px;\r\n    }\r\n    .mas-publication-example p{margin:0;font-size:15px;color:#2c2c31;}\r\n    .mas-publication-example p + p{margin-top:10px;}\r\n\r\n    \/* ---------- STEP ROWS ---------- *\/\r\n    .mas-publication-steps{margin:22px 0 30px;display:grid;gap:12px;}\r\n    .mas-publication-step{\r\n      display:flex;align-items:stretch;gap:0;\r\n      border:1px solid var(--mas-line);border-radius:8px;overflow:hidden;\r\n      background:#fff;\r\n    }\r\n    .mas-publication-step-label{\r\n      flex:0 0 auto;min-width:96px;\r\n      background:var(--mas-dark-gold);color:#fff;\r\n      font-size:11px;font-weight:800;letter-spacing:1.2px;\r\n      text-transform:uppercase;\r\n      display:flex;align-items:center;justify-content:center;\r\n      padding:14px 12px;text-align:center;\r\n    }\r\n    .mas-publication-step-text{\r\n      padding:14px 18px;font-size:15px;color:#39393f;\r\n      display:flex;align-items:center;\r\n    }\r\n\r\n    \/* ---------- FLOW CHAIN (matches PDF: one row, equal boxes, dark arrows \/ plus signs) ---------- *\/\r\n    .mas-publication-wrapper .mas-publication-flow{\r\n      display:flex !important;flex-direction:row !important;flex-wrap:nowrap !important;\r\n      align-items:stretch !important;justify-content:space-between !important;\r\n      gap:12px;width:100% !important;max-width:100% !important;\r\n      margin:24px 0 30px;padding:0;float:none !important;\r\n    }\r\n    .mas-publication-wrapper .mas-publication-flow-item{\r\n      flex:1 1 0 !important;min-width:0 !important;width:auto !important;max-width:none !important;\r\n      margin:0 !important;background:var(--mas-gold);color:var(--mas-black);\r\n      border-radius:6px;padding:16px 12px;min-height:54px;\r\n      font-size:13px;font-weight:800;line-height:1.35;text-align:center;\r\n      display:flex !important;align-items:center;justify-content:center;\r\n      overflow-wrap:break-word;hyphens:manual;\r\n    }\r\n    \/* arrow: drawn with CSS (line + triangle head) so it never depends on the font *\/\r\n    .mas-publication-wrapper .mas-publication-flow-arrow{\r\n      flex:0 0 28px !important;width:28px;margin:0 !important;\r\n      display:flex !important;align-items:center;justify-content:center;\r\n      position:relative;font-size:0 !important;line-height:0;color:transparent;\r\n    }\r\n    .mas-publication-wrapper .mas-publication-flow-arrow::before{\r\n      content:\"\";display:block;width:20px;height:2px;background:#3a3a3a;\r\n    }\r\n    .mas-publication-wrapper .mas-publication-flow-arrow::after{\r\n      content:\"\";display:block;width:0;height:0;\r\n      border-top:5px solid transparent;border-bottom:5px solid transparent;\r\n      border-left:8px solid #3a3a3a;\r\n    }\r\n    \/* plus sign (Performance Balance) *\/\r\n    .mas-publication-wrapper .mas-publication-flow-arrow.mas-publication-flow-plus{\r\n      flex:0 0 22px !important;width:22px;\r\n      font-size:22px !important;font-weight:800;line-height:1;color:#3a3a3a;\r\n    }\r\n    .mas-publication-wrapper .mas-publication-flow-arrow.mas-publication-flow-plus::before,\r\n    .mas-publication-wrapper .mas-publication-flow-arrow.mas-publication-flow-plus::after{content:none;display:none;}\r\n    \/* six-step flows: slightly tighter so all boxes stay on one row *\/\r\n    .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact{gap:8px;}\r\n    .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact .mas-publication-flow-item{\r\n      padding:14px 8px;font-size:12.5px;min-height:72px;\r\n    }\r\n    .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact .mas-publication-flow-arrow{\r\n      flex-basis:22px !important;width:22px;\r\n    }\r\n    .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact .mas-publication-flow-arrow::before{width:14px;}\r\n\r\n    \/* ---------- BAR CHART (examples) ---------- *\/\r\n    .mas-publication-bars{display:grid;gap:10px;margin:16px 0 4px;}\r\n    .mas-publication-bar{\r\n      display:grid;grid-template-columns:170px minmax(0,1fr);\r\n      align-items:center;gap:14px;\r\n    }\r\n    .mas-publication-bar-label{font-size:14px;font-weight:600;color:#39393f;}\r\n    .mas-publication-bar-track{\r\n      background:#f3eedd;border-radius:4px;height:32px;overflow:hidden;\r\n    }\r\n    .mas-publication-bar-fill{\r\n      height:100%;min-width:72px;background:var(--mas-gold);border-radius:4px;\r\n      display:flex;align-items:center;justify-content:flex-end;\r\n      padding:0 12px;font-size:13px;font-weight:800;color:var(--mas-black);\r\n      white-space:nowrap;\r\n    }\r\n    .mas-publication-bar-fill.mas-publication-bar-muted{background:#e6d6a6;}\r\n\r\n    \/* ---------- FORMULA BOX ---------- *\/\r\n    .mas-publication-formula{\r\n      background:#111;color:var(--mas-gold);\r\n      border-radius:8px;padding:20px 24px;margin:18px 0;\r\n      font-size:17px;font-weight:800;text-align:center;letter-spacing:.4px;\r\n    }\r\n    .mas-publication-formula-label{\r\n      display:block;font-size:11px;font-weight:800;letter-spacing:2px;\r\n      text-transform:uppercase;color:var(--mas-dark-gold);margin:0 0 8px;\r\n    }\r\n    .mas-publication-section p.mas-publication-formula-note{\r\n      font-size:14px;color:var(--mas-muted);margin:-4px 0 22px;\r\n    }\r\n\r\n    \/* ---------- COMPARE CARDS ---------- *\/\r\n    .mas-publication-compare{\r\n      display:grid;grid-template-columns:repeat(2,minmax(0,1fr));\r\n      gap:14px;margin:22px 0 30px;\r\n    }\r\n    .mas-publication-compare.mas-publication-compare-3{\r\n      grid-template-columns:repeat(3,minmax(0,1fr));\r\n    }\r\n    .mas-publication-compare-card{\r\n      border:1px solid var(--mas-line);border-radius:8px;\r\n      overflow:hidden;background:#fff;\r\n    }\r\n    .mas-publication-compare-card h4{\r\n      margin:0;background:var(--mas-gold);color:var(--mas-black);\r\n      font-size:14px;font-weight:800;padding:12px 18px;line-height:1.4;\r\n    }\r\n    .mas-publication-compare-card ul{margin:0;padding:14px 18px 10px 36px;}\r\n    .mas-publication-compare-card ul li{margin:0 0 7px;font-size:15px;color:#39393f;}\r\n\r\n    \/* ---------- SCENARIOS ---------- *\/\r\n    .mas-publication-scenario{\r\n      border:1px solid var(--mas-line);border-radius:8px;\r\n      overflow:hidden;margin:0 0 16px;background:#fff;\r\n    }\r\n    .mas-publication-scenario-head{\r\n      display:flex;align-items:center;gap:14px;\r\n      background:var(--mas-gold);padding:12px 18px;\r\n    }\r\n    .mas-publication-scenario-tag{\r\n      flex:0 0 auto;background:var(--mas-black);color:var(--mas-gold);\r\n      font-size:11px;font-weight:800;letter-spacing:1.2px;\r\n      text-transform:uppercase;padding:4px 10px;border-radius:4px;\r\n    }\r\n    .mas-publication-scenario-head h4{\r\n      margin:0;font-size:16px;font-weight:800;color:var(--mas-black);line-height:1.35;\r\n    }\r\n    .mas-publication-scenario-body{padding:14px 18px 6px;}\r\n    .mas-publication-scenario-body p{margin:0 0 10px;font-size:15px;color:#39393f;}\r\n\r\n    \/* ---------- FIGURES (image placeholder + HTML fallback) ---------- *\/\r\n    .mas-publication-wrapper .mas-publication-figure{\r\n      display:block !important;width:100% !important;max-width:100% !important;\r\n      margin:24px 0 30px !important;padding:0 !important;float:none !important;text-align:left;\r\n    }\r\n    .mas-publication-wrapper .mas-publication-figure-fallback{display:block;width:100%;}\r\n    .mas-publication-figure-img{\r\n      display:none;width:100%;max-width:100%;height:auto;\r\n      border-radius:8px;border:1px solid var(--mas-line);\r\n    }\r\n    .mas-publication-figure.mas-img-ready .mas-publication-figure-img{display:block;}\r\n    .mas-publication-figure.mas-img-ready .mas-publication-figure-fallback{display:none;}\r\n    .mas-publication-figure-fallback > *{margin-top:0 !important;margin-bottom:0 !important;}\r\n\r\n    \/* ---------- TABLES ---------- *\/\r\n    .mas-publication-table-scroll{\r\n      overflow-x:auto;margin:22px 0 30px;\r\n      -webkit-overflow-scrolling:touch;\r\n    }\r\n    .mas-publication-table{\r\n      width:100%;border-collapse:collapse;min-width:520px;font-size:15px;\r\n    }\r\n    .mas-publication-table th{\r\n      background:var(--mas-gold);color:var(--mas-black);\r\n      text-align:left;padding:13px 16px;font-weight:800;font-size:14px;\r\n    }\r\n    .mas-publication-table td{\r\n      padding:13px 16px;border-bottom:1px solid var(--mas-line);\r\n      vertical-align:top;color:#39393f;\r\n    }\r\n    .mas-publication-table tr:nth-child(even) td{background:#fdfbf3;}\r\n    .mas-publication-table td.mas-publication-td-strong{font-weight:700;color:var(--mas-ink);}\r\n    .mas-publication-table td.mas-publication-td-num{width:56px;font-weight:800;color:var(--mas-dark-gold);}\r\n\r\n    \/* ---------- FAQ ACCORDION ---------- *\/\r\n    .mas-publication-faq-item{\r\n      border-bottom:1px solid var(--mas-line);\r\n    }\r\n    .mas-publication-faq-q{\r\n      display:flex;align-items:flex-start;justify-content:space-between;gap:16px;\r\n      width:100%;background:none;border:none;text-align:left;\r\n      font-family:inherit;font-size:17px;font-weight:800;color:var(--mas-ink);\r\n      padding:20px 0;cursor:pointer;line-height:1.45;\r\n    }\r\n    .mas-publication-faq-q:hover{color:var(--mas-dark-gold);background:none;}\r\n    .mas-publication-faq-icon{\r\n      flex:0 0 auto;width:26px;height:26px;border-radius:50%;\r\n      background:var(--mas-gold);color:var(--mas-black);\r\n      font-size:17px;font-weight:800;line-height:26px;text-align:center;\r\n      transition:transform .25s ease;\r\n    }\r\n    .mas-publication-faq-item.mas-faq-open .mas-publication-faq-icon{\r\n      transform:rotate(45deg);\r\n    }\r\n    .mas-publication-faq-a{\r\n      max-height:0;overflow:hidden;transition:max-height .3s ease;\r\n    }\r\n    .mas-publication-faq-a p{\r\n      font-size:15px;margin:0 0 20px;color:#3a3a40;padding-right:42px;\r\n    }\r\n\r\n    \/* ---------- CONCLUSION QUOTE ---------- *\/\r\n    .mas-publication-quote{\r\n      background:#111;color:var(--mas-white);\r\n      border-radius:10px;padding:30px 32px;margin:30px 0;\r\n      font-size:18px;font-style:italic;line-height:1.6;\r\n      border-left:6px solid var(--mas-gold);\r\n    }\r\n\r\n    \/* ---------- RESOURCES ---------- *\/\r\n    .mas-publication-res-group{margin:0 0 26px;}\r\n    .mas-publication-res-group h3{\r\n      margin:0 0 10px;font-size:12px;font-weight:800;letter-spacing:1.5px;\r\n      color:var(--mas-dark-gold);text-transform:uppercase;\r\n    }\r\n    .mas-publication-res-group ul{margin:0;padding:0;list-style:none;}\r\n    .mas-publication-res-group li{\r\n      margin:0 0 9px;font-size:15px;position:relative;padding-left:20px;\r\n    }\r\n    .mas-publication-resources-list li::before{\r\n      content:\"\\203A\";position:absolute;left:0;top:0;\r\n      color:var(--mas-gold);font-weight:800;font-size:18px;line-height:1.5;\r\n      pointer-events:none;\r\n    }\r\n    .mas-publication-resources-list a{\r\n      color:var(--mas-dark-gold);text-decoration:underline;\r\n      text-underline-offset:3px;position:relative;z-index:10;\r\n      pointer-events:auto;cursor:pointer;\r\n    }\r\n    .mas-publication-resources-list a:hover{color:var(--mas-black);}\r\n\r\n    \/* ---------- KEYBOARD FOCUS ---------- *\/\r\n    .mas-publication-wrapper a:focus-visible,\r\n    .mas-publication-wrapper button:focus-visible{\r\n      outline:3px solid var(--mas-gold);outline-offset:2px;\r\n    }\r\n\r\n    \/* ---------- STICKY DOWNLOAD BUTTON ---------- *\/\r\n    .mas-publication-download{\r\n      position:fixed;left:0;top:50%;transform:translateY(-50%);\r\n      z-index:9999;\r\n    }\r\n    .mas-publication-download a,\r\n    .mas-publication-download button{\r\n      display:flex;align-items:center;gap:8px;\r\n      writing-mode:vertical-lr;text-orientation:mixed;\r\n      transform:rotate(180deg);\r\n      background:#fabc17 !important;background-color:#fabc17 !important;color:#000000 !important;\r\n      font-weight:800;font-size:13px;letter-spacing:.08em;\r\n      padding:24px 15px;border-radius:6px 0 0 6px;\r\n      text-decoration:none;box-shadow:-4px 0 18px rgba(0,0,0,.28);\r\n      transition:background .15s;border:none !important;cursor:pointer;\r\n      font-family:inherit;white-space:nowrap;line-height:1.2;\r\n      -webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;\r\n    }\r\n    .mas-publication-download a:hover,\r\n    .mas-publication-download button:hover{background:#cfa434 !important;background-color:#cfa434 !important;color:#fff !important;}\r\n    .mas-publication-download button:focus-visible{outline:3px solid #000000 !important;outline-offset:-6px;}\r\n    .mas-publication-download svg{transform:rotate(90deg);}\r\n\r\n    \/* ---------- CF7 MODAL OVERLAY (literal colors - works anywhere) ---------- *\/\r\n    .mas-publication-modal-overlay{\r\n      display:none;\r\n      position:fixed;top:0;left:0;right:0;bottom:0;\r\n      background:rgba(0,0,0,0.65);\r\n      z-index:99999;\r\n      align-items:center;justify-content:center;\r\n    }\r\n    .mas-publication-modal-overlay.mas-publication-modal-open{display:flex !important;}\r\n    .mas-publication-modal{\r\n      background:#ffffff !important;background-color:#ffffff !important;\r\n      border-radius:12px;\r\n      padding:36px 32px 30px;\r\n      max-width:460px;width:92%;\r\n      max-height:90vh;overflow-y:auto;\r\n      position:relative;\r\n      box-shadow:0 12px 48px rgba(0,0,0,0.25);\r\n      font-family:inherit;\r\n    }\r\n    .mas-publication-modal-close{\r\n      position:absolute;top:12px;right:14px;\r\n      background:none !important;border:none !important;font-size:22px;\r\n      color:#55555c !important;cursor:pointer;line-height:1;padding:4px 8px;\r\n    }\r\n    .mas-publication-modal-close:hover{color:#000000 !important;}\r\n    .mas-publication-modal h3{\r\n      font-size:20px;font-weight:800;margin:0 0 6px;color:#16161a;\r\n    }\r\n    .mas-publication-modal p{\r\n      font-size:14px;color:#55555c;margin:0 0 20px;\r\n    }\r\n    .mas-publication-modal .wpcf7{margin:0;}\r\n    .mas-publication-modal .wpcf7 label{\r\n      display:block;font-size:14px;font-weight:600;\r\n      color:#16161a;margin:0 0 14px;\r\n    }\r\n    .mas-publication-modal .wpcf7 input[type=\"text\"],\r\n    .mas-publication-modal .wpcf7 input[type=\"email\"],\r\n    .mas-publication-modal .wpcf7 input[type=\"tel\"]{\r\n      width:100%;padding:10px 14px;border:1px solid #e7e7e7;\r\n      border-radius:6px;font-size:15px;margin-top:4px;font-family:inherit;\r\n      background:#ffffff;color:#16161a;\r\n    }\r\n    .mas-publication-modal .wpcf7 input[type=\"submit\"]{\r\n      background:#fabc17 !important;color:#000000 !important;\r\n      border:none;padding:13px 28px;border-radius:6px;\r\n      font-weight:800;font-size:15px;cursor:pointer;\r\n      width:100%;margin-top:6px;font-family:inherit;transition:background .15s;\r\n    }\r\n    .mas-publication-modal .wpcf7 input[type=\"submit\"]:hover{\r\n      background:#cfa434 !important;color:#fff !important;\r\n    }\r\n    .mas-publication-modal-download{\r\n      display:block;text-align:center;background:#fabc17 !important;color:#000000 !important;\r\n      font-weight:800;font-size:15px;padding:14px 28px;border-radius:6px;\r\n      text-decoration:none !important;margin-top:10px;cursor:pointer;\r\n      position:relative;z-index:10;pointer-events:auto;\r\n    }\r\n    .mas-publication-modal-download:hover{background:#cfa434 !important;color:#ffffff !important;}\r\n\r\n    \/* ---------- EXTRA: callout paragraphs inside stat boxes ---------- *\/\r\n    .mas-publication-statbox p{margin:0;font-size:15px;color:#2c2c31;}\r\n    .mas-publication-statbox p + p{margin-top:10px;}\r\n    .mas-publication-warning ul{margin:0;padding-left:20px;}\r\n    .mas-publication-warning ul li{margin:0 0 9px;font-size:15px;color:#222;}\r\n\r\n    \/* ---------- EXTRA: image placeholder box (shows until the real image link is pasted) ---------- *\/\r\n    .mas-publication-img-placeholder{\r\n      display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;\r\n      width:100%;aspect-ratio:16\/9;min-height:180px;padding:20px;text-align:center;\r\n      background:#fffbe8;border:2px dashed var(--mas-gold);border-radius:8px;\r\n    }\r\n    .mas-publication-img-placeholder strong{font-size:16px;font-weight:800;color:var(--mas-ink);}\r\n    .mas-publication-img-placeholder span{font-size:13px;color:var(--mas-muted);word-break:break-word;}\r\n\r\n    \/* ---------- EXTRA: dark flow boxes (Units \/ Dollars) ---------- *\/\r\n    .mas-publication-wrapper .mas-publication-flow-item.mas-publication-flow-dark{background:#111;color:#fff;}\r\n    .mas-publication-dual{\r\n      display:grid;grid-template-columns:repeat(2,minmax(0,1fr));\r\n      gap:24px;margin:24px 0 30px;\r\n    }\r\n    .mas-publication-wrapper .mas-publication-dual .mas-publication-flow{margin:0 !important;}\r\n\r\n    \/* ---------- EXTRA: debit \/ credit cards ---------- *\/\r\n    .mas-publication-dc{\r\n      display:grid;grid-template-columns:repeat(2,minmax(0,1fr));\r\n      gap:14px;margin:22px 0 30px;\r\n    }\r\n    .mas-publication-dc-card{\r\n      background:var(--mas-gold);color:var(--mas-black);\r\n      border-radius:8px;padding:18px 20px;text-align:center;\r\n    }\r\n    .mas-publication-dc-tag{\r\n      display:block;font-size:12px;font-weight:800;letter-spacing:1.5px;\r\n      text-transform:uppercase;margin:0 0 4px;\r\n    }\r\n    .mas-publication-dc-title{display:block;font-size:16px;font-weight:800;margin:0 0 2px;}\r\n    .mas-publication-dc-text{display:block;font-size:14px;}\r\n\r\n    \/* ---------- EXTRA: chart panels ---------- *\/\r\n    .mas-publication-chart{\r\n      border:1px solid var(--mas-line);border-radius:8px;background:#fff;\r\n      padding:20px 22px;margin:22px 0 8px;\r\n    }\r\n    .mas-publication-chart .mas-publication-bars{margin:0;gap:14px;}\r\n    .mas-publication-bar-label small{\r\n      display:block;font-size:12px;font-weight:500;color:var(--mas-muted);\r\n    }\r\n    .mas-publication-bar-note{\r\n      display:block;font-size:12.5px;color:var(--mas-muted);margin-top:5px;line-height:1.45;\r\n    }\r\n    .mas-publication-bar-stack{\r\n      display:flex;height:32px;border-radius:4px;overflow:hidden;\r\n    }\r\n    .mas-publication-seg{\r\n      display:flex;align-items:center;justify-content:center;\r\n      min-width:0;padding:0 8px;font-size:12.5px;font-weight:800;\r\n      white-space:nowrap;overflow:hidden;text-overflow:ellipsis;\r\n      background:var(--mas-gold);color:var(--mas-black);\r\n    }\r\n    .mas-publication-seg + .mas-publication-seg{border-left:2px solid #fff;}\r\n    .mas-publication-seg.mas-publication-seg-dark{background:#111;color:#fff;}\r\n    .mas-publication-chart-foot{\r\n      display:block;font-size:12.5px;color:var(--mas-muted);\r\n      margin-top:14px;padding-top:10px;border-top:1px solid var(--mas-line);\r\n    }\r\n    .mas-publication-section p.mas-publication-caption{\r\n      font-size:13px;color:var(--mas-muted);margin:0 0 30px;font-style:italic;\r\n    }\r\n\r\n    \/* ---------- EXTRA: journal table alignment ---------- *\/\r\n    .mas-publication-table th.mas-publication-th-right,\r\n    .mas-publication-table td.mas-publication-td-right{text-align:right;white-space:nowrap;}\r\n    .mas-publication-table tr.mas-publication-tr-total td{\r\n      font-weight:800;color:var(--mas-ink);background:#fff;\r\n      border-top:3px solid var(--mas-gold);\r\n    }\r\n    .mas-publication-table tr.mas-publication-tr-blank td{height:46px;}\r\n\r\n    \/* ---------- RESPONSIVE ---------- *\/\r\n    \/* keep content clear of the fixed side \"Download PDF\" button on laptop\/tablet widths *\/\r\n    @media (min-width:769px) and (max-width:1340px){\r\n      .mas-publication-body{padding-left:64px;}\r\n    }\r\n\r\n    @media (max-width:900px){\r\n      .mas-publication-wrapper{--mas-pad:28px;}\r\n      .mas-publication-compare.mas-publication-compare-3{grid-template-columns:1fr;}\r\n      .mas-publication-section h3{font-size:18px;}\r\n      .mas-publication-wrapper .mas-publication-flow{gap:8px;}\r\n      .mas-publication-wrapper .mas-publication-flow-item{font-size:12px;padding:14px 8px;}\r\n      .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact{gap:4px;}\r\n      .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact .mas-publication-flow-item{font-size:11px;padding:12px 6px;}\r\n      .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact .mas-publication-flow-arrow{flex-basis:16px !important;width:16px;}\r\n      .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact .mas-publication-flow-arrow::before{width:8px;}\r\n      .mas-publication-glance dl{grid-template-columns:160px minmax(0,1fr);}\r\n    }\r\n\r\n    @media (max-width:768px){\r\n      .mas-publication-wrapper{--mas-pad:18px;}\r\n      .mas-publication-toc{padding:22px 20px;}\r\n      .mas-publication-toc a{padding:15px 4px;min-height:48px;}\r\n      .mas-publication-section{padding:32px 0 6px;}\r\n      .mas-publication-section-head{gap:10px;}\r\n      .mas-publication-num{width:32px;height:32px;font-size:15px;}\r\n      .mas-publication-statbox,\r\n      .mas-publication-warning,\r\n      .mas-publication-glance{padding:18px 20px;}\r\n      .mas-publication-glance dl{grid-template-columns:1fr;}\r\n      .mas-publication-glance dt{padding:12px 0 2px;border-bottom:none;}\r\n      .mas-publication-glance dd{padding:0 0 12px;}\r\n      .mas-publication-section ul.mas-publication-cols{columns:1;}\r\n      .mas-publication-compare{grid-template-columns:1fr;}\r\n      .mas-publication-bar{grid-template-columns:1fr;gap:4px;}\r\n      .mas-publication-step{flex-direction:column;}\r\n      .mas-publication-step-label{min-width:100%;justify-content:flex-start;padding:9px 16px;}\r\n      .mas-publication-scenario-head{flex-wrap:wrap;gap:8px;}\r\n      .mas-publication-faq-q{padding:16px 0;min-height:48px;font-size:16px;}\r\n      .mas-publication-faq-a p{padding-right:0;}\r\n      .mas-publication-quote{padding:24px 22px;font-size:16px;}\r\n\r\n      .mas-publication-wrapper .mas-publication-flow,\r\n      .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact{\r\n        flex-direction:column !important;align-items:stretch !important;gap:6px;\r\n      }\r\n      .mas-publication-wrapper .mas-publication-flow-item,\r\n      .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact .mas-publication-flow-item{\r\n        flex:0 0 auto !important;width:100% !important;min-height:46px;font-size:13px;padding:13px 14px;\r\n      }\r\n      .mas-publication-wrapper .mas-publication-flow-arrow,\r\n      .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact .mas-publication-flow-arrow{\r\n        flex:0 0 22px !important;width:100%;height:22px;transform:rotate(90deg);\r\n      }\r\n      .mas-publication-wrapper .mas-publication-flow-arrow.mas-publication-flow-plus{transform:none;width:100% !important;height:24px;}\r\n      .mas-publication-wrapper .mas-publication-flow.mas-publication-flow-compact .mas-publication-flow-arrow::before{width:14px;}\r\n\r\n      .mas-publication-download{\r\n        position:fixed;left:0;right:0;bottom:0;top:auto;transform:none;\r\n        width:100%;\r\n      }\r\n      .mas-publication-download a,\r\n      .mas-publication-download button{\r\n        writing-mode:horizontal-tb;text-orientation:initial;transform:none;\r\n        justify-content:center;border-radius:0;\r\n        padding:16px 24px;font-size:15px;\r\n        box-shadow:0 -2px 12px rgba(0,0,0,.18);\r\n        width:100%;\r\n      }\r\n      .mas-publication-download svg{transform:none;}\r\n      .mas-publication-body{padding-bottom:84px;}\r\n      .mas-publication-modal{padding:28px 20px 24px;}\r\n    }\r\n\r\n    @media (max-width:480px){\r\n      .mas-publication-section p,\r\n      .mas-publication-section ul li{font-size:15px;}\r\n      .mas-publication-section-head h2{font-size:21px;}\r\n      .mas-publication-section h3{font-size:17px;}\r\n      .mas-publication-table{min-width:420px;font-size:14px;}\r\n      .mas-publication-formula{font-size:15px;padding:16px 18px;}\r\n      .mas-publication-toc h2{font-size:19px;}\r\n    }\r\n\r\n    \/* ---------- EXTRA RESPONSIVE (components added for this publication) ---------- *\/\r\n    @media (max-width:900px){\r\n      .mas-publication-dual{gap:16px;}\r\n    }\r\n    @media (max-width:768px){\r\n      .mas-publication-dual,\r\n      .mas-publication-dc{grid-template-columns:1fr;}\r\n      .mas-publication-chart{padding:16px;}\r\n    }\r\n    @media (max-width:480px){\r\n      .mas-publication-bar-stack{flex-direction:column;height:auto;}\r\n      .mas-publication-seg{flex:0 0 auto !important;padding:8px 10px;font-size:12px;white-space:normal;}\r\n      .mas-publication-seg + .mas-publication-seg{border-left:none;border-top:2px solid #fff;}\r\n    }\r\n\r\n    \/* ================= EXTRA COMPONENTS (AppFolio publication) ================= *\/\r\n\r\n    \/* figure caption directly under an image \/ diagram *\/\r\n    .mas-publication-wrapper .mas-publication-figure + p.mas-publication-caption{margin-top:-16px;}\r\n\r\n    \/* scenario \/ cause \/ step cards: labelled paragraphs *\/\r\n    .mas-publication-scenario-body p strong{color:var(--mas-ink);}\r\n    .mas-publication-scenario-body .mas-publication-table-scroll{margin:6px 0 14px;}\r\n\r\n    @media (max-width:768px){\r\n      .mas-publication-scenario-body{padding:12px 14px 4px;}\r\n    }\r\n\r\n    @media (prefers-reduced-motion:reduce){\r\n      .mas-publication-faq-a,\r\n      .mas-publication-faq-icon,\r\n      .mas-publication-toc a{transition:none;}\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"mas-publication-body\">\r\n\r\n    <!-- ================= ABOUT \/ DISCLAIMER ================= -->\r\n    <section class=\"mas-publication-details\">\r\n\r\n      <p class=\"mas-publication-block-label\">About This Guide<\/p>\r\n      <p>Most property management companies using AppFolio have a trust accounting gap they don&rsquo;t know about. This guide is designed to help property management (PM) company owners, operations managers, bookkeepers, and the accountants who support them understand how AppFolio&rsquo;s accounting architecture actually works, where trust balances silently drift, how to audit and correct them, and what it takes to keep them clean going forward. It is written for teams who already use AppFolio daily. It is not an introduction to the software, but an honest accounting of what the software is doing behind every transaction you run: every ledger, every reconciliation, and every report, mapped to how AppFolio actually works.<\/p>\r\n      <p>The guide is optimized for both human readers and AI-assisted search engines (AEO\/GEO), making it a useful reference for anyone responsible for property management trust accounting.<\/p>\r\n\r\n      <p class=\"mas-publication-block-label\">Disclaimer<\/p>\r\n      <p class=\"mas-publication-disclaimer\">This E-Guide is for informational purposes only and does not constitute legal, tax, or accounting advice. Trust accounting rules vary by state. Consult a qualified accounting professional or attorney for guidance specific to your property management company. AppFolio is a trademark of AppFolio, Inc.; this guide is an independent publication. Screenshots and figures are illustrative and use sample data.<\/p>\r\n    <\/section>\r\n\r\n    <!-- ================= TABLE OF CONTENTS ================= -->\r\n    <nav class=\"mas-publication-toc\" aria-label=\"Table of contents\">\r\n      <h2>Table of Contents<\/h2>\r\n      <ol>\r\n        <li class=\"mas-publication-toc-plain\"><a href=\"#executive-summary\">Executive Summary<\/a><\/li>\r\n        <li><a href=\"#section-1\">What Is AppFolio Actually Doing with Your Money<\/a><\/li>\r\n        <li><a href=\"#section-2\">Who This Affects and Why It Goes Unnoticed<\/a><\/li>\r\n        <li><a href=\"#section-3\">How the Trust Liability Chain Is Supposed to Work<\/a><\/li>\r\n        <li><a href=\"#section-4\">Why the Balance Drifts: The Root Causes<\/a><\/li>\r\n        <li><a href=\"#section-5\">How to Audit Your Trust Accounting in AppFolio<\/a><\/li>\r\n        <li><a href=\"#section-6\">How to Clear It Correctly, Without Making It Worse<\/a><\/li>\r\n        <li><a href=\"#section-7\">Prevention: Stopping It from Happening Again<\/a><\/li>\r\n        <li><a href=\"#section-8\">When the Problem Is Beyond a DIY Fix<\/a><\/li>\r\n        <li class=\"mas-publication-toc-plain\"><a href=\"#faq\">Frequently Asked Questions<\/a><\/li>\r\n        <li class=\"mas-publication-toc-plain\"><a href=\"#conclusion\">Conclusion<\/a><\/li>\r\n        <li class=\"mas-publication-toc-plain\"><a href=\"#resources\">Further Reading &amp; Official Resources<\/a><\/li>\r\n      <\/ol>\r\n    <\/nav>\r\n\r\n    <!-- ================= EXECUTIVE SUMMARY ================= -->\r\n    <section class=\"mas-publication-section\" id=\"executive-summary\">\r\n      <p class=\"mas-publication-eyebrow\">Section Overview<\/p>\r\n      <div class=\"mas-publication-section-head\">\r\n        <h2>Executive Summary<\/h2>\r\n      <\/div>\r\n\r\n      <p>Whether you own a property management company, run its day-to-day operations, or keep its books, this guide will help you understand the full scope of AppFolio trust accounting, from the architecture behind every transaction to the practical steps needed to audit, correct, and maintain a trust account that holds up to a state audit.<\/p>\r\n\r\n      <p>Most property management companies using AppFolio have a trust accounting gap they don&rsquo;t know about. Not because AppFolio is broken, but because the system is designed around trust liability in a way that doesn&rsquo;t announce itself unless you&rsquo;re looking. Cash in the trust bank account and the money you are actually free to disburse are not the same number, and when the two drift apart there is no alert, no dashboard warning, and no email notification. The gap grows in the background until a state audit, a new bookkeeper, or an owner dispute forces someone to look.<\/p>\r\n\r\n      <p>This guide covers the entire trust accounting lifecycle in AppFolio across eight sections: what AppFolio is actually doing with your money, who is affected and why the gap goes unnoticed, how the trust liability chain is supposed to work, the root causes of drift, how to audit your trust accounting, how to clear discrepancies without making them worse, how to prevent them from recurring, and how to recognize when the problem is beyond a do-it-yourself fix.<\/p>\r\n\r\n      <div class=\"mas-publication-statbox\">\r\n        <p class=\"mas-publication-box-title\">Key Facts at a Glance<\/p>\r\n        <ul>\r\n          <li>The trust bank balance and the trust liability balance must match <strong>to the cent<\/strong>, at all times.<\/li>\r\n          <li>AppFolio does not alert you when trust liability diverges from the bank balance; the gap grows silently.<\/li>\r\n          <li>The deposit batch step is the most commonly skipped step and the single most common origin of trust-liability drift.<\/li>\r\n          <li>A journal entry that forces the Trust Account Balance report to zero hides the error; it does not fix it, and state auditors specifically look for these entries.<\/li>\r\n          <li>Three habits prevent the large majority of problems: a monthly zero-difference reconciliation before any owner statement, batching within two business days, and tracing every discrepancy to its source.<\/li>\r\n        <\/ul>\r\n      <\/div>\r\n\r\n      <p>This guide is optimized for both human readers and AI-assisted search engines (AEO\/GEO), making it an authoritative reference for anyone responsible for property management trust accounting in AppFolio.<\/p>\r\n    <\/section>\r\n\r\n    <!-- ================= SECTION 1 ================= -->\r\n    <section class=\"mas-publication-section\" id=\"section-1\">\r\n      <div class=\"mas-publication-section-head\">\r\n        <span class=\"mas-publication-num\">1<\/span>\r\n        <h2>What Is AppFolio Actually Doing with Your Money<\/h2>\r\n      <\/div>\r\n\r\n      <p>Before anything else, it is worth being direct about what AppFolio is and what it isn&rsquo;t. AppFolio is not a general-purpose accounting tool that happens to have a property management module on top. It is a property management system built around a specific accounting architecture, one designed specifically to handle the legal and fiduciary requirements of property management trust accounting. Understanding that architecture is the prerequisite for everything else in this guide.<\/p>\r\n\r\n      <h3>Three Ledgers, Not One<\/h3>\r\n      <p>When a tenant pays rent in AppFolio, that money doesn&rsquo;t simply move from &ldquo;tenant&rdquo; to &ldquo;bank.&rdquo; It conceptually passes through three distinct ledgers before it reaches an owner: the <strong>tenant ledger<\/strong>, the <strong>trust bank account<\/strong>, and the <strong>owner ledger<\/strong>. Each represents a different accounting relationship and a different liability. The tenant ledger tracks what each tenant owes and has paid. The trust bank account holds the physical cash. The owner ledger tracks what the PM company owes each property owner after deducting fees, expenses, and reserves.<\/p>\r\n\r\n      <div class=\"mas-publication-figure\" role=\"figure\" aria-label=\"Figure 1: AppFolio's Three-Ledger Architecture\">\r\n        <img class=\"mas-publication-figure-img\" src=\"https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-1.png\" alt=\"AppFolio's three-ledger architecture: the tenant ledger holds charges, payments, credit balances and security deposits; the trust bank account holds deposit batches, the reconciled bank feed and physical cash; the owner ledger deducts management fees and repair expenses, calculates the net draw and initiates the disbursement\" decoding=\"async\">\r\n        <div class=\"mas-publication-figure-fallback\"><div class=\"mas-publication-img-placeholder\"><strong>Image 1: AppFolio&rsquo;s Three-Ledger Architecture<\/strong><span>Replace [https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-1.png] with the image link<\/span><\/div><\/div>\r\n      <\/div>\r\n      <p class=\"mas-publication-caption\">Figure 1 &mdash; Money moves through all three ledgers before an owner draw can be legitimately processed<\/p>\r\n\r\n      <h3>The Relay Race Analogy<\/h3>\r\n      <p>Think of it as a relay race with three runners. The tenant passes the baton (the payment) to the trust account at the batch deposit step. The trust account passes it to the owner ledger when the owner statement is generated and the draw is calculated. At every handoff, the baton, which is the liability, has to transfer cleanly.<\/p>\r\n\r\n      <div class=\"mas-publication-flow\">\r\n        <div class=\"mas-publication-flow-item\">Tenant Ledger<\/div>\r\n        <div class=\"mas-publication-flow-arrow\" aria-hidden=\"true\">&rarr;<\/div>\r\n        <div class=\"mas-publication-flow-item\">Trust Bank Account<\/div>\r\n        <div class=\"mas-publication-flow-arrow\" aria-hidden=\"true\">&rarr;<\/div>\r\n        <div class=\"mas-publication-flow-item\">Owner Ledger<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-example\">\r\n        <p class=\"mas-publication-box-title\">Example: When the Baton Is Dropped<\/p>\r\n        <p>A payment is received but never batched, or a draw is processed before the reconciliation closes. The baton now ends up in two runners&rsquo; hands at the same time. That is a trust imbalance, and it is exactly what state regulators look for.<\/p>\r\n      <\/div>\r\n\r\n      <h3>Why AppFolio Is Built Around Trust Liability, Not Just Cash<\/h3>\r\n      <p>Property managers in almost every U.S. state are legally required to maintain trust accounts that hold tenant and owner funds separately from operating funds, and to be able to account for every dollar in those accounts at any moment. This is a fiduciary obligation enforced by state real estate commissions.<\/p>\r\n      <p>AppFolio&rsquo;s architecture, specifically the deposit batch workflow, the Trust Account Balance report, and the distinction between bank balance and trust liability, exists precisely to meet this requirement. The system was built to protect PM companies from commingling, misappropriation, and state audit failure. Most AppFolio users know they have trust accounts. Far fewer know how the liability side of those accounts works.<\/p>\r\n\r\n      <h3>The Transaction Lifecycle from Charge to Disbursement<\/h3>\r\n      <p>A properly executed AppFolio transaction follows a specific sequence, and every step is required. The lifecycle runs: charge posted to tenant ledger &rarr; payment received &rarr; payment grouped into a deposit batch &rarr; batch deposited and reconciled to the bank &rarr; owner statement generated &rarr; draw calculated and disbursed. Skipping any step in this sequence, particularly the batch deposit step, which is the most commonly skipped, breaks the audit trail. The money may still arrive in the bank, but the liability accounting trails off and the trust balance begins to drift.<\/p>\r\n\r\n      <div class=\"mas-publication-figure\" role=\"figure\" aria-label=\"Figure 2: AppFolio Transaction Lifecycle\">\r\n        <img class=\"mas-publication-figure-img\" src=\"https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-2.png\" alt=\"AppFolio transaction lifecycle in six steps: charge posted, payment received, deposit batched, bank reconciled, owner statement, owner disbursed. Skipping the batch step breaks the trust liability trail\" decoding=\"async\">\r\n        <div class=\"mas-publication-figure-fallback\"><div class=\"mas-publication-img-placeholder\"><strong>Image 2: AppFolio Transaction Lifecycle: Charge Posted to Owner Disbursed<\/strong><span>Replace [https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-2.png] with the image link<\/span><\/div><\/div>\r\n      <\/div>\r\n      <p class=\"mas-publication-caption\">Figure 2 &mdash; Every step is required; skipping any one breaks the audit trail that state regulators check<\/p>\r\n\r\n      <h3>The Reserve and Liability Gap: The Most Important Concept in This Guide<\/h3>\r\n      <p>Here is the thing most AppFolio users get wrong: cash in the trust bank account and money you are actually free to disburse are not the same number. The trust bank balance is physical cash. The trust liability balance is what AppFolio says you owe, in aggregate, to all tenants and owners combined.<\/p>\r\n      <p>When you process an owner draw, you are not drawing from the bank balance. You are drawing from the net owner ledger balance, which is calculated after all tenant credits, security deposits, fee deductions, and reserves have been accounted for on the liability side. If the liability side is wrong, because a payment was received but never properly routed through the batch workflow or a security deposit is sitting unaccounted for, the draw calculation is wrong, regardless of what the bank balance shows.<\/p>\r\n\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Feature<\/th><th>Trust Bank Balance<\/th><th>Trust Liability Balance<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">What it is<\/td><td>Physical cash held in the trust bank account<\/td><td>What AppFolio says you owe, in aggregate, to all tenants and owners<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Made up of<\/td><td>Deposited and reconciled batches, less disbursements<\/td><td>Tenant credits, security deposits, prepaid rent, owner balances and reserves<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Basis for owner draws<\/td><td>No<\/td><td>Yes, via the net owner ledger balance<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Where to see it<\/td><td>Bank statement and Trust Account Balance report<\/td><td>Trust Account Balance report<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Required relationship<\/td><td>Must equal trust liability, to the cent<\/td><td>Must equal trust bank balance, to the cent<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>Every AppFolio User Has a Trust Liability Balance<\/h3>\r\n      <p>This is worth being explicit about: if you are running tenant payments and owner draws through AppFolio, you have a trust liability balance. It exists whether you have ever opened the Trust Account Balance report or not. That balance should, at all times and to the cent, equal the trust bank account balance.<\/p>\r\n\r\n      <div class=\"mas-publication-statbox\">\r\n        <p class=\"mas-publication-box-title\">Key Rule<\/p>\r\n        <p><strong>Trust Liability Balance = Trust Bank Account Balance<\/strong>, to the cent, at all times. If they don&rsquo;t match, your trust is out of balance. How far out of balance it is, and for how long it has been out of balance, determines the risk and the correction effort.<\/p>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ================= SECTION 2 ================= -->\r\n    <section class=\"mas-publication-section\" id=\"section-2\">\r\n      <div class=\"mas-publication-section-head\">\r\n        <span class=\"mas-publication-num\">2<\/span>\r\n        <h2>Who This Affects and Why It Goes Unnoticed<\/h2>\r\n      <\/div>\r\n\r\n      <p>Trust accounting gaps are not rare edge cases that happen to poorly run PM companies. They are common, gradual, and, crucially, silent. There is no AppFolio alert that fires when the trust liability diverges from the bank balance. No dashboard warning. No email notification. The gap grows in the background until something forces someone to look.<\/p>\r\n\r\n      <h3>Who Is Affected<\/h3>\r\n      <p>Any PM company running tenant payments, security deposits, owner draws, or property-level reserves through AppFolio trust accounts is exposed. This is not a niche scenario. It describes virtually every AppFolio user operating in a property management capacity, including:<\/p>\r\n      <ul>\r\n        <li>Single-office firms with 50 units<\/li>\r\n        <li>Regional operators with 2,000 units<\/li>\r\n        <li>Associations running HOA accounts<\/li>\r\n        <li>Any company processing tenant payments, security deposits, owner draws, or reserves through trust<\/li>\r\n      <\/ul>\r\n      <p>Any of them can have a trust-liability mismatch, and most won&rsquo;t discover it until something forces a look.<\/p>\r\n\r\n      <div class=\"mas-publication-flow\">\r\n        <div class=\"mas-publication-flow-item\">Tenant Payments<\/div>\r\n        <div class=\"mas-publication-flow-arrow\" aria-hidden=\"true\">&rarr;<\/div>\r\n        <div class=\"mas-publication-flow-item\">AppFolio Trust Account<\/div>\r\n        <div class=\"mas-publication-flow-arrow\" aria-hidden=\"true\">&rarr;<\/div>\r\n        <div class=\"mas-publication-flow-item\">Owner Draws<\/div>\r\n      <\/div>\r\n\r\n      <h3>Why the Gap Grows Silently<\/h3>\r\n      <p>The trust bank balance and the trust liability balance are not displayed side by side anywhere in AppFolio&rsquo;s default dashboard view. You have to pull the Trust Account Balance report and compare it manually to the bank account balance. If no one on the team has that as a standing monthly task, the comparison simply doesn&rsquo;t happen. Meanwhile, payments come in through multiple channels, batches get processed with varying consistency, and the liability side accumulates small errors that compound over time.<\/p>\r\n\r\n      <div class=\"mas-publication-warning\">\r\n        <p class=\"mas-publication-box-title\">Important Note<\/p>\r\n        <p>AppFolio will not tell you that your trust is out of balance. The only way to know is to run the Trust Account Balance report and compare total trust liability to the trust bank balance. If that comparison is not someone&rsquo;s assigned monthly task, it is almost certainly not happening.<\/p>\r\n      <\/div>\r\n\r\n      <h3>The Discovery Moment<\/h3>\r\n      <p>PM companies typically discover trust accounting problems in one of three ways:<\/p>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Discovery Trigger<\/th><th>What Happens<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">State audit or real estate commission examination<\/td><td>The mismatch is documented by an external regulator, the worst possible way to find it.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">A new bookkeeper&rsquo;s first month-end close<\/td><td>They run the Trust Account Balance report and immediately notice the liability doesn&rsquo;t match the bank.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">An owner disputing a statement<\/td><td>A payment isn&rsquo;t reflected in a draw, or a deduction doesn&rsquo;t match a vendor invoice, triggering a trace-back that reveals the underlying accounting issue.<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>What Accumulates in the Drift Window<\/h3>\r\n      <p>In the time between when the drift begins and when it&rsquo;s discovered, specific things accumulate: unresolved deposit batches (payments received and processed through the portal but never formally batched), tenant credit balances that don&rsquo;t correspond to actual liabilities (because the tenant has moved out and the balance was never cleaned up), orphaned security deposits (moved in AppFolio without the corresponding refund transaction), and in some cases, genuinely missing transactions from bank feed imports that were matched at the bank level without going through the batch workflow.<\/p>\r\n\r\n      <div class=\"mas-publication-figure\" role=\"figure\" aria-label=\"Figure 3: Trust Accounting Risk Exposure\">\r\n        <img class=\"mas-publication-figure-img\" src=\"https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-3.png\" alt=\"Trust accounting risk exposure factors for PM firms: rapid unit growth, recent software migration, multiple property owners per portfolio, high bookkeeping staff turnover, mixed payment channels, and no segregation of duties\" decoding=\"async\">\r\n        <div class=\"mas-publication-figure-fallback\"><div class=\"mas-publication-img-placeholder\"><strong>Image 3: Trust Accounting Risk Exposure: Which PM Firms Are Most Vulnerable<\/strong><span>Replace [https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-3.png] with the image link<\/span><\/div><\/div>\r\n      <\/div>\r\n      <p class=\"mas-publication-caption\">Figure 3 &mdash; PM firms with three or more of these risk factors are at meaningfully elevated exposure to state audit findings<\/p>\r\n\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>What Accumulates<\/th><th>What It Looks Like in AppFolio<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Unresolved deposit batches<\/td><td>Payments received and processed through the portal but never formally batched<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Stale tenant credit balances<\/td><td>Credits that no longer correspond to a real liability because the tenant moved out and the balance was never cleaned up<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Orphaned security deposits<\/td><td>Deposits moved in AppFolio without the corresponding refund transaction<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Missing bank feed transactions<\/td><td>Bank-level matches that never went through the batch workflow<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>Which Firms Are Most Exposed<\/h3>\r\n      <p>Three predictors stand out. Each creates the conditions in which shortcuts become normalized and trust liability starts to drift.<\/p>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Risk Predictor<\/th><th>Why It Creates Exposure<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Rapid unit growth<\/td><td>When a PM company doubles its unit count over eighteen months, transaction volume frequently outpaces the bookkeeping team&rsquo;s capacity to close batches and reconcile accounts on the previous schedule, and shortcuts become normalized.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Software migrations<\/td><td>When a firm migrates from Yardi, Buildium, or Rent Manager to AppFolio, opening trust balances are almost never verified line by line. The total may import correctly, but the per-tenant and per-owner liability composition is often wrong from day one.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">High bookkeeping staff turnover<\/td><td>Trust accounting workflows live largely in people&rsquo;s heads rather than in documented procedures. When those people leave, the workflow degrades.<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>State Real Estate Commission Enforcement Context<\/h3>\r\n      <p>Property management trust accounting failures are among the most common grounds for state real estate commission disciplinary actions. While enforcement patterns vary significantly by state, the underlying violations are consistent:<\/p>\r\n      <ul>\r\n        <li>Trust accounts that can&rsquo;t be reconciled to the cent on demand<\/li>\r\n        <li>Security deposit funds that have been commingled with operating funds<\/li>\r\n        <li>Owner funds disbursed ahead of a complete reconciliation<\/li>\r\n      <\/ul>\r\n      <p>These are not penalties for malicious conduct. Most arise from the same pattern of accumulated drift described in this guide. The point is not to alarm, but to be clear that the regulatory consequences are real and enforced.<\/p>\r\n    <\/section>\r\n\r\n    <!-- ================= SECTION 3 ================= -->\r\n    <section class=\"mas-publication-section\" id=\"section-3\">\r\n      <div class=\"mas-publication-section-head\">\r\n        <span class=\"mas-publication-num\">3<\/span>\r\n        <h2>How the Trust Liability Chain Is Supposed to Work<\/h2>\r\n      <\/div>\r\n\r\n      <p>Before diagnosing problems, it helps to be precise about the correct workflow. This is what a healthy AppFolio trust accounting cycle looks like, not as AppFolio describes it in its help documentation, but as it actually functions when every step is executed correctly.<\/p>\r\n\r\n      <h3>The Correct Sequence, Step by Step<\/h3>\r\n      <div class=\"mas-publication-steps\">\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 1<\/div>\r\n          <div class=\"mas-publication-step-text\"><span><strong>Charge posted.<\/strong> A rent charge, late fee, or other tenant charge is posted to the tenant ledger. This creates a receivable: the tenant owes the PM company a specific amount. The trust bank balance is unaffected; only the tenant ledger has changed.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 2<\/div>\r\n          <div class=\"mas-publication-step-text\"><span><strong>Payment received.<\/strong> The tenant pays via the portal, ACH pull, check, or lockbox. AppFolio records this as a payment against the charge on the tenant ledger, and the tenant&rsquo;s balance moves toward zero or into credit. Critically, the money has not yet hit the trust bank account in AppFolio&rsquo;s ledger, even if it has physically arrived at the bank.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 3<\/div>\r\n          <div class=\"mas-publication-step-text\"><span><strong>Deposit batch created and submitted.<\/strong> The payments received are grouped into a deposit batch. This is the step that moves money, conceptually, from the tenant ledger to the trust bank account and creates the corresponding trust bank entry. It is why AppFolio forces a batching workflow rather than allowing direct bank posting: it preserves the audit trail from individual payment to bank deposit.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 4<\/div>\r\n          <div class=\"mas-publication-step-text\"><span><strong>Bank reconciliation.<\/strong> The deposit batch is reconciled against the actual bank statement, confirming that what AppFolio recorded as deposited actually appears on the statement. Afterward, the trust bank balance in AppFolio should match the bank statement balance.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 5<\/div>\r\n          <div class=\"mas-publication-step-text\"><span><strong>Owner statement generated.<\/strong> AppFolio calculates each owner&rsquo;s net draw: rental income received minus management fees, vendor expenses, and any owner-directed reserves. The owner typically sees and approves the statement before the disbursement is processed.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 6<\/div>\r\n          <div class=\"mas-publication-step-text\"><span><strong>Disbursement processed.<\/strong> The owner draw is sent via ACH, check, or internal transfer. This reduces both the trust bank balance (physically) and the owner ledger balance (in AppFolio&rsquo;s accounting).<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <h3>Why the Batch Step Is Non-Negotiable<\/h3>\r\n      <p>The deposit batch workflow is the step most commonly bypassed when teams are working fast or when bank feed integrations are configured incorrectly. It is also the most important step in the trust audit trail. Without a batch, the payment is recorded on the tenant ledger but never formally entered as a deposit to the trust bank account in AppFolio&rsquo;s accounting. The bank balance may look right because the money physically arrived, but the liability accounting shows a payment that hasn&rsquo;t cleared the trust workflow.<\/p>\r\n\r\n      <div class=\"mas-publication-statbox\">\r\n        <p class=\"mas-publication-box-title\">Key Rule<\/p>\r\n        <p>Every payment must pass through a deposit batch. A missing batch is the <strong>single most common origin point for trust-liability drift<\/strong> in AppFolio.<\/p>\r\n      <\/div>\r\n\r\n      <h3>What a Healthy Trust Account Balance Report Looks Like<\/h3>\r\n      <p>At the end of each month, after all batches have been posted and the bank reconciliation is complete, the Trust Account Balance report should show a total trust liability that equals the trust bank account balance, to the cent. Not approximately. Not within a rounding tolerance. To the cent. Any difference is a discrepancy that requires investigation. The report should also show zero unresolved batches and zero items in the &ldquo;undeposited&rdquo; status beyond the current day&rsquo;s activity.<\/p>\r\n\r\n      <div class=\"mas-publication-figure\" role=\"figure\" aria-label=\"Figure 4: Healthy vs. Drifted Trust Balance at Month-End\">\r\n        <img class=\"mas-publication-figure-img\" src=\"https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-4.png\" alt=\"Healthy versus drifted trust balance at month-end. Healthy: bank balance $142,380.00, total trust liability $142,380.00, difference $0.00, 0 unresolved batches, 0 stale items. Drifted: bank balance $142,380.00, total trust liability $139,154.32, difference $3,225.68, 7 unresolved batches, 12 stale items over 30 days\" decoding=\"async\">\r\n        <div class=\"mas-publication-figure-fallback\"><div class=\"mas-publication-img-placeholder\"><strong>Image 4: What a Healthy vs. Drifted Trust Balance Looks Like at Month-End<\/strong><span>Replace [https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-4.png] with the image link<\/span><\/div><\/div>\r\n      <\/div>\r\n      <p class=\"mas-publication-caption\">Figure 4 &mdash; A $3,225 gap might look small but represents real liability owed to tenants or owners that hasn&rsquo;t been accounted for<\/p>\r\n\r\n      <div class=\"mas-publication-figure\" role=\"figure\" aria-label=\"AppFolio Trust Account Balance report\">\r\n        <img class=\"mas-publication-figure-img\" src=\"https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-5.png\" alt=\"AppFolio Trust Account Balance report as of 07\/28\/2026 showing the trust bank balance, the total trust liability split into security deposits, prepaid rents and other liabilities, and a list of unresolved batch items\" decoding=\"async\">\r\n        <div class=\"mas-publication-figure-fallback\"><div class=\"mas-publication-img-placeholder\"><strong>Image 5: AppFolio Trust Account Balance Report (Screenshot)<\/strong><span>Replace [https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-5.png] with the image link<\/span><\/div><\/div>\r\n      <\/div>\r\n      <p class=\"mas-publication-caption\">Reports &rarr; Trust Account Balance. Run this at the end of every month before any owner statements are generated. Bank balance and trust liability must match to the cent.<\/p>\r\n\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Month-End Check<\/th><th>Healthy Result<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Total trust liability vs. trust bank balance<\/td><td>Equal, to the cent (difference of $0.00)<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Unresolved batches<\/td><td>Zero<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Items in &ldquo;undeposited&rdquo; status<\/td><td>None beyond the current day&rsquo;s activity<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>How Security Deposits, Prepaid Rent, and Owner Reserves Sit Within the Liability Total<\/h3>\r\n      <p>The trust liability total is not a single number. It is the sum of several distinct liability types that behave differently:<\/p>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Liability Type<\/th><th>Owed To<\/th><th>How It Behaves<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Security deposits<\/td><td>Tenants, and potentially subject to state rules<\/td><td>Held for tenants and may need to be returned; many states regulate how security deposits are held and interest on them<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Prepaid rent<\/td><td>Tenants<\/td><td>Sits as a tenant credit until the period it applies to arrives<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Owner reserves<\/td><td>Property owners<\/td><td>Funds withheld from the owner&rsquo;s draw per the management agreement for future expenses<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n      <p>All three sit inside the total trust liability, which is why that total must equal the bank balance: <strong>every dollar in the bank is accounted for by one of these liability types.<\/strong><\/p>\r\n    <\/section>\r\n\r\n    <!-- ================= SECTION 4 ================= -->\r\n    <section class=\"mas-publication-section\" id=\"section-4\">\r\n      <div class=\"mas-publication-section-head\">\r\n        <span class=\"mas-publication-num\">4<\/span>\r\n        <h2>Why the Balance Drifts: The Root Causes<\/h2>\r\n      <\/div>\r\n\r\n      <p>Trust-liability drift doesn&rsquo;t happen randomly. It traces back to a small number of identifiable root causes, and knowing which one applies to a specific discrepancy determines the correct fix. Getting this wrong, by patching the bank balance without tracing the liability side, just moves the error to next month.<\/p>\r\n\r\n      <div class=\"mas-publication-figure\" role=\"figure\" aria-label=\"Figure 5: Why the Trust Balance Drifts: Root Causes by Category\">\r\n        <img class=\"mas-publication-figure-img\" src=\"https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-6.png\" alt=\"Root causes of trust balance drift in four categories: workflow shortcuts, entry errors, migration issues, and manual actions, each with its specific failure patterns\" decoding=\"async\">\r\n        <div class=\"mas-publication-figure-fallback\"><div class=\"mas-publication-img-placeholder\"><strong>Image 6: Why the Trust Balance Drifts: Root Causes by Category<\/strong><span>Replace [https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Img-6.png] with the image link<\/span><\/div><\/div>\r\n      <\/div>\r\n      <p class=\"mas-publication-caption\">Figure 5 &mdash; Most drift traces to one of four root causes; identifying which changes the correction approach entirely<\/p>\r\n\r\n      <p>The seven specific failure patterns below account for the trust-liability drift found in most AppFolio files.<\/p>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Cause 1<\/span>\r\n          <h4>Payments Received but Never Batched<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>What Happens:<\/strong> This is the most common cause. A tenant pays via the portal and the payment shows on the tenant ledger as received. But because of a staff workflow gap, a system error, or a day-end process that wasn&rsquo;t completed, the payment is never grouped into a deposit batch and submitted.<\/p>\r\n          <p><strong>Effect on the Trust:<\/strong> The money may have physically deposited at the bank, but AppFolio&rsquo;s trust bank ledger has no record of a deposit. The trust bank balance in AppFolio is understated; the trust liability is correct because it knows about the payment. The difference equals the payment amount.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Cause 2<\/span>\r\n          <h4>Bank Feed Transactions Matched Directly<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>What Happens:<\/strong> AppFolio&rsquo;s bank feed integration, when configured too aggressively, can match bank statement transactions directly to a bank ledger entry without routing them through a deposit batch. This is the bank feed equivalent of cutting the relay race from three runners to one.<\/p>\r\n          <p><strong>Effect on the Trust:<\/strong> The bank balance looks right because the bank transaction is matched, but the tenant ledger side of the transaction, the liability source, has never been formally processed. The result is a bank entry without a corresponding tenant-to-batch-to-bank trail.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Cause 3<\/span>\r\n          <h4>Security Deposits Refunded Outside the System<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>What Happens:<\/strong> The correct move-out workflow is to process the refund through AppFolio: apply any deductions to the tenant ledger, mark the remaining balance as refunded, and generate the disbursement through the system. Instead, a manual check is written directly to the tenant without the corresponding AppFolio entries.<\/p>\r\n          <p><strong>Effect on the Trust:<\/strong> The bank balance decreases when the check clears, but the security deposit liability in AppFolio doesn&rsquo;t. The system believes a liability still exists that has actually been paid, creating an apparent surplus on the liability side that doesn&rsquo;t correspond to anything in the bank.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Cause 4<\/span>\r\n          <h4>Owner Disbursements Processed Before Reconciliation Closes<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>What Happens:<\/strong> The owner draw calculation depends on the trust reconciliation being complete for the relevant period. A draw processed before the reconciliation closes may be calculated against an incomplete picture of the liability, because unresolved batches that should have been included aren&rsquo;t.<\/p>\r\n          <p><strong>Effect on the Trust:<\/strong> The calculated draw may be higher than it should be. The owner gets paid, and the reconciliation then closes with a shortfall. This is particularly common at month-end, when there&rsquo;s time pressure to get draws out.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Cause 5<\/span>\r\n          <h4>Duplicate Tenant Payments<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>What Happens:<\/strong> A tenant pays through the portal. A staff member, not seeing the portal payment, also manually posts a payment for the same charge. The charge now has two payments against it: one portal-originated, one manual.<\/p>\r\n          <p><strong>Effect on the Trust:<\/strong> The tenant&rsquo;s ledger shows an overpayment and the trust bank balance is overstated by the amount of the duplicate. This is more common than most PM companies expect, particularly when communication between leasing staff and bookkeeping is informal.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Cause 6<\/span>\r\n          <h4>Property Moved Between Owners or Portfolios Mid-Cycle<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>What Happens:<\/strong> When a property changes ownership or is reassigned to a different AppFolio portfolio mid-accounting period, the associated liability (prepaid rent, reserves, and security deposits) needs to transfer cleanly between the old owner ledger and the new one.<\/p>\r\n          <p><strong>Effect on the Trust:<\/strong> This is a technically complex operation in AppFolio. When it&rsquo;s done without accounting guidance, it&rsquo;s common for the liability entries to be dropped or duplicated in the transfer.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Cause 7<\/span>\r\n          <h4>Data Migration from a Prior PMS<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>What Happens:<\/strong> This deserves particular attention because migration errors don&rsquo;t announce themselves and compound over time. When a PM company migrates from Yardi, Buildium, or Rent Manager to AppFolio, the trust balance at the point of migration is typically imported as a total, not as a line-by-line reconstruction of each tenant&rsquo;s and owner&rsquo;s individual ledger.<\/p>\r\n          <p><strong>Effect on the Trust:<\/strong> If the imported total is close but not exact, or if the per-tenant liability composition is wrong even when the total matches, every reconciliation run since the migration has been off by the same amount, with additional drift layered on top.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <h3>Root Causes at a Glance<\/h3>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Root Cause<\/th><th>Bank Side<\/th><th>Liability Side<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Payment never batched<\/td><td>AppFolio trust bank understated<\/td><td>Correct (knows about the payment)<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Bank feed matched directly<\/td><td>Looks correct<\/td><td>No tenant-to-batch-to-bank trail<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Deposit refunded offline<\/td><td>Reduced when the check clears<\/td><td>Still shows the deposit as owed<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Draw before reconciliation<\/td><td>Short after reconciliation closes<\/td><td>Draw calculated on incomplete data<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Duplicate tenant payment<\/td><td>Overstated by the duplicate<\/td><td>Tenant shows an overpayment<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Mid-cycle property move<\/td><td>Unchanged<\/td><td>Entries dropped or duplicated<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Migration from prior PMS<\/td><td>Constant offset since go-live<\/td><td>Wrong total or wrong composition<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>Why Patching the Bank Balance Is Always the Wrong Fix<\/h3>\r\n      <p>When a trust discrepancy is discovered, the tempting shortcut is to create a journal entry that makes the bank balance match the liability, or vice versa. This makes the report look right. But unless the entry traces back to the actual cause of the discrepancy (the unmatched payment, the unrecorded refund, the duplicate entry), it doesn&rsquo;t fix the underlying error. It simply hides it in a different account.<\/p>\r\n      <p>At the next reconciliation, the error reappears, often with additional drift on top of it. <strong>The correct approach is always to trace the discrepancy to its source and correct it at that level.<\/strong><\/p>\r\n    <\/section>\r\n\r\n    <!-- ================= SECTION 5 ================= -->\r\n    <section class=\"mas-publication-section\" id=\"section-5\">\r\n      <div class=\"mas-publication-section-head\">\r\n        <span class=\"mas-publication-num\">5<\/span>\r\n        <h2>How to Audit Your Trust Accounting in AppFolio<\/h2>\r\n      <\/div>\r\n\r\n      <p>An audit of your AppFolio trust accounting is not a complicated process, but it requires working through a specific set of reports in a specific order. Don&rsquo;t start correcting anything until the audit is complete. Corrections made without a full understanding of the scope often move errors rather than eliminate them.<\/p>\r\n\r\n      <div class=\"mas-publication-figure\" role=\"figure\" aria-label=\"Figure 6: How to Audit Your AppFolio Trust Accounting, Step by Step\">\r\n        <img class=\"mas-publication-figure-img\" src=\"https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/image-7-1.png\" alt=\"Seven-step AppFolio trust accounting audit: run the Trust Account Balance and Trust Account Detail reports side by side, calculate the difference, age unresolved batches at 30, 60 and 90 days, scan for duplicates, cross-reference bank deposits against recorded batches, build a clearing priority list, and flag regulatory items for an accountant\" decoding=\"async\">\r\n        <div class=\"mas-publication-figure-fallback\"><div class=\"mas-publication-img-placeholder\"><strong>Image 9: How to Audit Your AppFolio Trust Accounting &mdash; Step by Step<\/strong><span>Replace [https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/image-7-1.png] with the image link<\/span><\/div><\/div>\r\n      <\/div>\r\n      <p class=\"mas-publication-caption\">Figure 6 &mdash; Never start correcting before completing the audit; corrections without a full picture often move errors, not fix them<\/p>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Step 1<\/span>\r\n          <h4>Run the Trust Account Balance and Trust Account Detail Reports Together<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p>These two reports are the starting point. The <strong>Trust Account Balance<\/strong> report shows your total trust bank balance and your total trust liability, the two numbers that must match. The <strong>Trust Account Detail<\/strong> report shows the composition of that liability: each tenant&rsquo;s balance, each owner&rsquo;s reserve, and each security deposit held. Pull both as of the same date. Note the difference, if any, between the bank balance and the total liability. This is your working gap.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-figure\" role=\"figure\" aria-label=\"Trust Account Balance and Trust Account Detail reports\">\r\n        <img class=\"mas-publication-figure-img\" src=\"https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Screenshot-2026-10-09-182522.png\" alt=\"AppFolio Trust Account Balance and Trust Account Detail reports run side by side for July 2026, showing trust bank balance, trust liability activity, unresolved batch items, and the difference between total trust bank balance and total trust liability\" decoding=\"async\">\r\n        <div class=\"mas-publication-figure-fallback\"><div class=\"mas-publication-img-placeholder\"><strong>Image 7: Trust Account Balance and Trust Account Detail Reports (Screenshot)<\/strong><span>Replace [https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Screenshot-2026-10-09-182522.png] with the image link<\/span><\/div><\/div>\r\n      <\/div>\r\n      <p class=\"mas-publication-caption\">Reports &rarr; Trust Account Balance and Trust Account Detail. Run both for the same period. The gap between the total trust bank balance and the total trust liability is the number you need to explain and resolve.<\/p>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Step 2<\/span>\r\n          <h4>Age Your Unresolved Items<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p>In AppFolio, pull the list of unresolved batches and any transactions in &ldquo;undeposited&rdquo; status, then age them. Build a simple aging list: how many unresolved items, what amounts, and how old.<\/p>\r\n          <div class=\"mas-publication-table-scroll\">\r\n            <table class=\"mas-publication-table\">\r\n              <thead>\r\n                <tr><th>Age of Unresolved Item<\/th><th>How to Treat It<\/th><\/tr>\r\n              <\/thead>\r\n              <tbody>\r\n                <tr><td class=\"mas-publication-td-strong\">Older than 2 business days<\/td><td>An error, not a timing difference<\/td><\/tr>\r\n                <tr><td class=\"mas-publication-td-strong\">Older than 30 days<\/td><td>Evidence of a systemic workflow problem<\/td><\/tr>\r\n                <tr><td class=\"mas-publication-td-strong\">Older than 90 days and never reviewed<\/td><td>A near-certain source of the trust gap<\/td><\/tr>\r\n              <\/tbody>\r\n            <\/table>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Step 3<\/span>\r\n          <h4>Scan for Duplicate Payments<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p>Filter the tenant ledger for the period under review, looking specifically for any instance where the same charge code was credited twice in the same period, particularly where one credit came from a portal payment and one from a manual entry. The combination of <strong>amount, date, and charge code<\/strong> will identify most duplicates. Flag them for later resolution; don&rsquo;t delete anything yet.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Step 4<\/span>\r\n          <h4>Cross-Reference Bank Statement Deposits Against AppFolio Batches<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p>Pull the bank statement for the period and list every deposit line. Cross-reference each deposit against the corresponding AppFolio batch. Every bank statement deposit should trace to exactly one batch.<\/p>\r\n          <div class=\"mas-publication-table-scroll\">\r\n            <table class=\"mas-publication-table\">\r\n              <thead>\r\n                <tr><th>What You Find<\/th><th>What It Likely Means<\/th><\/tr>\r\n              <\/thead>\r\n              <tbody>\r\n                <tr><td class=\"mas-publication-td-strong\">A bank deposit with no corresponding AppFolio batch<\/td><td>Candidate for the &ldquo;received but never batched&rdquo; error type<\/td><\/tr>\r\n                <tr><td class=\"mas-publication-td-strong\">An AppFolio batch with no corresponding bank deposit<\/td><td>Candidate for a batch created in the system that never actually cleared the bank<\/td><\/tr>\r\n              <\/tbody>\r\n            <\/table>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Step 5<\/span>\r\n          <h4>Review Security Deposit Liabilities Specifically<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p>Security deposits are the liability type most commonly mishandled outside the system. Pull the security deposit liability total from the Trust Account Detail report and compare it to your tenant ledger records of active security deposits. Any tenant who has moved out but whose security deposit liability still appears in AppFolio is a candidate for an &ldquo;offline refund&rdquo; error: the check was written but the AppFolio entry was never made.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Step 6<\/span>\r\n          <h4>Build a Clearing Priority List<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p>Once the audit is complete, organize the items you&rsquo;ve identified by two dimensions: <strong>age<\/strong> (oldest first) and <strong>owner impact<\/strong> (largest owner-facing discrepancies first).<\/p>\r\n          <div class=\"mas-publication-table-scroll\">\r\n            <table class=\"mas-publication-table\">\r\n              <thead>\r\n                <tr><th>Priority<\/th><th>Item Profile<\/th><th>Example<\/th><\/tr>\r\n              <\/thead>\r\n              <tbody>\r\n                <tr><td class=\"mas-publication-td-strong\">First<\/td><td>Old <strong>and<\/strong> owner-facing<\/td><td>Aged discrepancies already reflected in owner statements or draws<\/td><\/tr>\r\n                <tr><td class=\"mas-publication-td-strong\">Second<\/td><td>Old but not yet owner-facing<\/td><td>An unresolved batch that hasn&rsquo;t yet been included in an owner statement<\/td><\/tr>\r\n              <\/tbody>\r\n            <\/table>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <h3>When to Loop in an Accountant Before Touching Anything<\/h3>\r\n      <p>Trust corrections in AppFolio can have regulatory reporting implications, particularly for security deposit handling, that PM companies frequently underestimate. A correction that looks clean in the system may require disclosure to state regulators or to affected property owners, depending on the nature and size of the error.<\/p>\r\n\r\n      <div class=\"mas-publication-warning\">\r\n        <p class=\"mas-publication-box-title\">Stop and Consult a Qualified Accountant If:<\/p>\r\n        <ul>\r\n          <li>The trust gap is larger than approximately one month&rsquo;s average draw total, or<\/li>\r\n          <li>Any unresolved items cross accounting period boundaries that affect already-generated owner statements or prior-period reconciliations.<\/li>\r\n        <\/ul>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ================= SECTION 6 ================= -->\r\n    <section class=\"mas-publication-section\" id=\"section-6\">\r\n      <div class=\"mas-publication-section-head\">\r\n        <span class=\"mas-publication-num\">6<\/span>\r\n        <h2>How to Clear It Correctly, Without Making It Worse<\/h2>\r\n      <\/div>\r\n\r\n      <p>The governing principle for trust corrections in AppFolio: <strong>the correction must mirror how the liability broke, not just zero out the bank.<\/strong> Every discrepancy has a specific cause, and the fix needs to address that cause at the ledger level where it originated. Here are the six most common scenarios and how to handle each.<\/p>\r\n\r\n      <div class=\"mas-publication-figure\" role=\"figure\" aria-label=\"Figure 7: Six Common Trust Drift Scenarios and the Correct Fix for Each\">\r\n        <img class=\"mas-publication-figure-img\" src=\"https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Screenshot-2026-10-09-182648.png\" alt=\"Six common trust drift scenarios and the correct fix for each: payment never batched, duplicate tenant payment, bank feed matched directly, security deposit refunded outside the system, stale batches from a prior bookkeeper, and owner disbursed before reconciliation closed\" decoding=\"async\">\r\n        <div class=\"mas-publication-figure-fallback\"><div class=\"mas-publication-img-placeholder\"><strong>Image 10: Six Common Trust Drift Scenarios and the Correct Fix for Each<\/strong><span>Replace [https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Screenshot-2026-10-09-182648.png] with the image link<\/span><\/div><\/div>\r\n      <\/div>\r\n      <p class=\"mas-publication-caption\">Figure 7 &mdash; The fix must mirror how the liability broke &mdash; zeroing the bank balance without tracing the liability just moves the error forward<\/p>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Scenario 1<\/span>\r\n          <h4>Payment Received but Never Batched<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>The Situation:<\/strong> The tenant ledger shows a payment received. The trust bank account doesn&rsquo;t show a corresponding deposit because no batch was created.<\/p>\r\n          <p><strong>The Fix:<\/strong> Create the missing deposit batch in AppFolio, date it to the correct period (the date the payment was actually received), and post it. If the period is closed, you may need to reopen the reconciliation to backdate the batch. Do not create a journal entry to move the bank balance instead; this bypasses the batch workflow and creates a new audit trail problem on top of the original one.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Scenario 2<\/span>\r\n          <h4>Duplicate Tenant Payment<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>The Situation:<\/strong> Two payments are posted against the same charge. One is real, typically the portal payment, which has a payment reference number. The other is a manual entry with no corresponding bank deposit.<\/p>\r\n          <p><strong>The Fix:<\/strong> Identify which entry has the real bank-side evidence (the portal payment with a unique reference, or a deposit that appears on the bank statement). Reverse the manual entry against the tenant ledger. Do not simply delete it; create a reversal that leaves an auditable record. Verify that the tenant&rsquo;s ledger balance after the reversal matches what&rsquo;s actually owed.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Scenario 3<\/span>\r\n          <h4>Bank Feed Matched Directly, Bypassing the Batch<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>The Situation:<\/strong> A bank statement line was matched in the bank feed directly to a bank ledger entry without going through the deposit batch workflow. The bank balance is right; the liability trail is wrong.<\/p>\r\n          <p><strong>The Fix:<\/strong> Unmatch the bank feed entry. Re-enter the underlying payment through the correct batch workflow: create the batch, date it correctly, and then reconcile the batch to the bank statement entry. This restores the complete tenant-to-batch-to-bank audit trail.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Scenario 4<\/span>\r\n          <h4>Security Deposit Refunded Outside the System<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>The Situation:<\/strong> A tenant moved out and a refund check was written directly without processing the move-out in AppFolio. The bank balance decreased; the security deposit liability in AppFolio did not.<\/p>\r\n          <p><strong>The Fix:<\/strong> Process the move-out in AppFolio completely. Apply any legitimate deductions to the tenant ledger (cleaning, repairs, unpaid rent) and record the refund disbursement through AppFolio. The disbursement should match the check amount, and the bank entry for the check should reconcile to this AppFolio disbursement. After this, the security deposit liability will clear correctly.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Scenario 5<\/span>\r\n          <h4>Stale Unresolved Batches from a Prior Bookkeeper or Migration<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>The Situation:<\/strong> This is the scenario requiring the most judgment. Batches that are months or years old may represent real transactions with real liabilities behind them, or they may be artifacts of a migration or data entry error with nothing real behind them.<\/p>\r\n          <p><strong>The Fix:<\/strong> Batches less than six months old should be fully traced before any write-off decision. Batches from a migration, or older than twelve months with no corresponding tenant activity, need to be reviewed with an accountant who can advise on whether a write-off is appropriate and whether any disclosure to affected owners or tenants is required. <strong>Never mass-write-off old batches without a line-by-line review.<\/strong><\/p>\r\n          <div class=\"mas-publication-table-scroll\">\r\n            <table class=\"mas-publication-table\">\r\n              <thead>\r\n                <tr><th>Stale Batch Profile<\/th><th>Required Action<\/th><\/tr>\r\n              <\/thead>\r\n              <tbody>\r\n                <tr><td class=\"mas-publication-td-strong\">Less than six months old<\/td><td>Fully trace before any write-off decision<\/td><\/tr>\r\n                <tr><td class=\"mas-publication-td-strong\">From a migration, or older than twelve months with no corresponding tenant activity<\/td><td>Review with an accountant: is a write-off appropriate, and is disclosure to owners or tenants required?<\/td><\/tr>\r\n                <tr><td class=\"mas-publication-td-strong\">Any age<\/td><td>Never mass-write-off without a line-by-line review<\/td><\/tr>\r\n              <\/tbody>\r\n            <\/table>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-scenario\">\r\n        <div class=\"mas-publication-scenario-head\">\r\n          <span class=\"mas-publication-scenario-tag\">Scenario 6<\/span>\r\n          <h4>Owner Disbursed Before Reconciliation Closed<\/h4>\r\n        <\/div>\r\n        <div class=\"mas-publication-scenario-body\">\r\n          <p><strong>The Situation:<\/strong> The reconciliation for the period was still open when the owner draw was processed. The draw included payments that weren&rsquo;t fully reconciled, so the trust balance after reconciliation is short by the amount of those unreconciled payments.<\/p>\r\n          <p><strong>The Fix:<\/strong> Calculate the exact shortfall: what the draw should have been versus what it was. Then either (a) apply the shortfall as a reduction against the owner&rsquo;s next draw, with a line-item explanation on their statement, or (b) if the shortfall is due to a specific payment that subsequently cleared, verify the payment, process the outstanding batch, and confirm the liability is now correct. Consult the management agreement and your legal counsel before adjusting an owner&rsquo;s draw downward without explicit communication.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <h3>What Not to Do: The Journal-Entry Shortcut<\/h3>\r\n      <p>The most tempting incorrect fix is a general journal entry that makes the Trust Account Balance report show zero difference: a debit to the trust bank account and a credit to a suspense or offset account, or vice versa. This makes the report look clean. State trust auditors specifically look for these entries because they are the accounting equivalent of a cover-up: they indicate that someone knew the accounts didn&rsquo;t balance and chose to paper over it rather than trace the cause.<\/p>\r\n\r\n      <div class=\"mas-publication-statbox\">\r\n        <p class=\"mas-publication-box-title\">Key Rule<\/p>\r\n        <p>A properly fixed trust account has <strong>no unexplained journal entries touching the trust bank account<\/strong>. Every entry should trace to a tenant payment, a batch deposit, a security deposit disbursement, or an owner draw.<\/p>\r\n      <\/div>\r\n\r\n      <h3>Documenting Corrections for Audit Readiness<\/h3>\r\n      <p>Every correction made to the trust ledger should be documented. This documentation doesn&rsquo;t need to be elaborate; a spreadsheet or shared document with one row per correction item is sufficient, but it needs to exist. In a state audit, the ability to walk through each correction line by line is what distinguishes an accountable PM company from one that appears to have manipulated its records.<\/p>\r\n\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Required Field<\/th><th>What to Record<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Original error identified<\/td><td>Error type, amount, and period<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Correction action taken<\/td><td>The specific AppFolio entries created or reversed<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Performed by<\/td><td>The staff member who performed the correction<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Date<\/td><td>The date the correction was made<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h4>Example Correction Log (Illustrative)<\/h4>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Error Type<\/th><th class=\"mas-publication-th-right\">Amount<\/th><th>Period<\/th><th>Correction Action<\/th><th>By<\/th><th>Date<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Payment never batched<\/td><td class=\"mas-publication-td-right\">$1,250.00<\/td><td>Jul 2026<\/td><td>Created missing deposit batch dated 07\/25\/2026<\/td><td>J.S.<\/td><td>Aug 3<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Duplicate tenant payment<\/td><td class=\"mas-publication-td-right\">$875.00<\/td><td>Jul 2026<\/td><td>Reversed manual entry; portal payment retained<\/td><td>J.S.<\/td><td>Aug 3<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Deposit refunded offline<\/td><td class=\"mas-publication-td-right\">$1,100.00<\/td><td>Jun 2026<\/td><td>Processed move-out and recorded refund disbursement<\/td><td>A.R.<\/td><td>Aug 4<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ================= SECTION 7 ================= -->\r\n    <section class=\"mas-publication-section\" id=\"section-7\">\r\n      <div class=\"mas-publication-section-head\">\r\n        <span class=\"mas-publication-num\">7<\/span>\r\n        <h2>Prevention: Stopping It from Happening Again<\/h2>\r\n      <\/div>\r\n\r\n      <p>Fixing a trust imbalance is a one-time effort. Preventing it from recurring requires building the workflows and controls that AppFolio&rsquo;s architecture was designed to support but doesn&rsquo;t enforce on its own. Here&rsquo;s what that looks like in practice.<\/p>\r\n\r\n      <div class=\"mas-publication-figure\" role=\"figure\" aria-label=\"Figure 8: AppFolio Monthly Close Checklist, Trust Reconciliation First\">\r\n        <img class=\"mas-publication-figure-img\" src=\"https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Screenshot-2026-10-09-182759.png\" alt=\"AppFolio monthly close checklist: before owner statements run, confirm batching, bank feed reconciliation, zero-difference trust balance and cleared stale items; then verify owner draws and disbursements; after disbursements, file the Trust Account Balance report and document corrections\" decoding=\"async\">\r\n        <div class=\"mas-publication-figure-fallback\"><div class=\"mas-publication-img-placeholder\"><strong>Image 11: AppFolio Monthly Close Checklist &mdash; Trust Reconciliation First<\/strong><span>Replace [https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Screenshot-2026-10-09-182759.png] with the image link<\/span><\/div><\/div>\r\n      <\/div>\r\n      <p class=\"mas-publication-caption\">Figure 8 &mdash; Trust reconciliation is never the last step; it must be complete before any owner statement is generated<\/p>\r\n\r\n      <h3>Building a Batching SLA<\/h3>\r\n      <p>Every payment received should be batched within a defined window. This is not a complicated workflow, but it needs to be explicitly defined, assigned to a specific role, and monitored. The default AppFolio dashboard shows undeposited funds; use it as a daily check item.<\/p>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Payment Age Without a Batch<\/th><th>Standard<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Same business day or next morning<\/td><td>Batched: the standard at well-run PM companies<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">More than two business days<\/td><td>Triggers an exception review<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>Bank Feed Configuration Best Practices<\/h3>\r\n      <p>AppFolio&rsquo;s bank feed is a convenience tool, not a bookkeeping tool. Configure it to assist with reconciliation, surfacing bank transactions that correspond to existing batches, not to post transactions directly without a corresponding batch. The specific setting to review: bank feed auto-matching rules. If transactions are being auto-matched without a manual review step, that configuration introduces the bypass-batch error type described in Section 4. Turn off auto-matching for any transaction type that should go through the batch workflow.<\/p>\r\n\r\n      <div class=\"mas-publication-figure\" role=\"figure\" aria-label=\"AppFolio Bank Feed auto-match settings\">\r\n        <img class=\"mas-publication-figure-img\" src=\"https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Screenshot-2026-10-09-183006.png\" alt=\"AppFolio Bank Feed settings screen showing automatic match rules, auto-match action options, and the transaction types that always require manual review, including tenant payments and owner payments\" decoding=\"async\">\r\n        <div class=\"mas-publication-figure-fallback\"><div class=\"mas-publication-img-placeholder\"><strong>Image 8: AppFolio Bank Feed Auto-Match Settings (Screenshot)<\/strong><span>Replace [https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/Screenshot-2026-10-09-183006.png] with the image link<\/span><\/div><\/div>\r\n      <\/div>\r\n      <p class=\"mas-publication-caption\">Settings &rarr; Bank Accounts &rarr; Bank Feed. Review auto-match settings. Transactions that represent tenant payments should require manual review before matching, not auto-post to the bank ledger.<\/p>\r\n\r\n      <h3>Segregation of Duties<\/h3>\r\n      <p>The person who records tenant payments should not be the same person who approves owner disbursements. This is a standard internal control principle, but in PM companies it&rsquo;s also frequently a state regulatory requirement, not just best practice. In AppFolio, this maps to user role permissions: staff in payment-recording roles should not have disbursement approval permissions. If your current AppFolio user permissions don&rsquo;t reflect this separation, restructuring them is one of the highest-value actions you can take for trust accounting integrity.<\/p>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Role<\/th><th>Should Have<\/th><th>Should Not Have<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Payment recording staff<\/td><td>Permission to record tenant payments and build deposit batches<\/td><td>Owner disbursement approval permissions<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Disbursement approver<\/td><td>Permission to review and approve owner disbursements<\/td><td>Responsibility for recording the tenant payments being disbursed<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>Monthly Close Sequence: Trust Reconciliation Is Step One, Not Step Last<\/h3>\r\n      <p>This is perhaps the single most impactful operational change most PM companies can make. Owner statements and disbursements should not be generated until the trust reconciliation is complete and the Trust Account Balance report shows zero difference. In practice, many companies generate owner statements first and reconcile afterward, which guarantees that at least some draws are processed against an unreconciled trust balance. Reversing this sequence (reconcile first, disburse second) eliminates one of the most common sources of the over-disbursement problem described in Scenario 6.<\/p>\r\n\r\n      <div class=\"mas-publication-flow mas-publication-flow-compact\">\r\n        <div class=\"mas-publication-flow-item\">Batch All Payments<\/div>\r\n        <div class=\"mas-publication-flow-arrow\" aria-hidden=\"true\">&rarr;<\/div>\r\n        <div class=\"mas-publication-flow-item\">Reconcile to Bank<\/div>\r\n        <div class=\"mas-publication-flow-arrow\" aria-hidden=\"true\">&rarr;<\/div>\r\n        <div class=\"mas-publication-flow-item\">Zero-Difference Trust Balance<\/div>\r\n        <div class=\"mas-publication-flow-arrow\" aria-hidden=\"true\">&rarr;<\/div>\r\n        <div class=\"mas-publication-flow-item\">Owner Statements<\/div>\r\n        <div class=\"mas-publication-flow-arrow\" aria-hidden=\"true\">&rarr;<\/div>\r\n        <div class=\"mas-publication-flow-item\">Owner Disbursements<\/div>\r\n      <\/div>\r\n\r\n      <h3>Payment Processor Integration Failure Modes<\/h3>\r\n      <p>Each payment channel AppFolio supports introduces a distinct trust accounting failure mode. Understand which channels your tenants use most and design your batch SLA accordingly.<\/p>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Payment Channel<\/th><th>How It Behaves<\/th><th>Failure Mode to Watch<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Tenant portal<\/td><td>The most reliable; creates a clear payment record on the tenant ledger<\/td><td>Can duplicate if staff also manually post the same payment<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">ACH pulls (integrated processors)<\/td><td>Post automatically to the batch workflow<\/td><td>Timing mismatches when the bank settlement date differs from the AppFolio posting date<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Lockbox<\/td><td>Requires the most manual reconciliation effort<\/td><td>The most common source of unmatched deposits<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>Standardizing the Migration Checklist for New Portfolios<\/h3>\r\n      <p>Every time a new portfolio is onboarded into AppFolio, whether from another AppFolio instance or from a different PMS, the opening trust balance should be verified line by line before any transactions are processed:<\/p>\r\n      <div class=\"mas-publication-steps\">\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 1<\/div>\r\n          <div class=\"mas-publication-step-text\"><span>Prepare a <strong>per-tenant listing of security deposits held<\/strong>, verified against tenant lease files.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 2<\/div>\r\n          <div class=\"mas-publication-step-text\"><span>Prepare a <strong>per-owner listing of reserves and advance rents<\/strong>, verified against management agreements.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 3<\/div>\r\n          <div class=\"mas-publication-step-text\"><span><strong>Reconcile the total<\/strong> to the trust bank statement as of the migration date.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 4<\/div>\r\n          <div class=\"mas-publication-step-text\"><span>Process <strong>no transactions<\/strong> in the new portfolio until the opening balance is verified.<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <p>This takes time. It prevents years of compounding drift.<\/p>\r\n    <\/section>\r\n\r\n    <!-- ================= SECTION 8 ================= -->\r\n    <section class=\"mas-publication-section\" id=\"section-8\">\r\n      <div class=\"mas-publication-section-head\">\r\n        <span class=\"mas-publication-num\">8<\/span>\r\n        <h2>When the Problem Is Beyond a DIY Fix<\/h2>\r\n      <\/div>\r\n\r\n      <p>Some trust accounting problems can be resolved internally with focused effort over a few weeks. Others have grown too large, too tangled, or too legally exposed for internal correction to be appropriate. Knowing the difference is important, because attempting a DIY fix on a problem that requires professional involvement can make the regulatory exposure significantly worse.<\/p>\r\n\r\n      <h3>Signs the Backlog Is Too Large or Too Tangled for Internal Correction<\/h3>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Warning Sign<\/th><th>Why It Exceeds an Internal Fix<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Multi-month drift<\/td><td>The trust-liability gap has been accumulating for more than three months and no one on the team has a clear picture of when it started or why. The trace-back effort is likely beyond internal bookkeeping capacity.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Multiple owners affected<\/td><td>Draws may have been miscalculated for one or more owners. The correction requires property owner notification and potentially amended statements, which introduces a relationship and legal dimension beyond a pure accounting fix.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Unclear migration history<\/td><td>The discrepancy appears to originate from or around a software migration and the migration records are incomplete. The full scope can&rsquo;t be determined without a forensic reconstruction of the pre-migration data.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Security deposit liability that doesn&rsquo;t trace<\/td><td>Imbalances that can&rsquo;t be resolved through standard AppFolio correction entries may require notification to tenants and, in some states, disclosure to state regulators. This is not an accounting correction; it is a legal matter.<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>What the Exposure Looks Like Without Resolution<\/h3>\r\n      <p>An unresolved trust discrepancy is not simply a bookkeeping problem. It is a potential compliance violation.<\/p>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Exposure<\/th><th>What It Means<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Regulatory<\/td><td>In most U.S. states, a property manager who cannot reconcile the trust account on demand is at risk of license suspension or revocation.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Personal<\/td><td>If a discrepancy reflects actual missing funds (the cash in the bank is genuinely less than what&rsquo;s owed to tenants and owners), the legal exposure extends to the individual property manager and potentially to the PM company principals personally, depending on state law.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Owner litigation<\/td><td>An owner who discovers their draw was calculated against an incorrect trust balance, meaning they were over- or underpaid, has grounds for a dispute under the management agreement. This is separate from state regulatory action and can arise regardless of intent.<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>What an AppFolio Trust Cleanup Engagement Actually Involves<\/h3>\r\n      <p>A professional trust cleanup engagement for an AppFolio file is not simply a reconciliation service. It involves:<\/p>\r\n      <div class=\"mas-publication-steps\">\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 1<\/div>\r\n          <div class=\"mas-publication-step-text\"><span>A <strong>forensic reconstruction<\/strong> of when the trust gap began and how it accumulated.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 2<\/div>\r\n          <div class=\"mas-publication-step-text\"><span>A <strong>line-by-line review<\/strong> of the Trust Account Detail report against source records: bank statements, tenant ledgers, and lease files.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 3<\/div>\r\n          <div class=\"mas-publication-step-text\"><span><strong>Identification and documentation<\/strong> of each discrepancy and its correction method.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 4<\/div>\r\n          <div class=\"mas-publication-step-text\"><span>The <strong>actual corrections made in AppFolio<\/strong> using the correct workflow rather than journal-entry shortcuts.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 5<\/div>\r\n          <div class=\"mas-publication-step-text\"><span>A <strong>final reconciliation<\/strong> confirming zero difference between bank balance and trust liability.<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"mas-publication-step\">\r\n          <div class=\"mas-publication-step-label\">Step 6<\/div>\r\n          <div class=\"mas-publication-step-text\"><span><strong>Documentation packaged for audit readiness.<\/strong><\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <p>Depending on the size of the portfolio and the depth of the backlog, this can take anywhere from a few days to several weeks.<\/p>\r\n\r\n      <h3>What to Look for in an Outsourced Bookkeeping Partner<\/h3>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Capability<\/th><th>Why It Matters<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Direct AppFolio trust experience<\/td><td>Specifically with trust accounting and the deposit batch workflow, not just general real estate accounting<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">State requirement knowledge<\/td><td>Familiarity with your state&rsquo;s PM trust accounting requirements and what constitutes a reportable discrepancy<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Documented cleanup methodology<\/td><td>Not just &ldquo;we&rsquo;ll reconcile the accounts,&rdquo; but a specific process for tracing discrepancies to their source<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Relevant references<\/td><td>From PM companies that have gone through a trust cleanup specifically, not just general bookkeeping references<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Fraud escalation protocol<\/td><td>Discovery of fraud or misappropriation during cleanup should trigger a specific escalation path, not improvisation<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <h3>Questions to Ask Before Handing Over Trust Account Access<\/h3>\r\n      <div class=\"mas-publication-table-scroll\">\r\n        <table class=\"mas-publication-table\">\r\n          <thead>\r\n            <tr><th>Question<\/th><th>What a Solid Answer Looks Like<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr><td class=\"mas-publication-td-strong\">Have you done AppFolio trust cleanups before? How many?<\/td><td>A specific number, with a reference available on request.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">How do you handle discrepancies that may require owner notification?<\/td><td>A clear process: document first, then notify the owner together with the PM company, before any retroactive adjustment.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">What&rsquo;s your escalation path if you find evidence of misappropriation?<\/td><td>Defined: pause, document, notify principals, and recommend legal counsel before any correction.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">Will you document every correction for audit readiness?<\/td><td>Yes, with a full correction log keyed to each discrepancy type and period.<\/td><\/tr>\r\n            <tr><td class=\"mas-publication-td-strong\">What do you need from us to start?<\/td><td>A specific list: Trust Account Balance report, bank statements, tenant ledger export, and migration records if applicable.<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-statbox\">\r\n        <p class=\"mas-publication-box-title\">Considering Outside Help?<\/p>\r\n        <p>If your Trust Account Balance report shows a gap you can&rsquo;t immediately explain by a single, identifiable transaction, that&rsquo;s the threshold at which a professional review is worth the conversation. A gap with an unknown origin is not a bookkeeping problem you should try to outmaneuver.<\/p>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ================= FAQ ================= -->\r\n    <section class=\"mas-publication-section\" id=\"faq\">\r\n      <p class=\"mas-publication-eyebrow\">Reference<\/p>\r\n      <div class=\"mas-publication-section-head\">\r\n        <h2>Frequently Asked Questions<\/h2>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-faq-item\">\r\n        <button type=\"button\" class=\"mas-publication-faq-q\" aria-expanded=\"false\">\r\n          <span>What is the difference between the trust bank balance and the trust liability balance in AppFolio?<\/span>\r\n          <span class=\"mas-publication-faq-icon\" aria-hidden=\"true\">+<\/span>\r\n        <\/button>\r\n        <div class=\"mas-publication-faq-a\">\r\n          <p>The trust bank balance is the physical cash held in the trust bank account. The trust liability balance is what AppFolio says you owe, in aggregate, to all tenants and owners combined: tenant credits, security deposits, prepaid rent, and owner balances and reserves. The two must match to the cent at all times. Owner draws are calculated from the net owner ledger balance on the liability side, not from the bank balance.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-faq-item\">\r\n        <button type=\"button\" class=\"mas-publication-faq-q\" aria-expanded=\"false\">\r\n          <span>Does AppFolio alert me when my trust account is out of balance?<\/span>\r\n          <span class=\"mas-publication-faq-icon\" aria-hidden=\"true\">+<\/span>\r\n        <\/button>\r\n        <div class=\"mas-publication-faq-a\">\r\n          <p>No. There is no alert, dashboard warning, or email notification when the trust liability diverges from the bank balance, and the two numbers are not shown side by side in the default dashboard. You have to run the Trust Account Balance report and compare them, which is why it should be a standing monthly task assigned to a specific person.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-faq-item\">\r\n        <button type=\"button\" class=\"mas-publication-faq-q\" aria-expanded=\"false\">\r\n          <span>What is the most common cause of trust-liability drift in AppFolio?<\/span>\r\n          <span class=\"mas-publication-faq-icon\" aria-hidden=\"true\">+<\/span>\r\n        <\/button>\r\n        <div class=\"mas-publication-faq-a\">\r\n          <p>Payments that are received but never batched. The payment appears on the tenant ledger, but because it is never grouped into a deposit batch, AppFolio&rsquo;s trust bank ledger has no record of the deposit. Bank feed transactions matched directly without a batch, security deposits refunded outside the system, draws processed before the reconciliation closes, duplicate payments, mid-cycle property moves, and migration errors are the other common causes.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-faq-item\">\r\n        <button type=\"button\" class=\"mas-publication-faq-q\" aria-expanded=\"false\">\r\n          <span>Can I fix a trust discrepancy with a journal entry?<\/span>\r\n          <span class=\"mas-publication-faq-icon\" aria-hidden=\"true\">+<\/span>\r\n        <\/button>\r\n        <div class=\"mas-publication-faq-a\">\r\n          <p>Not unless the entry traces to the actual cause. A general journal entry that forces the Trust Account Balance report to zero difference hides the error in another account; the error reappears at the next reconciliation, and state trust auditors specifically look for these entries. Every entry touching the trust bank account should trace to a tenant payment, a batch deposit, a security deposit disbursement, or an owner draw.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-faq-item\">\r\n        <button type=\"button\" class=\"mas-publication-faq-q\" aria-expanded=\"false\">\r\n          <span>How often should I run the Trust Account Balance report?<\/span>\r\n          <span class=\"mas-publication-faq-icon\" aria-hidden=\"true\">+<\/span>\r\n        <\/button>\r\n        <div class=\"mas-publication-faq-a\">\r\n          <p>At the end of every month, after all batches are posted and the bank reconciliation is complete, and before any owner statements are generated. The report should show a zero difference, zero unresolved batches, and no undeposited items beyond the current day&rsquo;s activity. Undeposited funds on the dashboard should be checked daily.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-faq-item\">\r\n        <button type=\"button\" class=\"mas-publication-faq-q\" aria-expanded=\"false\">\r\n          <span>How quickly should tenant payments be batched?<\/span>\r\n          <span class=\"mas-publication-faq-icon\" aria-hidden=\"true\">+<\/span>\r\n        <\/button>\r\n        <div class=\"mas-publication-faq-a\">\r\n          <p>The same business day or the next morning is the standard at well-run PM companies. Any payment more than two business days old without a batch should trigger an exception review, and during an audit it should be treated as an error rather than a timing difference.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-faq-item\">\r\n        <button type=\"button\" class=\"mas-publication-faq-q\" aria-expanded=\"false\">\r\n          <span>Should owner statements be generated before or after the trust reconciliation?<\/span>\r\n          <span class=\"mas-publication-faq-icon\" aria-hidden=\"true\">+<\/span>\r\n        <\/button>\r\n        <div class=\"mas-publication-faq-a\">\r\n          <p>After. Reconcile first, disburse second. Generating owner statements before the reconciliation closes guarantees that at least some draws are processed against an unreconciled trust balance, which is a common source of over-disbursement.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-faq-item\">\r\n        <button type=\"button\" class=\"mas-publication-faq-q\" aria-expanded=\"false\">\r\n          <span>What should I verify when migrating a portfolio into AppFolio?<\/span>\r\n          <span class=\"mas-publication-faq-icon\" aria-hidden=\"true\">+<\/span>\r\n        <\/button>\r\n        <div class=\"mas-publication-faq-a\">\r\n          <p>Verify the opening trust balance line by line before processing any transactions: a per-tenant listing of security deposits verified against lease files, a per-owner listing of reserves and advance rents verified against management agreements, and a reconciliation of the total to the trust bank statement as of the migration date. A correct total with the wrong per-tenant composition still produces drift.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-faq-item\">\r\n        <button type=\"button\" class=\"mas-publication-faq-q\" aria-expanded=\"false\">\r\n          <span>When should I bring in an accountant or outsourced partner?<\/span>\r\n          <span class=\"mas-publication-faq-icon\" aria-hidden=\"true\">+<\/span>\r\n        <\/button>\r\n        <div class=\"mas-publication-faq-a\">\r\n          <p>Before making corrections if the gap is larger than roughly one month&rsquo;s average draw total, or if unresolved items cross periods that affect already-generated owner statements. Bring in professional help if drift spans more than three months, multiple owners are affected, the migration history is unclear, or security deposit liability doesn&rsquo;t trace, or whenever the gap can&rsquo;t be explained by a single, identifiable transaction.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ================= CONCLUSION ================= -->\r\n    <section class=\"mas-publication-section\" id=\"conclusion\">\r\n      <p class=\"mas-publication-eyebrow\">Final Thoughts<\/p>\r\n      <div class=\"mas-publication-section-head\">\r\n        <h2>Conclusion<\/h2>\r\n      <\/div>\r\n\r\n      <h3>AppFolio Does the Work. You Still Have to Check It.<\/h3>\r\n      <p>AppFolio is genuinely well-designed for property management trust accounting. The deposit batch workflow, the trust liability architecture, and the separation between tenant ledger, trust bank, and owner ledger are not arbitrary complexity. They are the technical implementation of fiduciary and regulatory requirements that PM companies have to meet regardless of which software they use.<\/p>\r\n\r\n      <p>The problem is that this architecture requires active participation to work. AppFolio creates the structure. It doesn&rsquo;t enforce it. The batch workflow can be bypassed. The bank feed can be misconfigured. The monthly reconciliation can be skipped in favor of getting owner statements out on time. Each of these shortcuts is understandable in a busy operation. Each of them contributes to the same predictable result: a trust-liability gap that grows silently until something forces a look.<\/p>\r\n\r\n      <p>The three things that separate PM companies with clean trust accounting from those who find problems at the worst possible moment are simple in concept, if not always easy in execution. Those three habits, applied consistently, prevent the large majority of the problems described in this guide.<\/p>\r\n\r\n      <div class=\"mas-publication-quote\">\r\n        Run the Trust Account Balance report monthly and require a zero difference before any owner statement is generated. Close every batch within two business days of the underlying payment. And never use a journal entry to fix a trust balance without first tracing the underlying cause.\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- ================= RESOURCES ================= -->\r\n    <section class=\"mas-publication-section\" id=\"resources\">\r\n      <p class=\"mas-publication-eyebrow\">Resources<\/p>\r\n      <div class=\"mas-publication-section-head\">\r\n        <h2>Further Reading &amp; Official Resources<\/h2>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-res-group mas-publication-resources-list\">\r\n        <h3>AppFolio Resources<\/h3>\r\n        <ul>\r\n          <li><a href=\"[RESOURCE_APPFOLIO_HELP_URL]\" target=\"_blank\" rel=\"noopener\">AppFolio Property Manager: Help &amp; Training (available from the in-app Help &amp; Training menu)<\/a><\/li>\r\n          <li><a href=\"https:\/\/www.appfolio.com\/stack\" target=\"_blank\" rel=\"noopener\">AppFolio Stack: Accounting and Consulting Partners<\/a><\/li>\r\n        <\/ul>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-res-group mas-publication-resources-list\">\r\n        <h3>State Regulatory Resources<\/h3>\r\n        <ul>\r\n          <li><a href=\"[RESOURCE_STATE_REC_URL]\" target=\"_blank\" rel=\"noopener\">Your State Real Estate Commission: Trust Account and Security Deposit Rules<\/a><\/li>\r\n          <li><a href=\"https:\/\/www.arello.org\/\" target=\"_blank\" rel=\"noopener\">ARELLO: Association of Real Estate License Law Officials, Regulatory Agency Directory<\/a><\/li>\r\n        <\/ul>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-res-group mas-publication-resources-list\">\r\n        <h3>Official IRS and Government Resources<\/h3>\r\n        <ul>\r\n          <li><a href=\"https:\/\/www.irs.gov\/businesses\/small-businesses-self-employed\/recordkeeping\" target=\"_blank\" rel=\"noopener\">IRS: Recordkeeping for Business Taxpayers<\/a><\/li>\r\n          <li><a href=\"https:\/\/www.irs.gov\/publications\/p583\" target=\"_blank\" rel=\"noopener\">IRS: Publication 583, Starting a Business and Keeping Records<\/a><\/li>\r\n          <li><a href=\"https:\/\/www.sba.gov\/business-guide\/manage-your-business\/manage-your-finances\" target=\"_blank\" rel=\"noopener\">SBA: Manage Your Finances, Business Guide<\/a><\/li>\r\n        <\/ul>\r\n      <\/div>\r\n\r\n      <div class=\"mas-publication-res-group mas-publication-resources-list\">\r\n        <h3>Related MASPARTNER Resources<\/h3>\r\n        <ul>\r\n          <li><a href=\"https:\/\/maspartner.com\/bookkeeping\/\" target=\"_blank\" rel=\"noopener\">Bookkeeping Service<\/a><\/li>\r\n          <li><a href=\"https:\/\/maspartner.com\/accounting-services\/\" target=\"_blank\" rel=\"noopener\">Accounting Service<\/a><\/li>\r\n          <li><a href=\"https:\/\/maspartner.com\/en-us\/\" target=\"_blank\" rel=\"noopener\">US Tax Solutions<\/a><\/li>\r\n        <\/ul>\r\n      <\/div>\r\n\r\n    <\/section>\r\n\r\n  <\/div><!-- \/.mas-publication-body -->\r\n\r\n  <!-- ================= STICKY DOWNLOAD BUTTON (triggers CF7 modal) ================= -->\r\n  <div class=\"mas-publication-download\" id=\"mas-publication-download\">\r\n    <button type=\"button\"\r\n       id=\"mas-publication-download-btn\"\r\n       title=\"Download PDF of this Publication\"\r\n       aria-label=\"Download PDF of this Publication\"\r\n       aria-haspopup=\"dialog\">\r\n      <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3v12\"\/><path d=\"m7 10 5 5 5-5\"\/><path d=\"M5 21h14\"\/><\/svg>\r\n      Download PDF of this Publication\r\n    <\/button>\r\n  <\/div>\r\n\r\n  <!-- ================= CF7 MODAL POPUP ================= -->\r\n  <!-- CF7 Form ID: d62a501 (title: Publication) -->\r\n  <!-- Add an Elementor Shortcode widget BELOW this HTML widget containing:\r\n       [contact-form-7 id=\"d62a501\" title=\"Publication\"] -->\r\n  <div class=\"mas-publication-modal-overlay\" id=\"mas-publication-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"mas-publication-modal-title\">\r\n    <div class=\"mas-publication-modal\">\r\n      <button type=\"button\" class=\"mas-publication-modal-close\" id=\"mas-publication-modal-close\" aria-label=\"Close\">&times;<\/button>\r\n      <h3 id=\"mas-publication-modal-title\">Download This E-Guide<\/h3>\r\n      <p>Enter your details below to receive the PDF.<\/p>\r\n      <div id=\"mas-publication-cf7-slot\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n  (function(){\r\n    var wrap = document.currentScript ? document.currentScript.closest('.mas-publication-wrapper') : null;\r\n    if(!wrap){\r\n      var all = document.querySelectorAll('.mas-publication-wrapper');\r\n      wrap = all[all.length-1];\r\n    }\r\n    if(!wrap) return;\r\n\r\n    var MAS_PDF_URL = 'https:\/\/maspartner.com\/wp-content\/uploads\/2026\/10\/MASPARTNER_NetSuite_Chart_of_Accounts_Best_Practices_E-Guide.pdf.pdf';\r\n\r\n    function masIsRealUrl(href){\r\n      href = (href || '').trim();\r\n      return \/^https?:\\\/\\\/\/i.test(href) || (href.charAt(0) === '\/' && href.charAt(1) !== '[');\r\n    }\r\n\r\n    function masOpenUrl(url){\r\n      var w = window.open(url, '_blank');\r\n      if(w){ try{ w.opener = null; }catch(err){} }\r\n      else { window.location.href = url; }\r\n    }\r\n\r\n    \/\/ ---------- 0a. MOVE BUTTON + MODAL TO <body> ----------\r\n    \/\/ Escapes Elementor containers that use transform\/overflow, which break position:fixed.\r\n    var downloadWrap = document.getElementById('mas-publication-download');\r\n    var modal = document.getElementById('mas-publication-modal');\r\n\r\n    function masMoveToBody(el){\r\n      if(!el || el.parentNode === document.body) return;\r\n      Array.prototype.slice.call(document.body.children).forEach(function(child){\r\n        if(child !== el && child.id === el.id){\r\n          \/\/ Elementor editor re-render: keep any CF7 form from the old copy, drop the old copy\r\n          var oldForm = child.querySelector('.wpcf7');\r\n          var newSlot = el.querySelector('#mas-publication-cf7-slot');\r\n          if(oldForm && newSlot){ newSlot.appendChild(oldForm); }\r\n          child.parentNode.removeChild(child);\r\n        }\r\n      });\r\n      document.body.appendChild(el);\r\n    }\r\n    masMoveToBody(downloadWrap);\r\n    masMoveToBody(modal);\r\n\r\n    var downloadBtn = document.getElementById('mas-publication-download-btn');\r\n    var closeBtn = document.getElementById('mas-publication-modal-close');\r\n\r\n    \/\/ ---------- 0b. CF7: find the form, move it into the modal ----------\r\n    function masFindCf7(){\r\n      var slot = document.getElementById('mas-publication-cf7-slot');\r\n      if(!slot) return null;\r\n      var inSlot = slot.querySelector('.wpcf7');\r\n      if(inSlot) return inSlot;\r\n      var forms = Array.prototype.slice.call(document.querySelectorAll('.wpcf7')).filter(function(f){\r\n        return !f.closest('#mas-publication-modal') &&\r\n               !f.closest('header, footer, [data-elementor-type=\"header\"], [data-elementor-type=\"footer\"]');\r\n      });\r\n      for(var i = 0; i < forms.length; i++){\r\n        if(forms[i].closest('.elementor-widget-shortcode')) return forms[i];\r\n      }\r\n      return forms.length ? forms[0] : null;\r\n    }\r\n\r\n    var cf7Attempts = 0;\r\n    var cf7Interval = setInterval(function(){\r\n      cf7Attempts++;\r\n      var cf7Form = masFindCf7();\r\n      var cf7Slot = document.getElementById('mas-publication-cf7-slot');\r\n      if(cf7Form && cf7Slot){\r\n        clearInterval(cf7Interval);\r\n        if(!cf7Slot.contains(cf7Form)){\r\n          var cf7Parent = cf7Form.closest('.elementor-widget-shortcode') || cf7Form.closest('.elementor-widget');\r\n          if(cf7Parent){ cf7Parent.style.display = 'none'; }\r\n          cf7Slot.appendChild(cf7Form);\r\n        }\r\n        cf7Form.style.display = 'block';\r\n        \/\/ Initialise only if CF7 has not already done so (prevents double submission)\r\n        var innerForm = cf7Form.querySelector('form');\r\n        var alreadyInit = innerForm && (innerForm.wpcf7 || innerForm.getAttribute('data-status'));\r\n        if(innerForm && !alreadyInit && window.wpcf7){\r\n          if(typeof wpcf7.init === 'function'){ wpcf7.init(innerForm); }\r\n          else if(typeof wpcf7.initForm === 'function'){ wpcf7.initForm(innerForm); }\r\n        }\r\n      }\r\n      if(cf7Attempts > 80){ clearInterval(cf7Interval); }\r\n    }, 100);\r\n\r\n    function masOpenModal(){\r\n      if(!modal) return;\r\n      modal.classList.add('mas-publication-modal-open');\r\n      var c = modal.querySelector('.mas-publication-modal-close');\r\n      if(c){ try{ c.focus({ preventScroll:true }); }catch(err){ c.focus(); } }\r\n    }\r\n    function masCloseModal(){\r\n      if(!modal) return;\r\n      modal.classList.remove('mas-publication-modal-open');\r\n      if(downloadBtn){ try{ downloadBtn.focus({ preventScroll:true }); }catch(err){} }\r\n    }\r\n\r\n    if(downloadBtn){\r\n      downloadBtn.addEventListener('click', function(e){\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n        var slot = document.getElementById('mas-publication-cf7-slot');\r\n        var thanksShown = modal && modal.classList.contains('mas-publication-thanks');\r\n        var formReady = slot && slot.querySelector('.wpcf7');\r\n        if(modal && (thanksShown || formReady)){\r\n          masOpenModal();\r\n        } else {\r\n          \/\/ No CF7 form on the page: open the PDF directly so the download always works\r\n          masOpenUrl(MAS_PDF_URL);\r\n        }\r\n      }, true);\r\n    }\r\n    if(closeBtn){\r\n      closeBtn.addEventListener('click', function(e){\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n        masCloseModal();\r\n      }, true);\r\n    }\r\n    if(modal){\r\n      modal.addEventListener('click', function(e){\r\n        if(e.target === modal){ masCloseModal(); }\r\n      });\r\n    }\r\n    document.addEventListener('keydown', function(e){\r\n      if((e.key === 'Escape' || e.key === 'Esc') && modal && modal.classList.contains('mas-publication-modal-open')){\r\n        masCloseModal();\r\n      }\r\n    });\r\n\r\n    \/\/ ---------- 0c. AFTER CF7 SUBMISSION: show clickable download link ----------\r\n    document.addEventListener('wpcf7mailsent', function(event){\r\n      var modalEl = document.getElementById('mas-publication-modal');\r\n      if(!modalEl || !event.target || !modalEl.contains(event.target)) return; \/\/ only this popup's form\r\n      var modalInner = modalEl.querySelector('.mas-publication-modal');\r\n      if(!modalInner) return;\r\n\r\n      modalEl.classList.add('mas-publication-thanks');\r\n      modalInner.innerHTML = '';\r\n\r\n      var x = document.createElement('button');\r\n      x.type = 'button';\r\n      x.className = 'mas-publication-modal-close';\r\n      x.setAttribute('aria-label', 'Close');\r\n      x.innerHTML = '&times;';\r\n      x.addEventListener('click', function(e){ e.preventDefault(); e.stopPropagation(); masCloseModal(); }, true);\r\n\r\n      var h = document.createElement('h3');\r\n      h.id = 'mas-publication-modal-title';\r\n      h.textContent = 'Thank You!';\r\n\r\n      var p = document.createElement('p');\r\n      p.textContent = 'Your download is ready.';\r\n\r\n      var a = document.createElement('a');\r\n      a.className = 'mas-publication-modal-download';\r\n      a.href = MAS_PDF_URL;\r\n      a.target = '_blank';\r\n      a.rel = 'noopener';\r\n      a.textContent = 'Download PDF Now';\r\n      a.addEventListener('click', function(e){\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n        masOpenUrl(MAS_PDF_URL);\r\n      }, true); \/\/ capture phase - fires before Elementor handlers\r\n\r\n      modalInner.appendChild(x);\r\n      modalInner.appendChild(h);\r\n      modalInner.appendChild(p);\r\n      modalInner.appendChild(a);\r\n      closeBtn = x;\r\n      try{ a.focus({ preventScroll:true }); }catch(err){}\r\n    }, false);\r\n\r\n    \/\/ ---------- 1. SMOOTH SCROLL FOR TOC ----------\r\n    var OFFSET = 80;\r\n    var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n    var tocLinks = wrap.querySelectorAll('.mas-publication-toc a[href^=\"#\"]');\r\n    tocLinks.forEach(function(link){\r\n      link.addEventListener('click', function(e){\r\n        var id = link.getAttribute('href').slice(1);\r\n        var target = wrap.querySelector('#' + (window.CSS && CSS.escape ? CSS.escape(id) : id))\r\n                  || document.getElementById(id);\r\n        if(target){\r\n          e.preventDefault();\r\n          e.stopPropagation();\r\n          var top = target.getBoundingClientRect().top + window.pageYOffset - OFFSET;\r\n          window.scrollTo({ top: top, behavior: reduceMotion ? 'auto' : 'smooth' });\r\n          if(history.replaceState){ history.replaceState(null, '', '#' + id); }\r\n        }\r\n      }, true); \/\/ capture phase - wins over Elementor anchor handlers\r\n    });\r\n\r\n    \/\/ ---------- 2. ACTIVE TOC HIGHLIGHT ON SCROLL ----------\r\n    var sections = wrap.querySelectorAll('.mas-publication-section[id]');\r\n    function masSetActive(){\r\n      var pos = window.pageYOffset + OFFSET + 10;\r\n      var currentId = null;\r\n      sections.forEach(function(sec){\r\n        var secTop = sec.getBoundingClientRect().top + window.pageYOffset;\r\n        if(secTop <= pos){ currentId = sec.getAttribute('id'); }\r\n      });\r\n      tocLinks.forEach(function(l){\r\n        if(currentId && l.getAttribute('href') === '#' + currentId){\r\n          l.classList.add('mas-toc-active');\r\n        } else {\r\n          l.classList.remove('mas-toc-active');\r\n        }\r\n      });\r\n    }\r\n    var ticking = false;\r\n    window.addEventListener('scroll', function(){\r\n      if(!ticking){\r\n        window.requestAnimationFrame(function(){ masSetActive(); ticking = false; });\r\n        ticking = true;\r\n      }\r\n    }, { passive: true });\r\n    masSetActive();\r\n\r\n    \/\/ ---------- 3. FAQ ACCORDION ----------\r\n    wrap.querySelectorAll('.mas-publication-faq-q').forEach(function(btn){\r\n      btn.addEventListener('click', function(e){\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n        var item = btn.closest('.mas-publication-faq-item');\r\n        var panel = item.querySelector('.mas-publication-faq-a');\r\n        var isOpen = item.classList.contains('mas-faq-open');\r\n        if(isOpen){\r\n          panel.style.maxHeight = null;\r\n          item.classList.remove('mas-faq-open');\r\n          btn.setAttribute('aria-expanded', 'false');\r\n        } else {\r\n          item.classList.add('mas-faq-open');\r\n          panel.style.maxHeight = panel.scrollHeight + 'px';\r\n          btn.setAttribute('aria-expanded', 'true');\r\n        }\r\n      }, true);\r\n    });\r\n    window.addEventListener('resize', function(){\r\n      wrap.querySelectorAll('.mas-publication-faq-item.mas-faq-open').forEach(function(item){\r\n        var panel = item.querySelector('.mas-publication-faq-a');\r\n        panel.style.maxHeight = panel.scrollHeight + 'px';\r\n      });\r\n    });\r\n\r\n    \/\/ ---------- 4. MOBILE CLEARANCE FOR STICKY PDF BAR ----------\r\n    function masMobilePad(){\r\n      var body = wrap.querySelector('.mas-publication-body');\r\n      if(!body) return;\r\n      body.style.paddingBottom = (window.innerWidth <= 768) ? '84px' : '';\r\n    }\r\n    masMobilePad();\r\n    window.addEventListener('resize', masMobilePad);\r\n\r\n    \/\/ ---------- 5. IMAGE PLACEHOLDERS ----------\r\n    \/\/ Each <img decoding=\"async\" src=\"[IMAGE_n_URL]\"> shows once the placeholder is replaced with a real URL.\r\n    \/\/ Until then (or if the image fails), a labelled placeholder box shows in its place.\r\n    wrap.querySelectorAll('.mas-publication-figure').forEach(function(fig){\r\n      var img = fig.querySelector('.mas-publication-figure-img');\r\n      if(!img) return;\r\n      var src = (img.getAttribute('src') || img.getAttribute('data-mas-src') || '').trim();\r\n      if(!masIsRealUrl(src)){\r\n        img.parentNode.removeChild(img); \/\/ placeholder box stays visible\r\n        return;\r\n      }\r\n      function masReady(){ if(img.naturalWidth > 0){ fig.classList.add('mas-img-ready'); } }\r\n      img.addEventListener('load', masReady);\r\n      img.addEventListener('error', function(){\r\n        fig.classList.remove('mas-img-ready');\r\n        if(img.parentNode){ img.parentNode.removeChild(img); }\r\n      });\r\n      if(!img.getAttribute('src')){ img.src = src; }\r\n      else if(img.complete){ masReady(); }\r\n    });\r\n\r\n    \/\/ ---------- 6. FORCE LINKS TO OPEN ON CLICK (Elementor intercepts events) ----------\r\n    function masForceClick(selector, newTab){\r\n      document.querySelectorAll(selector).forEach(function(el){\r\n        el.addEventListener('click', function(e){\r\n          e.stopPropagation();\r\n          var href = (this.getAttribute('href') || '').trim();\r\n          if(!masIsRealUrl(href)){ e.preventDefault(); return; } \/\/ placeholder not replaced yet\r\n          e.preventDefault();\r\n          if(newTab){\r\n            masOpenUrl(href);\r\n          } else {\r\n            window.location.href = href;\r\n          }\r\n        }, true); \/\/ useCapture = true - fires before Elementor's bubble-phase handlers\r\n      });\r\n    }\r\n\r\n    masForceClick('.mas-publication-resources-list a', true);\r\n  })();\r\n  <\/script>\r\n\r\n\r\n<\/div><!-- \/.mas-publication-wrapper -->\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-26eb46d e-flex e-con-boxed sc_layouts_column_icons_position_left e-con e-parent\" data-id=\"26eb46d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6eaa21a sc_fly_static elementor-widget elementor-widget-shortcode\" data-id=\"6eaa21a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f20093-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"20093\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/en-us\/wp-json\/wp\/v2\/publications\/24721#wpcf7-f20093-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"20093\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.2.2\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f20093-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/fieldset>\n<p><label> Your Name<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" autocomplete=\"name\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"your-name\" \/><\/span> <\/label>\n<\/p>\n<p><label> Your Email<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" autocomplete=\"email\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span> <\/label>\n<\/p>\n<p><label> Phone Number (Optional)<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-phone\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-text wpcf7-validates-as-tel\" autocomplete=\"tel\" aria-invalid=\"false\" value=\"\" type=\"tel\" name=\"your-phone\" \/><\/span> <\/label>\n<\/p>\n<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Download Now\" \/>\n<\/p><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-001616c e-flex e-con-boxed sc_layouts_column_icons_position_left e-con e-parent\" data-id=\"001616c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3b35fd0 sc_fly_static elementor-widget elementor-widget-html\" data-id=\"3b35fd0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\r\n============================================================\r\n  MASPARTNER \/ MERCURIUS \u2014 STANDALONE CTA BLOCK\r\n  \"Need Help Getting Your Books Reconciled?\"\r\n  Paste this entire block into its own WordPress \/ Elementor\r\n  \"Custom HTML\" block (separate from the main publication).\r\n============================================================\r\n  This CTA button links to:\r\n    https:\/\/maspartner.com\/en-us\/free-consultation\/\r\n  (Update the href on the .mas-cta-btn anchor if this URL ever changes.)\r\n============================================================\r\n-->\r\n\r\n<div class=\"mas-cta-wrapper\">\r\n\r\n  <style>\r\n    .mas-cta-wrapper{\r\n      --mas-gold:#fabc17;\r\n      --mas-dark-gold:#cfa434;\r\n      --mas-black:#000000;\r\n      --mas-soft:#fbf7ec;\r\n      font-family:inherit;\r\n      box-sizing:border-box;\r\n      width:100%;\r\n    }\r\n    .mas-cta-wrapper *,\r\n    .mas-cta-wrapper *::before,\r\n    .mas-cta-wrapper *::after{box-sizing:border-box;}\r\n\r\n    .mas-cta-box{\r\n      background:var(--mas-soft);\r\n      border:1px solid #f0e6c8;\r\n      border-radius:12px;\r\n      padding:44px 34px;\r\n      text-align:center;\r\n      max-width:900px;\r\n      margin:0 auto;\r\n    }\r\n    .mas-cta-box h3{\r\n      font-size:clamp(22px,3.4vw,28px);\r\n      font-weight:800;\r\n      margin:0 0 16px;\r\n      color:var(--mas-black);\r\n      line-height:1.25;\r\n    }\r\n    .mas-cta-box p{\r\n      font-size:16px;\r\n      line-height:1.7;\r\n      max-width:640px;\r\n      margin:0 auto 26px;\r\n      color:#46464c;\r\n    }\r\n    .mas-cta-btn{\r\n      display:inline-block;\r\n      background:var(--mas-gold);\r\n      color:var(--mas-black);\r\n      font-weight:800;\r\n      font-size:15px;\r\n      letter-spacing:.2px;\r\n      padding:15px 38px;\r\n      border-radius:8px;\r\n      text-decoration:none;\r\n      cursor:pointer;\r\n      position:relative;\r\n      z-index:10;\r\n      pointer-events:auto;\r\n      transition:background .15s,color .15s;\r\n    }\r\n    .mas-cta-btn:hover{background:var(--mas-dark-gold);color:#ffffff;}\r\n\r\n    @media (max-width:768px){\r\n      .mas-cta-box{padding:32px 22px;}\r\n      .mas-cta-btn{display:block;width:100%;padding:15px 20px;}\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"mas-cta-box\">\r\n    <h3>Need Help Getting Your Books Reconciled?<\/h3>\r\n    <p>MASPARTNER helps small businesses streamline bookkeeping, accounting, payroll, tax compliance, and financial reporting. Our team of CPAs and accounting professionals can take reconciliation, and every other bookkeeping function, entirely off your plate.<\/p>\r\n    <a class=\"mas-cta-btn\" href=\"https:\/\/maspartner.com\/en-us\/free-consultation\/\" target=\"_blank\" rel=\"noopener\">Book a Free Consultation Today<\/a>\r\n  <\/div>\r\n\r\n  <script>\r\n  (function(){\r\n    \/\/ Force the CTA button to open on click (Elementor intercepts clicks in the\r\n    \/\/ bubble phase; a capture-phase handler fires first and wins).\r\n    var wrap = document.currentScript ? document.currentScript.closest('.mas-cta-wrapper') : null;\r\n    if(!wrap){\r\n      var all = document.querySelectorAll('.mas-cta-wrapper');\r\n      wrap = all[all.length-1];\r\n    }\r\n    if(!wrap) return;\r\n    wrap.querySelectorAll('.mas-cta-btn').forEach(function(el){\r\n      el.addEventListener('click', function(e){\r\n        e.stopPropagation();\r\n        var href = this.getAttribute('href');\r\n        if(!href || href === '#' || href.charAt(0) === '['){ e.preventDefault(); return; }\r\n        e.preventDefault();\r\n        window.open(href, '_blank', 'noopener,noreferrer');\r\n      }, true); \/\/ capture phase\r\n    });\r\n  })();\r\n  <\/script>\r\n\r\n<\/div><!-- \/.mas-cta-wrapper -->\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>The Complete AppFolio Accounting Guide for Property Managers Understanding AppFolio\u2019s Trust Accounting Architecture, Why Trust\u2026<\/p>\n","protected":false},"featured_media":24733,"template":"elementor_header_footer","class_list":["post-24721","publications","type-publications","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/maspartner.com\/en-us\/wp-json\/wp\/v2\/publications\/24721","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maspartner.com\/en-us\/wp-json\/wp\/v2\/publications"}],"about":[{"href":"https:\/\/maspartner.com\/en-us\/wp-json\/wp\/v2\/types\/publications"}],"version-history":[{"count":8,"href":"https:\/\/maspartner.com\/en-us\/wp-json\/wp\/v2\/publications\/24721\/revisions"}],"predecessor-version":[{"id":24735,"href":"https:\/\/maspartner.com\/en-us\/wp-json\/wp\/v2\/publications\/24721\/revisions\/24735"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/maspartner.com\/en-us\/wp-json\/wp\/v2\/media\/24733"}],"wp:attachment":[{"href":"https:\/\/maspartner.com\/en-us\/wp-json\/wp\/v2\/media?parent=24721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}