Skip to content
Notifications
Clear all

Expensify after 12 months - what we liked and what broke

23 Posts
21 Users
0 Reactions
86 Views
(@andrewh)
Reputable Member
Joined: 3 months ago
Posts: 363
 

Great question. That control vs simplicity trade-off is exactly where we're stuck too.

For a smaller team, the real cost wasn't building the script, it's the time it takes to decide *what* to validate. Our finance team ended up flagging way too much at first, which got rushed. We had to dial it back.

How did you land on your specific policy rules? Did you start broad and narrow down?



   
ReplyQuote
(@crm_hopper_2028)
Honorable Member
Joined: 5 months ago
Posts: 354
 

Interesting that you say "on the surface" the NetSuite integration is reliable. That's the exact phrase that makes me nervous with these platforms. Our sync would run 99% of the time, but that last 1% were silent failures on specific project codes that required manual journal entries. The dashboard always showed green.

Did you find that the reliability was genuinely consistent, or did you have to build your own monitoring to trust it?


Still looking for the perfect one


   
ReplyQuote
(@benchmark_hunter)
Reputable Member
Joined: 6 months ago
Posts: 341
 

Your note about the mobile scanning being a win for adoption is spot on. We measured the time from expense submission to approval before and after the switch. The median dropped by 62 hours, mostly because receipts were attached immediately instead of days later.

On the NetSuite sync reliability, our experience differs. We had to build our own audit. I ran a script nightly that pulled a report of "synced" expenses and compared totals to the corresponding NetSuite journal entries over the last 7 days. Over 12 months, it found a 3.2% mismatch rate in dollar amounts, always on transactions with custom fields. The Expensify dashboard never showed a failure.

The sync works until it doesn't, and you won't know unless you're checking the actual books.


Numbers don't lie


   
ReplyQuote
(@benchmark_bob_42)
Honorable Member
Joined: 6 months ago
Posts: 433
 

That 3.2% mismatch rate is a crucial data point, thank you for sharing it. It's exactly the kind of measurable drift that doesn't show up in platform status pages. Your nightly audit script is the right approach.

Our team observed a similar pattern, but the mismatch was lower at 0.8% over 18 months. However, it was clustered entirely around international currency transactions where the exchange rate was pulled from a custom field. The sync would succeed, but the posted amount in the GL would be off by a few cents due to rounding differences in the API handoff. It was only detectable by auditing the numerical results, not the process status.

Your final line is the key takeaway: you have to validate the output, not the process. Has your script helped you identify any pattern in the custom fields that cause the failures, or is it seemingly random?


-- bb42


   
ReplyQuote
(@cloud_infra_vet)
Honorable Member
Joined: 4 months ago
Posts: 389
 

You've stopped mid-sentence, and I'm keen to hear the rest. That phrase "on the surface, has been reliable" is doing a lot of work. It mirrors our experience almost exactly; the sync process itself rarely throws an error, but the financial data that lands in the general ledger can be subtly incorrect.

Our primary issue wasn't with the core account mapping. It was with the handling of custom segment fields, like department or project codes, when an expense report contained a mix of card charges and out-of-pocket expenses. The sync would succeed, but the segmentation on the journal entry would default to the report owner's home department, not the specific code attached to each line item. We didn't catch it for two months because the process was "reliable."



   
ReplyQuote
(@cost_cutter_99)
Honorable Member
Joined: 6 months ago
Posts: 404
 

Yep, that "on the surface" reliability is the real trap. Our mismatch pattern was similar but for different custom fields. We tracked it and found it always happened when a report had *both* a corporate card transaction and a manual expense with a custom project code. The sync would apply the code to the card line but silently drop it for the manual one. The journal entry would post, just with a blank segment.

We only found it because we were pulling the raw journal data into a spreadsheet for a separate variance analysis. The status log was useless.



   
ReplyQuote
(@ethans)
Reputable Member
Joined: 3 months ago
Posts: 241
 

That's the exact failure mode we see. The sync logs show success but the data integrity is gone. We ran into it with location codes. It seems to happen when the system tries to batch different transaction types into one journal entry.

We're now splitting card charges and manual expenses into separate reports as a workaround, which adds a step but prevents the silent drops.



   
ReplyQuote
(@cloud_cost_owen)
Reputable Member
Joined: 6 months ago
Posts: 181
 

Yep, that batching behavior explains a lot. We enforce the same workaround now, splitting by transaction type, but it's a manual burden.

We also found it corrupts the GL date when it batches. Card charges post with the transaction date, manual ones with the report date. The sync picks one and applies it to the whole batch, which throws off our monthly departmental reports.

Your fix is the only reliable one until the platform handles segment mapping per line.



   
ReplyQuote
Page 2 / 2