Revenue Optimization

Payment Audit Automation: Recover Every Dollar Owed

D
Dimora AI Team
Last updated:
8 min read
Payment audit dashboard showing outstanding balances flagged for automated follow-up across vacation rental portfolio

You charged a security deposit for pet damage. The guest never paid it. Two months later, you notice the outstanding balance and send a follow-up email. The guest doesn't respond. You send another email. Still nothing. Eventually, you write it off as uncollectable.

This happens more often than most property managers admit.

Security deposits that don't get charged. Cleaning fees for early check-outs that slip through. Damage fees that get flagged but never billed. Pet fees that weren't applied at booking.

None of these are large amounts individually. $50 here. $75 there. Maybe $150 for a broken appliance.

But across 50 properties over a year, it adds up. $3,000 to $6,000 in revenue you already earned but never collected.

The problem isn't your PMS. Guesty tracks outstanding balances. Hospitable tracks outstanding balances. Hostaway tracks outstanding balances.

The problem is that tracking isn't collecting. Someone has to review those balances, draft follow-up messages, escalate to collections if needed, and actually recover the money.

Most PMs do this manually once a month. Or once a quarter. Or never.

Desert Sol Real Estate runs daily automated payment audits across 130+ properties. Every morning, the system scans for outstanding balances, drafts follow-up messages, and queues them for PM review before sending.

This is how payment audit automation works, why manual tracking fails at scale, and how to set up a system that recovers the money you're owed.

Why Outstanding Balances Slip Through

It's not because PMs don't care about money. It's because the manual process for tracking and collecting balances doesn't scale.

Here's what happens:

1. Security Deposits That Don't Auto-Charge

Most short-term rental platforms (Airbnb, VRBO) hold security deposits as authorizations, not charges. If the guest causes damage, you have to manually file a claim.

