Portilla, Ruy-Díaz & Aguilar — billing reconciliation¶
Source: Casa Moksha M365 tenant ([email protected] mailbox), mined
2026-05-09. PDFs of every debit note pulled to
source-data/portilla/debit-notes/; structured extract at
source-data/portilla/debit-notes-parsed.json.
Cross-checked against: Brex transaction history (Primary 8798 + Casa
Moksha Ops 3753, both pulled live from /v2/transactions/cash/...) and
live Xero state for ContactID 4e028e3c-66e7-4a9c-9dba-abac89452ebc.
Status (2026-05-09): APPLIED to live Xero. Austin approved the dry-run
plan; scripts/fpa/xero_portilla_ap_cleanup.py --execute posted 25 new
ACCPAY bills + 22 payments (15 against the new bills, 7 against the
existing 8692/8777/8788/8986/8988/9010/9056). Live state now: 32 bills
total, 22 PAID ($37,140.41), 10 AUTHORISED ($22,421.34). Audit manifests
in source-data/portilla/exec-manifest-*.json (one per execute run, with
every InvoiceID + PaymentID for rollback). The intercompany RFH→RHG
clearing for the $11,601.78 of Primary-paid bills is not yet posted —
that's a separate manual journal pending Pearce / Austin sign-off on the
clearing-account convention.
Status: complete for Nov 2024 → Apr 2026. Pre-Nov-2024 invoices are referenced in Brex (
2024-11-27 -$747 "payment Oct 2024 invoice"and the three 2025-10-02 wires below) but the underlying NC PDFs predate the mining window and were not pulled.
Headline numbers¶
| Amount (USD) | Count | |
|---|---|---|
| Invoiced (NC 4906 → NC 9205) | $59,561.75 | 32 |
| Paid via Brex (matched to specific NCs) | $37,140.41 | 22 |
| Paid via Brex (unmatched — pre-NC-4906 invoices) | $5,405 | 4 |
| Outstanding (per this reconciliation) | $22,421.34 | 10 |
| Wire attempts that bounced and were never re-tried | $1,798 | 1 (NC 8478) |
Outstanding = invoiced minus payments that match a specific NC. The 4 "unmatched" payments cleared bills that predate this pull and are assumed cleared on the legacy ledger.
Matter buckets¶
Portilla labels every debit note with a matter reference. Three buckets:
| Bucket | Count | Total invoiced | Description |
|---|---|---|---|
| CORPORATE | 27 | $53,833.75 | RHG S.A. de C.V. → S. de R.L. de C.V. conversion + general RHG corporate work + GASTOS (expenses) sub-bills |
| CONSIGNACION CINDY | 4 | $4,781.44 | Cindy Canto removal via Mexican payment-consignation proceeding |
| LABORAL | 1 | $946.56 | Mexican IMSS/employment-contract compliance matter (Aug 2025). Confirmed 2026-05-09 by reading the bill: NOT Cindy-specific — work was an HR consultation on "employment contracts to be executed with the company, migration of the employees, execution dates and possible risk with the social security institute." Different attorney (JOT = Juan Carlos Origel Torres, $408/hr) and different matter code (959PRY-CDMX, vs. 687PRY for CORPORATE and 1063PRY for CINDY). Probably triggered by the Cindy-era bookkeeping audit surfacing IMSS exposure across the staff (Alfredo, Rosa Maria, Lucila, Miroslava). The bill carries 16% IVA because labor advice for Mexican operations is taxable at the standard rate, unlike the Corporate bills which are 0% (foreign legal services to a foreign client). |
| TOTAL | 32 | $59,561.75 |
Entity allocation: every Portilla bill in this pull is RHG-attributable work. None is RFH-only. The current bookkeeping pattern of paying some from Brex Primary (RFH) is an intercompany allocation problem, not a classification problem — see "Entity-allocation reframing" below.
Invoice-level table (chronological)¶
Issue dates are local Mexico time as printed on Portilla's debit notes; period is the work-month covered. Status: ✅ paid (matched to Brex), ⏳ unpaid, ⚠ attempted-and-bounced.
| Issue date | NC | Period | Matter | Total USD | Paid date | Paid from | Status |
|---|---|---|---|---|---|---|---|
| 2024-11-20 | 4906 | Oct 2024 | CORPORATE | $5,747.00 | — | — | ⏳ unpaid |
| 2024-12-11 | 5108 | Nov 2024 | CORPORATE | $1,596.40 | — | — | ⏳ unpaid |
| 2024-12-31 | 5190 | Nov 2024 | CORPORATE | $1,438.00 | 2025-01-07 | CM Ops 3753 | ✅ |
| 2025-01-10 | 5317 | Dec 2024 | CORPORATE | $150.00 | 2025-03-11 | CM Ops 3753 | ✅ |
| 2025-03-18 | 5886 | Feb 2025 | CORPORATE | $8,652.00 | 2025-04-03 | CM Ops 3753 | ✅ |
| 2025-04-10 | 6210 | Mar 2025 | CORPORATE | $2,813.00 | 2025-04-23 | CM Ops 3753 | ✅ |
| 2025-05-14 | 6438 | Apr 2025 | CORPORATE | $2,178.00 | 2025-05-29 | CM Ops 3753 | ✅ |
| 2025-06-05 | 6598 | May 2025 | CORPORATE | $59.00 | 2025-08-08 | CM Ops 3753 | ✅ |
| 2025-07-23 | 6936 | Jun 2025 | CORPORATE | $2,426.00 | 2025-08-08 | CM Ops 3753 | ✅ |
| 2025-08-08 | 7144 | Jul 2025 | CORPORATE | $3,032.00 | — | — | ⏳ unpaid |
| 2025-09-11 | 7447 | Aug 2025 | CORPORATE | $3,333.00 | — | — | ⏳ unpaid |
| 2025-09-18 | 7461 | Aug 2025 | LABORAL (IMSS/employment contracts) | $946.56 | — | — | ⏳ unpaid |
| 2025-10-10 | 7588 | Oct 2025 | CORPORATE | $3,000.00 | 2025-10-16 | CM Ops 3753 | ✅ |
| 2025-10-20 | 7712 | Sep 2025 | CORPORATE / GASTOS | $501.63 | 2025-11-18 | CM Ops 3753 | ✅ |
| 2025-11-13 | 7934 | Oct 2025 | CORPORATE | $1,091.30 | — | — | ⏳ unpaid |
| 2025-11-13 | 7940 | Oct 2025 | CORPORATE | $2,484.00 | — | — | ⏳ unpaid |
| 2025-11-18 | 7649 | Sep 2025 | CORPORATE | $1,321.00 | 2025-11-24 | CM Ops 3753 | ✅ |
| 2025-11-18 | 7954 | Nov 2025 | CORPORATE | $3,000.00 | 2025-11-24 | CM Ops 3753 | ✅ |
| 2025-11-24 | 7996 | Nov 2025 | CORPORATE / EXPENSES | $501.00 | 2025-12-10 | Primary 8798 | ✅ |
| 2025-12-15 | 8248 | Nov 2025 | CORPORATE | $1,180.00 | 2025-12-22 | Primary 8798 | ✅ |
| 2026-01-20 | 8478 | Dec 2025 | CORPORATE | $1,798.00 | (attempted Feb 4/6/9) | Primary 8798 | ⚠ bounced |
| 2026-02-13 | 8691 | Jan 2026 | CONSIGNACION CINDY | $2,301.44 | — | — | ⏳ unpaid |
| 2026-02-13 | 8692 | Jan 2026 | CORPORATE | $2,860.00 | 2026-03-11 | Primary 8798 | ✅ |
| 2026-02-17 | 8747 | Jan 2026 | CORPORATE | $91.64 | — | — | ⏳ unpaid |
| 2026-02-23 | 8777 | Jan 2026 | CORPORATE | $406.41 | 2026-03-11 | Primary 8798 | ✅ |
| 2026-02-25 | 8788 | Jan 2026 | CONSIGNACION CINDY | $1,984.00 | 2026-03-11 | Primary 8798 | ✅ |
| 2026-03-10 | 8986 | Feb 2026 | CONSIGNACION CINDY | $248.00 | 2026-03-23 | Primary 8798 | ✅ |
| 2026-03-10 | 8988 | Feb 2026 | CORPORATE | $2,350.00 | 2026-03-23 | Primary 8798 | ✅ |
| 2026-03-11 | 9010 | Feb 2026 | CORPORATE | $152.93 | 2026-03-23 | Primary 8798 | ✅ |
| 2026-03-19 | 9056 | Mar 2026 | CORPORATE / GASTOS | $617.44 | 2026-03-23 | Primary 8798 | ✅ |
| 2026-04-07 | 9204 | Mar 2026 | CORPORATE | $1,054.00 | 2026-04-24 | Primary 8798 | ✅ |
| 2026-04-07 | 9205 | Mar 2026 | CONSIGNACION CINDY | $248.00 | 2026-04-24 | Primary 8798 | ✅ |
Unpaid invoices (10 bills, $22,420.34)¶
In age order — the 4906 / 5108 pair is over 17 months old.
| NC | Issue date | Matter | Total USD | Notes |
|---|---|---|---|---|
| 4906 | 2024-11-20 | CORPORATE | $5,747.00 | Oldest unpaid. No matching wire in Brex Primary or CM Ops. |
| 5108 | 2024-12-11 | CORPORATE | $1,596.40 | Same period — never picked up after 5190 was paid Jan 7. |
| 7144 | 2025-08-08 | CORPORATE | $3,032.00 | Three 2025-10-02 wires totaling $4,658 may relate but don't sum cleanly — see "Unmatched payments" below. |
| 7447 | 2025-09-11 | CORPORATE | $3,333.00 | Same period as the 2025-10-02 wires — possibly partially paid. |
| 7461 | 2025-09-18 | LABORAL | $946.56 | The only LABORAL bill in the file. Likely Cindy-precursor work. |
| 7934 | 2025-11-13 | CORPORATE | $1,091.30 | |
| 7940 | 2025-11-13 | CORPORATE | $2,484.00 | |
| 8478 | 2026-01-20 | CORPORATE | $1,798.00 | Wire attempted from Primary 8798 on 2026-02-04, 2026-02-06, and 2026-02-09 — all four legs cancelled (net 0). Re-attempt has not been initiated as of 2026-04-24. |
| 8691 | 2026-02-13 | CONSIGNACION CINDY | $2,301.44 | The Mar 11 batch paid 8692 / 8777 / 8788 but not 8691. Likely an oversight when scheduling the wire batch. |
| 8747 | 2026-02-17 | CORPORATE | $91.64 | Small bill, probably bundled with another and missed. |
| TOTAL | $22,420.34 |
Unmatched payments (4 wires, $5,405)¶
Brex shows the following Portilla outflows that don't pair to a debit note in this pull window — they predate the earliest NC we have (4906, Nov 2024).
| Date | Account | Amount | Brex memo | Likely source |
|---|---|---|---|---|
| 2024-11-27 | CM Ops 3753 | $747.00 | "PORTILLA, RUY-DÍAZ & AGUILAR, S.C. - payment Oct 2024 invoice" | Pre-NC-numbering bill (Oct 2024). |
| 2025-10-02 | CM Ops 3753 | $408.00 | "Renfroe Holdings via Brex" | Three wires same day; total $4,658. None of the unpaid 2025 NCs sum to these amounts cleanly. Probable explanation: paying 1+ Portilla bills that predate our NC window. |
| 2025-10-02 | CM Ops 3753 | $1,760.00 | same | |
| 2025-10-02 | CM Ops 3753 | $2,490.00 | same | |
| TOTAL | $5,405.00 |
If these wires are actually paying NCs 7144 / 7447 / 7461 with FX rounding losses, the 5 NCs flagged "unpaid" above would shrink. Worth asking Mary Infante ([email protected]) for a statement of account through 2025-09-30 to settle this.
Xero state vs. reality (drift) — pre-cleanup baseline¶
Resolved 2026-05-09. Section preserved as the pre-cleanup audit trail. Post-cleanup state: 32 Portilla bills, 22 PAID, 10 AUTHORISED; open AP $22,421.34. See "Status" up top.
Xero org Renfroe Holdings historically had 7 Portilla bills, all
AUTHORISED (none marked paid), totaling $8,618.78:
| InvoiceNumber | Bill date | Total |
|---|---|---|
| 8692NCH-CDMX | 2026-02-26 | $2,860.00 |
| 8777NCH-CDMX | 2026-02-26 | $406.41 |
| 8788NCH-CDMX | 2026-02-26 | $1,984.00 |
| 8986NCH-CDMX | 2026-03-19 | $248.00 |
| 8988NCH-CDMX | 2026-03-19 | $2,350.00 |
| 9010NCH-CDMX | 2026-03-19 | $152.93 |
| 9056NCH-CDMX | 2026-03-19 | $617.44 |
Two structural problems:
- AP overstatement: $8,618.78. All 7 of these bills were paid out of Brex Primary on 2026-03-11 and 2026-03-23 (per the wire history above) but no payment was ever applied in Xero. The $8,618.78 AP should be $0 for these specific bills.
- 22 missing bills. Every NC issued before 2026-02-26 (NCs 4906 through 8478) is not in Xero at all. That's $25,693.30 of legal activity that is invisible to the GL — including the four oldest unpaid bills (4906, 5108, 7144, 7447, 7461, 7934, 7940, 8478) totaling $19,028.26 of real outstanding AP that should be on the books.
- 3 bills missing from Xero but already paid: NCs 9056 ($617.44), 9204 ($1,054), 9205 ($248). The 9056 bill was paid same-day from the batch that paid 8986/8988/9010, but only 4 of those 5 made it into Xero. NCs 9204 + 9205 (paid 2026-04-24) are post-Xero-backup.
Entity-allocation reframing¶
Per accounting/vendor-mappings.md, Portilla is flagged "RHG or RFH
(paid from both sides)." After this pull the picture is sharper:
- Every Portilla bill in this file is RHG-attributable work. Not a single one is general RFH-level corporate housekeeping.
- 27 bills are CORPORATE — RHG SA → S. de R.L. de C.V. conversion + related RHG corporate filings (PSM, shareholder meetings, financial statement approvals).
- 4 bills are CINDY consignación — RHG cap-table cleanup.
- 1 bill is LABORAL — Mexican labor matter, almost certainly Cindy-adjacent.
- The "paid from both sides" pattern is operational, not legal. Through 2025-11, payments came out of Casa Moksha Ops 3753 (correctly hitting RHG cash). Starting 2025-12-10, payments shifted to Brex Primary 8798 (RFH cash) — initially $501 + $1,180, then the failed $1,798 attempts, then the $5,250 (Mar 11) + $3,368 (Mar 23) + $1,302 (Apr 24) batches.
- All Primary-paid Portilla wires need intercompany re-allocation —
treat as RFH paying on RHG's behalf, then RHG owes RFH the amount.
Aligns with the 2026-04-19 decision (
decisions/log.md: "Intercompany transfers between RFH and RHG as intercompany settlements"). The amounts to reclass:
| Period | Primary-paid total | Currently bookable as |
|---|---|---|
| 2025-12-10 → 2025-12-22 | $1,681.00 | RFH expense → reclass RHG via due-from |
| 2026-03-11 (settled batch) | $5,250.41 | (4 of 5 are in Xero; reclass at payment time) |
| 2026-03-23 (settled batch) | $3,368.37 | (3 of 4 are in Xero; reclass at payment time) |
| 2026-04-24 | $1,302.00 | (neither is in Xero yet; bills + payment to be added) |
| TOTAL | $11,601.78 |
The CM-Ops-paid total $30,943.63 needs no reclass — it correctly hits RHG cash already.
Why the failed attempts on NC 8478 matter¶
NC 8478 ($1,798, December 2025 corporate work) shows a striking pattern in Brex Primary:
2026-02-04 +$1,798.00 / -$1,798.00 (queued + reversed same day)
2026-02-06 -$1,798.00 (queued again)
2026-02-09 +$1,798.00 (refunded — never settled)
NET CASH MOVEMENT: $0
Likely cause: Santander rejected the wire (instructions, name mismatch, or sender verification). No retry from CM Ops or Primary has shown up since. NC 8478 is genuinely unpaid as of 2026-04-24 and no one has re-initiated payment.
This is a process gap worth surfacing — Alex / Austin should ask Mary Infante at Portilla what wire instructions caused the bounce, and either re-attempt or merge into the next batch.
Counterparty / process notes¶
- Wire instructions: Portilla accepts wires to Banco Santander S.A. (BMSXMXMM, account 82-50040150-6, CLABE 014680825004015064). The most recent debit notes (2026-04-17) also include Banorte as a fallback (MENOMXMT, account 1132682858). Wire path is RFH (Brex) → Santander Mexico USD → Portilla.
- Billing cadence: Portilla bills monthly. Each calendar month generates one CORPORATE bill plus, when applicable, separate CINDY, LABORAL, and EXPENSES (gastos) bills. Months with multiple bills: Jan 2026 (4 bills), Feb 2026 (3 bills), Mar 2026 (4 bills).
- Hourly rate: $248/hr USD across all attorneys (LRV = Luis Miguel Reyes Vázquez, DAT = Diego Alcántara Trejo, LLZ = Luis Lara Zavala). Same rate has held since at least Aug 2025.
- Lead per matter: LRV = CORPORATE conversion work (PSM filings, shareholder meetings); DAT = CINDY consignación (Yucatán court runs); LRV = LABORAL.
What would close out the picture¶
- Statement of account from Mary Infante through 2025-09-30, to reconcile the 2024-11-27 $747 wire and the 2025-10-02 $4,658 trio against actual Portilla AR. High-value ask — would either move $5,405 of "unmatched paid" into specific NCs or confirm those NCs we listed as unpaid are actually still owed.
- Re-initiate NC 8478 ($1,798) wire, or get Mary to re-issue with corrected instructions if the Santander route had a problem.
- Pay the 8 unpaid in-window bills ($14,373.34 = 4906 + 5108 + 7144 + 7447 + 7934 + 7940 + 8691 + 8747) or get them written off / partially settled.
- Bring Xero AP into agreement with reality: (a) apply payments to the 4 of 4 Mar 11 batch bills in Xero (drops AP $5,250.41); (b) apply payments to the 3 of 4 Mar 23 batch bills in Xero (drops AP $2,750.93); © add the 22 missing bills (NCs 4906 through 8478, plus 9056, 9204, 9205) and their payments where applicable; (d) reclassify the Primary-paid bills from RFH to RHG via intercompany clearing.
- Identify the LABORAL bill (NC 7461) — resolved 2026-05-09 by reading the bill directly: NOT Cindy-specific. JOT (Juan Carlos Origel Torres) advised on Casa Moksha employment-contract migration + IMSS risk for the staff. Probably the audit response to the Cindy-era bookkeeping problems. Bill carries 16% IVA because Mexican labor advice is domestic-taxable. Treat as CORPORATE-bucket overhead at the matter-level roll-up (or split into a fourth "HR/COMPLIANCE" bucket if more LABORAL bills surface).
Maintenance / refresh procedure¶
# 1. Re-pull any new Portilla emails + PDFs
export BW_SESSION="$(cat ~/.config/bw/session)"
python3 scripts/inboxes/portilla_pull.py
# 2. Re-parse to JSON/CSV
python3 scripts/inboxes/portilla_parse.py
# 3. Run the AP-cleanup planner (dry-run by default).
# Reads parsed PDFs + live Brex + live Xero; emits the full plan
# (bills to create, payments to apply, unpaid bills, unmatched wires).
python3 scripts/fpa/xero_portilla_ap_cleanup.py
xero_portilla_ap_cleanup.py is the operational corollary to this
file. Re-run it to refresh the deltas; re-run this file's invoice table
when the plan reveals new NCs (e.g. after a new monthly Portilla email).
With --execute, the script will POST the plan to Xero — but execution
is intentionally not implemented yet (the dry-run output is the
authoritative review surface; Austin should approve the plan, then a
follow-up commit can wire up the POST calls following the
scripts/fpa/xero_merge_portilla.py pattern).
The intercompany RFH→RHG clearing for Primary-paid Portilla wires (~$11,601.78 lifetime) is not part of this planner — book that as a separate manual journal once the bill+payment side lands.