Head-to-head · Landlord finance
Stessa kept the books without a bank. Baselane kept the leases behind one . One rental quarter through both free tiers.
We ran the Alder Row quarter, 80 transactions and seven planted traps, through Stessa Essentials and Baselane Core without connecting a bank to either. Stessa scored 22/32, Baselane 16/32. Both got the Schedule E right where the rows were tagged; neither flagged the duplicate charge.
Some links below are affiliate links — if you subscribe through one, we earn a commission at no extra cost to you. It never changes a verdict; every tool runs the same test books. Full disclosure
Both tools took a landlord’s quarter by file and produced a Schedule E that was right on every row we tagged. Neither flagged the duplicate charge we planted. After that the two come apart. Stessa scored 22 of 32 and Baselane 16, and most of the gap is one design decision: on Baselane Core a tenant or a lease cannot exist until a bank account is attached, and nothing is categorised for you. Stessa recorded four leases, matched rent to tenants and guessed most of the routine lines, then charged $15 for the one report a landlord opens at tax time. Stessa also did the single worst thing in the test: it dropped one of two identical $286.40 charges at import without a word. Our pick for a landlord who keeps the bank where it is today is Stessa. Baselane’s case rests on the bank we did not open.
How we tested
The books are Alder Row Properties, the fictional landlord we published on October 15: a duplex and a house, three units, two escrowed mortgages, 80 transactions across a checking account and a card for July to September 2026, and seven planted traps. Each tool got the same quarter by CSV and was scored on the same 16-item, 32-point landlord checklist, with a screenshot behind every score. Stessa ran October 13 to 17 over six sittings; Baselane ran October 18 and 19 over two.
No bank was connected to either tool and no bank account was opened with either. That was the promise in the dataset article, and it is item 2 on the checklist. The one thing we paid for was a month of Stessa Manage, at $15, because Schedule E sits behind it. The dataset and checklist are on the methodology page.
Pricing, verified
Stessa’s prices were read at signup on October 13 and at checkout on October 17. Baselane’s were read on October 18; nothing was bought.
| Stessa | Baselane | |
|---|---|---|
| Tier we tested | Essentials, $0 | Core, $0 |
| Schedule E lives on | Manage, $12/mo annual or $15 monthly | Core, $0 |
| Top tier | Pro, $28/mo annual or $35 monthly | Smart, "$20/mo on an annual plan"; no monthly price shown |
| Card or phone at signup | Neither | A mobile number, before any product screen |
| Trial terms | No trial; the free tier is permanent | No trial on Core; Smart is a 30-day card trial that auto-charges |
| Paid at checkout | $15.00, as advertised | $0 |
Numbers age; the pricing tracker carries the dated verification for every tool we test.
The $15 is the only money that changed hands. Stessa’s Stripe checkout offered the annual plan at $144 beside it and showed no renewal date or cancellation terms; the Subscription page afterwards gave November 17 as the next billing date and a plain “Cancel Subscription” link. Baselane Smart was not opened: its pricing page sells it as a 30-day trial that charges the card when it ends, and we were not starting that clock for one item.
The bottom line first
-
22 v 16
Points of 32, Stessa first
-
0
Bank logins, either tool
-
9 v 12
Bank nudges logged, Stessa first
-
$15
Paid, for Stessa’s Schedule E
| Stessa | Baselane | |
|---|---|---|
| Import & setup (8) | 6 | 4 |
| The six traps (12) | 8 | 7 |
| Everyday work (6) | 4 | 2 |
| Output (6) | 4 | 3 |
| Total (32) | 22 | 16 |
| Signup → both feeds imported | 28 min | ≈ 32 min |
| Hands-on, whole trial | ≈ 3 h 37 min, six sittings | 2 h 00 min, two sittings |
The time rows need a caveat. Baselane’s two hours are lower partly because its four leases could not be entered at all. Signup to both feeds imported is the fairer clock: 28 minutes for Stessa, about 32 for Baselane.
Getting the books in
Stessa asked for an email and a password. Baselane asked for those and a mobile number before any product screen; the field says no VOIP numbers, and a VOIP number was accepted.
Stessa’s property form is an autocomplete with no manual entry, and the fictional Alder Row address returned “No matching addresses found.” We used two substitute real addresses, both public buildings, and we do not publish them or anything Stessa attached to them. The pull has a cost: public-record data later overwrote the unit details we typed, so the house we set up as 3 bedrooms, 2 baths and 1,400 square feet shows 0 bedrooms, 0 baths and the real building’s footprint on its overview card. Baselane took the fictional address as free text and kept every value we entered.
Both tools import a CSV without a bank login. Stessa’s panel sits below a “Link an account” hero and has no column mapper: a CSV must arrive in Stessa’s own column order or it is rejected on the header. Our checking file landed 41 of 41 rows; the card file landed 34 of 35, which is Trap 6. Baselane’s five-step wizard auto-mapped our generic Date, Description, Amount file and landed 76 of 76. It runs asynchronously and promised an email when done; none arrived, in inbox or spam, 24 hours later.
Neither tool let us name an account. Every imported row in Stessa lives in one “Imported File · Manual Upload” pseudo-account, in Baselane in one “Manually Added”. Checking and card cannot be told apart in either, which costs both a point on item 3 and matters again at reconciliation.
The bank pressure is where the two part. Stessa nudged nine times, from a setup-guide step to a pre-selected “Connect bank account” on the mortgage form to its banking product offered as a way to pay for the subscription. None blocked anything. Baselane nudged twelve times, and two were full-stop gates: a full-page “Set up your first entity” interstitial whose only exit is a small text link, then a “Continue without Baselane Banking?” dialog that must be confirmed again. (Baselane is a financial technology company and is not an FDIC-insured bank. Banking services provided by Thread Bank, Member FDIC.)
The third is a wall. On Baselane Core, tenants and leases exist only inside rent collection, and its seven-step wizard puts “Select bank account(s)” at step 5, before tenant details at step 6, with no skip. The choices are a Baselane checking account or an external bank linked through Plaid at $5 per ACH payment. An already-ended lease is rejected outright, and a month-to-month lease from September 1 scheduled its first rent for November 1, skipping the two months already past. None of Alder Row’s four leases were entered, and everything downstream that needs a tenant is scored on that.
Stessa recorded all four leases in 39 minutes. It recognised Whitcomb’s lapsed fixed term, offered a one-click renewal to month-to-month, and prorated Park’s first month to $1,840 from the September 8 start date, to the cent. It also counts every paid security deposit as rent collected in the lease summary tile.
The mortgages went the same way. Stessa holds a loan record per property, though the rate field takes two decimals, so 6.125% became 6.12%, and it has no escrow amount, balance or as-of date. Baselane Core has no loan record at all. Neither tool has a place for the two deposits the landlord already held when the quarter opened; in both, a deposit on a lease is a charge with a paid flag.
Trap 1: the mortgage payment is three things
Both tools split the July 1 Northstar debit into $269.01 principal, $1,217.34 interest and $426.20 escrow, with escrow filed as a transfer rather than an expense. Stessa’s split opens pre-halved and refuses to save until the rows sum to the original. Baselane’s opens empty, splits by amount or by percentage, and shows “Amount left to split” in red until it reaches zero. Both score 2.
The difference is what each did first. Stessa’s import booked the whole $1,912.55 to “Mortgages & Loans”, an expense, so the trap is live until the landlord finds the split tool. Baselane left the row uncategorised. The shared limit: neither proposes the split from a loan record, and the August and September debits did not inherit it. Six payments a quarter is six manual splits from the servicer statement.
Trap 2: the tax bill that never touches the bank
This trap separated the two most. Stessa’s manual transaction has no account field, so an escrow-paid tax can be booked without inventing a bank debit, and choosing Taxes › Property Taxes reveals a “Paid from escrow” checkbox. Ticked, it feeds a free Escrow Ledger report that runs a balance against the escrow legs of the mortgage splits. Both taxes, $2,140 on the duplex and $1,760 on the house, landed on the right property. The box is off by default, so a landlord has to know to tick it. Score 2.
Baselane has Property Taxes as a category and nothing else. A manual row must sit in the same “Manually Added” account as the bank lines, so the tax looks like a bank debit that never happened, with no flag, no escrow ledger and no running balance. It is counted once and reaches Schedule E correctly. Score 1.
Trap 3: the deposit that comes back short
Stessa’s import booked Ortega’s $1,800 Zelle as Income › Rents. Nothing flagged it. The fix exists: a top-level Security Deposits category takes both the deposit and Feld’s $1,550 refund, though the refund defaulted to the current tenant, Park, with the departed Feld hidden behind “Show past tenants”. The $250 retained needed two manual rows, out of Security Deposits and into the parent Income category, because no retained-deposit child exists. Score 1. One lesson learned the hard way: “Mark as paid” on a deposit in the lease wizard creates a transaction, so Ortega’s deposit was in the ledger twice until we deleted the lease-made row. Categorise the bank row and set its tenancy instead.
Baselane’s import guessed nothing, so the deposit started blank rather than wrong. The three legs book under Transfers & Other › Security Deposits and Fees & Other Revenue › Other Fees. But with no tenant on Core, no deposit can be tied to Ortega or Feld, and there is no deposits-held figure anywhere: the rent roll is empty and the balance sheet is Smart. Score 1. Stessa’s figure is a free rent-roll column, $5,850 as of October 16, exactly Whitcomb, Ortega and Park with Feld’s gone; the paid-tier balance sheet carries the same $5,850 as a short-term liability.
Trap 4: the condenser and the filter
Both tools have a capital category tree with an HVAC child, and both took the $3,480 Summit Air & Heat check as capital and left the $215 filter service as a repair. Stessa auto-set the $215 to HVAC Repairs and left the $3,480 blank rather than guess. Score 2. Depreciation is outside Stessa at every tier: the Manage-tier Capital Expenses report lists the row with “Date Placed in Service” and “Useful Life” blank, because nothing ever asked for them, and Schedule E prints line 18 as $0.
Baselane did something Stessa never did: after we categorised the $3,480 it said “This transaction looks like an asset” and offered to link it to a fixed-asset register. Then “Create Asset and Link Transaction” failed every time, with a red “Failed to create asset. Please try again.” Retry failed. A $0 down payment failed. The row stayed a category only, and depreciation on Core is a Smart cost-segregation upsell. Score 1, because the one extra feature on offer is broken.
Trap 5: one lawn bill, two properties
The same split tool does the allocation in both. Stessa’s opens at $90 and $90 with the category carried over; Baselane’s can split by percentage, which Stessa cannot, though the rows open empty so 50 and 50 are typed each time. Baselane’s search for “lawn” found nothing; the right child is Cleaning & Maintenance › Gardening. Neither tool reuses a split: we split July and opened August in both, and nothing offered the same allocation, and neither has an allocation rule. A fixed 50/50 on a recurring vendor is twelve manual splits a year. Score 1 each.
Trap 6: the duplicate charge
Pro-Flow Plumbing, $286.40, twice on August 7, on the card, because that is how a bank posts a genuine double charge.
Stessa’s card import landed 34 rows of 35. An amount filter for $286 returned one row. The Trash was empty. The second line was never created, and no message, flag or review item said so. The import panel does say “one new transaction per line item, except where duplicates are detected”, and that is what happened: a silent merge on date and amount, the same rule that later folded Park’s backfilled $2,400 deposit into the row the lease wizard had made. For a real double charge it means the landlord never sees it. Score 0. One caveat for fairness: our CSV carries no transaction IDs, so Stessa could match only on date, amount and payee, and we did not test the OFX path, where the two lines carry distinct IDs.
Baselane imported both, and a search for 286.40 shows them side by side with no marker of any kind. A landlord who looks will see them; one who does not pays twice. Score 1.
Trap 7: the hole in the feed
The checking feed stops on September 8 and resumes on the 22nd. Neither tool noticed. Neither has an account balance, a statement period or a reconcile screen for a file-imported account. Stessa’s paid-tier Schedule E pre-flight warned of no data “before Jul 1, 2026 or after Sep 15, 2026”, the first completeness check in either product; it reads only the first and last dates, and the second half is wrong, since the data runs to September 30.
The backfill ranked them the other way. Stessa rejected the gap statement on its header, so the file had to be converted to Stessa’s column order; the repair took 11 minutes, conversion included. Baselane mapped the raw file and imported it as-is, both Park rows present, in a few minutes. Item 15 covers this with the per-property P&L and the deposits figure; both tools score 1 on it.
Everyday work
Rent matching. Stessa’s mechanism is a Tenancy field on the imported bank row; set it and the lease ledger picks the payment up, one row at a time, category left for you to fill. Park’s $1,840 settled the prorated charge exactly. Whitcomb’s August 9 deposit of $1,725 did not resolve: no $75 late fee was ever generated despite the configured five-day, $75 rule, so the payment sits as an overpayment and the ledger says “0 late payments”. Score 1. On Baselane Core there is no tenant, unit or lease field on the row, because there is no tenant. Rent is the category Rents plus a property, by hand; the $1,725 can be split into $1,650 Rents and $75 Late Fees, a workaround, not matching. Park’s proration cannot be tested with nothing to fall short of. Score 0.
The personal charge. Both left the $86.40 Olive Garden line blank. Both have Owner Distributions under Transfers, two clicks, no property. Baselane also has a Hide button on every row. Score 2 each.
Rules and categories. Stessa auto-categorised most of the quarter at import: insurance, utilities, Home Depot, the locksmith, bank fees, the owner transfers. It got Shell Oil wrong three times and skipped it three times, left the card-side payment lines blank, and never assigned a property to anything. There are no rules anywhere, and editing one utility row did nothing to its twin. Score 1.
Baselane Core categorised 0 of 76 rows; AI categorisation is Smart. A Core rule can match only on account, and every imported row shares one account, so no useful rule can be written. Categorising one utility row suggested nothing for the other two. Score 0.
The books at the end
Both Schedule E reports were right on every row that carried a property. Stessa’s needed the $15 Manage month, paid October 17. It is a worksheet with one column per property, and the two usual failure points pass: line 16 Taxes $2,140 and $1,760, line 7 Cleaning and maintenance $270 and $270. Line 14 Repairs is $215 with the $3,480 correctly absent, line 12 Mortgage interest is the $1,217.34 from the one split payment, and line 3 Rents on the house is $2,090, Park’s $1,840 plus the $250 retained, deposits excluded. Fair rental days came out of the leases at 290 and 283. Line 18 Depreciation is $0 by design. The pre-flight flagged 63 rows not assigned to any property; the property filter is ignored and the date range defaults to last calendar year.
Baselane’s Schedule E is free on Core and is a monthly category table with a property filter, not a worksheet. The duplex shows Taxes 2,140, Cleaning & Maintenance 270, Repairs 215, Utilities 241, the $75 late fee and Mortgage interest 1,217, total 5,667. The house shows Rents 6,640, the $250 retained, Cleaning & Maintenance 270 and Taxes 1,760, total 4,860. Those sum to 10,527, the all-properties figure; principal and the $3,480 capex are excluded. There is no depreciation line at all.
The house rent figures differ because we left Feld’s two $2,400 rents unmatched in Stessa, by choice. The per-property report left them out, which is the caveat both tools share: only rows carrying a property reach a per-property report. Stessa’s guesses never assign one and it has no bulk assign; Baselane assigns nothing at all.
Who gets to see the books
Stessa’s collaborator invite is free on Essentials, despite an in-app Pro banner that reads as if it were not. The form is an email address and an optional message: no role, no permission level, no read-only choice. We sent no invite, so what a collaborator can do after accepting is untested. A free Tax Package report emails the year-end reports to a tax preparer, and every report exports to Excel. Score 1.
Baselane Core has no invite of any kind. Workspace settings › Members is a Smart upsell advertising limited and full access, more than Stessa offers, and not opened. An accountant on Core gets exports. Score 0.
What we could not test, named
In Stessa: the Cash Management account and everything priced on its APY; online rent collection, including auto-pay, reminders, the tenant portal and whether the late fee that never fired for us fires through it; receipt scanning past five a month; collaborator permissions after an invite is accepted; and the OFX import path, which would settle whether duplicate detection respects bank transaction IDs.
In Baselane: everything behind rent collection, which on Core means tenants, leases, deposit records, rent schedules, late-fee automation, the tenant ledger and the rent roll’s contents; property auto-tagging, which works through a Baselane account per property; the whole Smart tier, including AI categorisation, keyword and amount rules, the balance sheet, depreciation and team access; what Hide does to reports; and whether a tenant field appears on a transaction once rent collection is live.
Verdicts
Both trials ran on the free tiers, plus one month of Stessa Manage at $15 for the Schedule E item. Neither vendor knew a review was underway. No bank account was opened with either, and no bank was connected. We have no affiliate relationship with Stessa or Baselane as of publication; if that changes, this review will say so. This is a tools test, not tax advice; what is deductible, and when, is a question for a tax professional. The books we ran are downloadable if you want to check our work.
Update, October 26, 2026: four days after this review was published, we joined Baselane’s affiliate program, so the Baselane link in the verdict box above is now an affiliate link. It lands on Baselane’s page for its banking account rather than the free bookkeeping tier we tested, and Baselane’s partner terms say it pays us a one-time fee for referring a new Baselane banking customer, not for the free Core bookkeeping we reviewed. Whether that account must be funded, and how long after a click a signup counts, the terms do not say; we have asked (answered October 29, see below). We opened no Baselane Banking account during this test and still have not. Baselane is a financial technology company and is not an FDIC-insured bank. Banking services provided by Thread Bank, Member FDIC. The arrangement did not exist while the review was researched, scored or published, and nothing above has changed because of it: Baselane’s 16/32, the zero-of-76 categorisation finding and the verdict stand as written. We have no arrangement with Stessa; our application to its program is pending, and this note will say so if that changes.
Update, October 29, 2026: Baselane answered the two open questions. The fee is paid when a reader opens a Baselane Banking account that Baselane approves, within 30 days of clicking our link. Funding was not mentioned as a condition. Nothing else in this note changes.
Filed under: stessa · baselane · comparison · landlord · rental property · review