Gusto's engineering blog covers payroll software engineering, Rails and Sidekiq at scale, and how the ACH payment system works.
Commenters recommend its multi-part series on how ACH works as a clear explanation, and cite it for Gusto's Rails monolith experience.
As described at http://engineering.gusto.com/how-ach-works-a-developer-perspective-part-3/ , ACH has called itself a 'next-day' settlement system yet funds transferred on a Thursday may not be available until the next Wednesday (6 days later) since they leave several days of buffer in case of returns and do not count weekends or holidays. And that's only if the transfer is done early in the day. If it's the evening, it could take 7 days.
Unless they changed something else, changing from so-called 'next-day' to 'same-day' would only reduce that by 1 day from 6 or 7 days to 5 or 6 days, which isn't really that significant and certainly isn't what people think of when they see 'same-day'.
It says "for transactions that can be initiated before 2:45 PM ET on business days (not on weekends or holidays)" so it's still broken with several days of delay, but there is a line that says "RDFIs will be mandated to make funds available from same day ACH credits (such as payroll Direct Deposits) to their depositors by 5:00 PM at the RDFI's local time." Does that require them to drop the return buffer? That could at least cut it down to only 2 or 3 days delay.
If it does cut the delay in half, that's a mixed blessing since it reduces the pressure to develop a better protocol or even change ACH implementations to reduce the delay to a few minutes. It's just a series of 3 requests and 3 responses - even with processing, that shouldn't take more than a few minutes.
And if they added…
It's a fair question, but in fairness to Carta, until recently, there have been ~zero commercial or open source solutions to building application authorization (beyond limited helper libraries or things like Active Directory, which solve only a portion of the problem). Developers have typically figured out the models on their own and implemented them in application code with IF statements, etc. and/or by building separate authorization services. Other publicly documented examples include teams at Slack (https://slack.engineering/role-management-at-slack/) and Gusto (https://engineering.gusto.com/layering-authorization-into-a-web-application/)
OPA is one solution that's emerged in recent years. The author describes his team's point of view after evaluating it for their purposes.
Oso (https://www.osohq.com/) is a framework for application authorization. Disclosure: I'm a cofounder. Based on the post, the Carta team started their work in 2019, but we only open sourced Oso mid-2020, so they wouldn't have known about it.
And in the last few months, a few other companies have announced offerings to address this problem too.
So it's understandable why Carta chose to build. Now/soon other teams like them should have more options to choose from when they encounter similar challenges too.
I read this article, the previous one, and this blog post that explains ACH: https://engineering.gusto.com/how-ach-works-a-developer-perspective-part-1/
This is such a fun and interesting rabbit hole. And now I get how the whole thing worked from a computing perspective. I'm now just confused as to why the scam broke down the way it did. From my understanding, it seems that Pioneer was going to freeze his account (and they did). So in order to fix that issue, he temporarily diverted funds to his Pioneer account, settle debts(?), and continue trying to get money to cover the money he now owed to Cachet. But that doesn't make sense, does it? Because this fraud was going to be detected instantly (most likely) or ~3 days later. But that is nowhere near enough time to settle debts with Pioneer and get enough money to cover the Cachet debt.
It seems to me like it was an extremely long Hail Mary that was likely never ever going to be successful.
Gusto | Software Engineers, Product Managers, and Product Designers [Senior Levels] | SF or Denver | Full-Time | ONSITE
Gusto’s mission is to create a world where work empowers a better life. We are making the most complicated, impersonal business tasks simple and personal. Imagine payroll that brings peace of mind, HR that transforms work into a community, and benefits that help people plan for a better future. Our small business customers truly love our product and we think you’ll love building it. Come join us in San Francisco or Denver and help serve over 60,000 businesses across the country.
In case you want some more technical details, here's a link to our engineering blog: https://engineering.gusto.com/
Apply here: https://grnh.se/0cagm28b1
Or feel free to email me directly! I’m john.kempe@gusto.com.
"... the ACH system never provides positive confirmation that an ACH debit has gone through successfully. The only response an ACH originator may get is one notifying them of a return. Because of this 'no news is good news' policy, it is wise for originators of ACH debits to wait for 3 additional business days of 'no news' to ship their product to the customer. Though the ACH system is described as a next-day settlement system, in practice, it is not because of this."[1]
So your bank is being optimistic and giving you a credit, assuming that no return will happen. A pessimistic or cautious bank would really have to wait several business days to ensure no returns happen before crediting your account.
[1]: https://engineering.gusto.com/how-ach-works-a-developer-perspective-part-3/
> But how exactly does an ACH transfer work?
If you want this from a developer perspective, the subject is discussed in great detail in the following blog post series.
How ACH works: A developer perspective - Part 1 => http://engineering.gusto.com/how-ach-works-a-developer-perspective-part-1/
How ACH works: A developer perspective - Part 2 => http://engineering.gusto.com/how-ach-works-a-developer-perspective-part-2/
How ACH works: A developer perspective - Part 3 =>
http://engineering.gusto.com/how-ach-works-a-developer-perspective-part-3/
How ACH works: A developer perspective - Part 4 => http://engineering.gusto.com/how-ach-works-a-developer-perspective-part-4/
and
HN Meta Discussion : https://news.ycombinator.com/item?id=7636066