The manual process:

  1. Guest checks out
  2. Cleaning crew reports damage (broken glass, stained sheets, missing remote)
  3. PM reviews photos and decides if it's billable
  4. PM logs into the platform and files a damage claim
  5. Platform reviews the claim (this can take 3-7 days)
  6. Guest disputes the claim
  7. Platform asks for more evidence
  8. PM provides receipts, more photos, repair quotes
  9. Platform approves the claim (or doesn't)
  10. Charge goes through (or doesn't)

Each of these steps has friction. If the damage is minor ($30 for broken wine glasses), most PMs don't bother filing a claim. The time investment isn't worth $30.

But 50 uncollected $30 charges per year is $1,500.

2. Cleaning Fees for Early Check-Outs

Guest books a 7-night stay. They decide to leave after 5 nights. Your cleaning crew shows up two days early and cleans the property.

You're owed an early check-out cleaning fee (your standard $150 cleaning fee wasn't supposed to be charged until the original check-out date).

But the guest already paid their cleaning fee at booking. The PMS doesn't automatically charge a second cleaning fee for early departure.

So you need to:

  1. Notice that the guest left early
  2. Confirm with the cleaning crew that they cleaned early
  3. Calculate the additional cleaning cost
  4. Draft a message to the guest explaining the charge
  5. Manually add the charge to their reservation
  6. Hope they don't dispute it

Most PMs skip this entirely. The $150 fee isn't worth the time and potential negative review.

But 20 uncollected early check-out fees per year is $3,000.

3. Pet Fees Not Applied at Booking

Guest books through Airbnb. They bring a dog. Airbnb's pet fee system is inconsistent — sometimes it's applied automatically, sometimes it's not.

Your listing clearly states: "Pet fee: $75 per stay."

But the guest's total charge doesn't include the pet fee. Either they didn't disclose the pet, or Airbnb's system failed to apply it.

You notice the dog in a Ring camera notification or a message from the cleaning crew. You need to charge the fee.

Manual process:

  1. Confirm the pet was actually there (photos, messages, cleaner report)
  2. Draft a message to the guest explaining the fee
  3. Add the charge via Airbnb resolution center
  4. Guest accepts or disputes
  5. If they dispute, you escalate to Airbnb support (another 2-3 days of back-and-forth)

Most PMs don't bother unless the pet caused damage. The $75 fee plus the hassle of disputing with Airbnb isn't worth it.

But 30 uncollected pet fees per year is $2,250.

4. Miscellaneous Charges That Get Forgotten

Late check-out fees that were verbally agreed to but never added to the reservation. Parking passes that were ordered but never billed. Mid-stay cleanings that were requested and performed but not charged.

Every one of these is a legitimate charge. But none of them auto-bill. Someone has to remember to add them.

In a busy month with 200+ check-ins and check-outs across your portfolio, things get forgotten.

The Pattern: Small Amounts, High Friction, Low Recovery Rate

The reason outstanding balances slip through isn't that PMs are lazy. It's that the effort required to recover $50 to $150 doesn't feel worth it when you're managing 50 properties.

You have bigger problems:

  • A water heater broke at Property A
  • A guest is locked out at Property B
  • A negative review just came in for Property C
  • Airbnb support is arguing about a cancellation for Property D

Chasing a $75 pet fee falls to the bottom of the priority list. Eventually, it gets written off.

But those small write-offs add up. 10 properties x 5 uncollected charges per year x $75 average = $3,750 in lost revenue.

For a 50-property portfolio, that's $18,750 per year.

How Payment Audit Automation Works

Automation doesn't replace the PM's judgment. It replaces the repetitive scanning and drafting work that makes manual tracking impossible at scale.

Here's the workflow:

Step 1: Daily Balance Scan (6am Cron)

Every morning, the system pulls all active and recent reservations (past 60 days) from the PMS. For each reservation, it checks:

  • Total charges: What was the guest supposed to pay (nightly rate + cleaning fee + pet fee + any add-ons)?
  • Total collected: What has actually been charged to their payment method?
  • Outstanding balance: The difference between charges and collected

If the outstanding balance is greater than $50 (configurable threshold), the reservation gets flagged.

Why $50?

Below $50, the time cost of recovery often exceeds the dollar value. The PM can adjust this threshold based on their portfolio (luxury properties might set it at $100, budget properties might set it at $25).

Step 2: Balance Categorization

The system categorizes each outstanding balance by type:

  • Security deposit claims: Damage reported by cleaning crew, claim filed but not yet collected
  • Early check-out fees: Guest departed before scheduled check-out date
  • Pet fees: Pet detected (via message, Ring cam, or cleaner report) but fee not applied
  • Upsell charges: Early check-in, late checkout, or gap night extension accepted but not yet charged
  • Miscellaneous: Parking, mid-stay cleaning, extra guests, etc.

Each category has a different follow-up template.

Step 3: Follow-Up Message Drafting

For each flagged balance, the AI drafts a follow-up message based on the category and how long the balance has been outstanding.

7-Day Follow-Up (First Attempt):

Hi [Guest Name],

We noticed there's an outstanding balance of $[Amount] on your recent stay at [Property Name]. This is for [Reason: pet fee / early check-out cleaning / damage claim].

We've added this charge to your reservation. Please let us know if you have any questions!

[PM Name]

Tone: Friendly, assumes it's an oversight.

30-Day Follow-Up (Second Attempt):

Hi [Guest Name],

We're following up on the outstanding balance of $[Amount] from your stay at [Property Name]. We haven't received payment yet.

Please confirm receipt of this charge or let us know if there are any issues. We're happy to discuss!

[PM Name]

Tone: Still friendly, but more direct.

60-Day Follow-Up (Final Attempt):

Hi [Guest Name],

This is our final notice regarding the outstanding balance of $[Amount] from your stay at [Property Name]. If we don't receive payment within 7 days, we'll need to escalate this to our collections process.

We'd prefer to resolve this directly. Please reach out as soon as possible.

[PM Name]

Tone: Firm, includes consequence (collections escalation).

Step 4: PM Review and Approval

All drafted messages queue for PM review. The PM sees:

  • Guest name and property
  • Outstanding balance amount and reason
  • Days overdue
  • Full message text
  • Approve / Edit / Reject buttons

The PM reviews each message in 30 to 60 seconds. They can:

  • Approve if the charge is legitimate and the message is appropriate
  • Edit if they want to adjust tone, add context, or change the amount
  • Reject if the charge was already resolved, or if they decide to write it off

This human oversight ensures no guest gets charged incorrectly or messaged inappropriately.

Step 5: Channel Routing and Sending

Once approved, the message sends via the booking channel:

  • Airbnb reservations → Airbnb messaging
  • VRBO reservations → VRBO messaging
  • Direct bookings → Email

If the charge needs to be added to the reservation, the system either:

  • Auto-adds via PMS API (if supported by Guesty/Hospitable/Hostaway)
  • Flags for manual PM action (if API doesn't support the charge type)

Step 6: Response Tracking and Escalation

The system logs every follow-up attempt:

  • Guest name, property, balance amount
  • Follow-up attempt (1st, 2nd, 3rd)
  • Message sent date
  • Guest response (paid, disputed, ignored)
  • Current status (pending, resolved, escalated)

If the guest doesn't respond after the 60-day follow-up, the balance is flagged for collections escalation. The PM decides whether to:

  • Write it off (not worth the collections cost)
  • Send to a collections agency
  • Add the guest to an internal "do not rent" list

The Math Behind Payment Recovery

Let's say your 50-property portfolio has the following uncollected balances per year:

Security Deposit Claims:

  • Incidents: 40 per year (0.8 per property)
  • Average claim: $150
  • Manual recovery rate: 40% (most PMs give up after one or two emails)
  • Total owed: $6,000
  • Manual recovery: $2,400
  • Lost revenue: $3,600

Early Check-Out Fees:

  • Incidents: 20 per year (0.4 per property)
  • Average fee: $150
  • Manual recovery rate: 20% (most PMs don't even charge this)
  • Total owed: $3,000
  • Manual recovery: $600
  • Lost revenue: $2,400

Pet Fees:

  • Incidents: 30 per year (0.6 per property)
  • Average fee: $75
  • Manual recovery rate: 50% (easier to prove via cleaner reports)
  • Total owed: $2,250
  • Manual recovery: $1,125
  • Lost revenue: $1,125

Miscellaneous Charges:

  • Incidents: 50 per year (1 per property)
  • Average charge: $50
  • Manual recovery rate: 30%
  • Total owed: $2,500
  • Manual recovery: $750
  • Lost revenue: $1,750

Total Lost Revenue (Manual Process): $8,875 per year

Now run the same math with automated follow-ups:

Automated Recovery Rate: 60% to 70%

Why higher?

  1. Consistency: Every balance gets followed up, not just the ones the PM remembers
  2. Timing: Follow-ups happen within 7 days, not 30 or 60 days later
  3. Persistence: Three automated follow-ups at 7, 30, and 60 days vs one or two manual attempts

Total Owed: $13,750

Automated Recovery (60%): $8,250

Automated Recovery (70%): $9,625

Additional Revenue vs Manual Process:

  • At 60% recovery: $8,250 - $4,875 (manual) = $3,375 per year
  • At 70% recovery: $9,625 - $4,875 (manual) = $4,750 per year

That's $3,375 to $4,750 in incremental revenue just from better follow-up consistency.

And the PM time investment? 30 seconds per follow-up message review. If you're sending 140 follow-ups per year (one per outstanding balance), that's 70 minutes total. Just over one hour per year.

Compare that to the manual process: reviewing balances monthly (2 hours per month = 24 hours per year), drafting follow-up emails, tracking responses.

Automation saves 23 hours per year while recovering $3,375 to $4,750 more revenue.

Setting Up Payment Audit Automation

If you want to build this yourself, here's what you need:

1. PMS API Access

Pull reservation data and payment data:

  • Total charges per reservation (nightly rate + fees + add-ons)
  • Total collected (what's been charged to the guest's payment method)
  • Outstanding balance (difference between charges and collected)

Guesty, Hospitable, and Hostaway all expose this via REST API.

2. Daily Scan Logic

Set up a cron job that runs every morning:

const reservations = await fetchReservations({ status: ['active', 'checked-out'], daysBack: 60 });
const flaggedBalances = reservations.filter(r => r.outstandingBalance > 50);

For each flagged balance, check how long it's been outstanding:

const daysOverdue = daysSince(r.checkoutDate);
const followUpAttempt = daysOverdue < 7 ? 'first' : daysOverdue < 30 ? 'second' : 'third';

3. Message Template System

Store follow-up templates per category and attempt:

const templates = {
  pet_fee: {
    first: "Hi {guestName}, we noticed an outstanding balance of ${amount} for a pet fee...",
    second: "Hi {guestName}, we're following up on the outstanding pet fee of ${amount}...",
    third: "Hi {guestName}, this is our final notice regarding the ${amount} pet fee..."
  },
  security_deposit: { /* similar structure */ },
  early_checkout: { /* similar structure */ }
};

Personalize with guest name, property name, amount, and reason.

4. Approval Queue

Build a simple dashboard where the PM reviews queued messages:

  • List of outstanding balances
  • Draft message for each
  • Approve / Edit / Reject actions

Once approved, the message sends via Airbnb API, VRBO API, or email.

5. Logging and Tracking

Log every follow-up attempt:

{
  guestId: "...",
  reservationId: "...",
  balanceAmount: 75,
  balanceReason: "pet_fee",
  followUpAttempt: 1,
  messageSentDate: "2026-02-08",
  guestResponse: "pending",
  status: "pending"
}

Query this data monthly to track:

  • Total balances flagged
  • Total balances recovered
  • Recovery rate per category
  • Average days to payment

6. Escalation Workflow

After the third follow-up (60+ days overdue), flag for escalation:

  • PM decides: write off, send to collections, or add to "do not rent" list
  • If sending to collections, export the data and hand off to collections agency

If you're using Dimora, this entire workflow is built in. The system scans daily, drafts messages per category and timeline, queues for PM review, routes via the correct channel, and logs all interactions.

Setup time: 2 hours (configure balance thresholds, customize message templates, connect PMS API). Ongoing PM time: 30 seconds per review.

Real-World Edge Cases

"What if the guest already paid but the PMS hasn't updated?"

This is why PM review matters. If the PM sees a flagged balance but knows the guest already paid, they reject the follow-up message.

The system is a safety net, not a replacement for PM knowledge.

"What if the charge is disputed and we need to provide evidence?"

The follow-up message is just the initial contact. If the guest disputes, the PM handles the back-and-forth manually (providing photos, receipts, cleaner reports).

Automation gets the process started. The PM handles escalation.

"What if the balance is under $50 but I still want to collect it?"

The $50 threshold is configurable. You can set it to $25, $10, or $0 (flag every outstanding balance).

But be realistic about the time cost. If you're flagging 200 balances per month at $10 each, you're spending hours reviewing follow-up messages for $2,000 in potential recovery. The ROI drops fast.

"What if I don't want to annoy guests with follow-up messages?"

This is a valid concern. Automated follow-ups can feel aggressive if not calibrated correctly.

The key is tone and timing:

  • 7-day follow-up: Friendly reminder (assumes it's an oversight)
  • 30-day follow-up: Firmer, but still polite
  • 60-day follow-up: Final notice with consequence

Space them out (don't send three messages in one week). Use natural language (not robotic "you owe us money" templates). Give the PM full control over every message.

If the guest had a great stay, left a 5-star review, and you're chasing them for a $50 pet fee, the PM can reject the follow-up. The automation surfaces the opportunity. The PM decides if it's worth pursuing.

What to Do Next

If you manage 10+ properties and you're not tracking outstanding balances daily, you're losing money.

Here's your action plan:

  1. Audit your balances — Log into your PMS and pull a report of all outstanding balances from the past 90 days. How many are over $50? How many are over 30 days old? That's your baseline.

  2. Calculate your lost revenue — Multiply uncollected balances by your current recovery rate (probably 30-40% if you're doing it manually). The difference between that and a 60-70% recovery rate is your opportunity.

  3. Choose your approach — Build the automation yourself (30-40 hours of dev work) or use Dimora's Payment Audit module (2-hour setup).

  4. Set your thresholds — Decide the minimum balance amount to flag ($50 is standard, but adjust based on your portfolio). Set follow-up timing (7, 30, 60 days is recommended).

  5. Customize your templates — Write follow-up messages that match your brand voice. Test them on a few balances manually before automating.

  6. Run for 90 days — Track recovery rate, guest complaints (should be near zero), and time saved.

  7. Scale — Once payment audit is running smoothly, add upsell automation, gap night automation, and inbox AI drafts.

Payment audit is the lowest-risk automation to start with because:

  • The revenue impact is immediate (you're recovering money you're already owed)
  • The guest communication is low-volume (a few follow-ups per week vs dozens of inbox drafts per day)
  • The downside is minimal (worst case, you write off a balance like you would have done manually)

Start here. Prove the concept. Then expand to the other operational revenue streams.

Read the full revenue optimization guide for the complete framework, or see how payment recovery fits into the bigger picture.

The money is already in your system. You just need a process to collect it.

D
Dimora AI Team

The Dimora AI team writes about what we build and what we learn running AI operations across 210+ vacation rental properties.

View all posts

Related Articles

Continue exploring insights on property management and AI automation

See it running on real properties

Book a 15-minute demo. We show you real call logs, real inbox drafts, and real upsell data from 210+ properties. 14-day free trial, no credit card.