How to Automate Invoice Processing for Accounting Firms (Using Claude AI)

A walkthrough of building an AI invoice automation system for accounting firms using Claude and Replit. The system extracts vendor, amount, and due date from forwarded invoices, routes them for client approval via secure links, then automatically creates bills in QuickBooks. The presenter debugs real issues like email webhooks and OAuth integration throughout.
Chapters
Almost every step of your firm's bill pay process can be automated, and you can build the whole system yourself because right now it probably looks like this. Clients forward you 3 invoices. Someone on your team opens up each one, types the vendor, the amount, the due date into spreadsheet, perhaps categorizes it. Then you have to email the client for approval, wait, follow up again, pay the bills, and ultimately enter every single one into your bill pay software or where you pay it, and then your accounting software. Do that for every client you bill base for, and you've got a full-time job on your hands, or you can automate 90% And in fact, we're actually building that exact system right now for an accounting firm with about 100 clients. And in this video, I want to take you with me as I build one from scratch live. So we'll go from the bill landing in your inbox to your client approving it, to the record showing up in your accounting software, and all while taking security into account and without ever putting your client's data in danger. Now, before we get into the actual build, the first thing we need to do is to map out how the bill pay actually works. And this is a service a lot of firms already offer, right? You pay for your clients' vendors on their behalf. It's sticky, it's valuable work, and once a client has handed you their bills, they rarely want it back. On the surface, it seems like a simple enough task. Someone forwards you a bill and a few days later you pay it. But then when you're the one doing the work, it quickly becomes a lot more time intensive, right? First, there's the intake process where you have to get all the bills that need to be paid, which could be in certain cases hundreds, if not thousands a month across an entire They might arrive via email, through a form. They might drop in the file management system. And then once you get them, you have to pull all the data from it: the vendor, the amount, the due date, perhaps category classes. Next, you have to like aggregate all of that because you need the client approval before you actually go ahead and pay them. And only then you can actually make those payments. Perhaps you do it through a bank, through an API platform like Bill.com. And once all of that's done, you still have to go ahead and record it and push that back. into your accounting software of choice. So on its own, bill payment for a single client might be an hour or 2, 3, depending on how much they have to do. But imagine now you have hundreds, and if you have to keep following up with them for approvals, it can be a lot longer. Yet when you lay out the process like this, it's obvious that pretty much almost every step here can be automated except for one, which is like actually paying the bill, right? That's a high-stakes step in the process, which is why a person should always be The one pressing that button to make sure that's paid to the right person. However, when automated correctly, instead of hours, the bill payments should only take a few minutes. And that's exactly what we're building for one of the firms we work with, Ask Us Speedy. They have around 100 clients and they've been collecting bills through Airtable with a separate base per client. Now, if you've ever tried this method yourself, you can imagine it's like far from scalable, right? On top of that, they've been using some intake forms within the platform that are open to the public, which means everyone with a link could submit a bill on a client's behalf. And as you can imagine, that's neither safe nor efficient. So we fixed it, and I'm about to show you how. Now, the exciting part is that AI has made building tools like this more accessible than ever. I'm gonna be building this in Replit, our tool of choice, where I can describe what I want in plain English and the AI is gonna help me write the code. And we're starting with intake, which is arguably the step where security matters the most because getting something working and making it reliable and secure and maintainable long-term are 2 entirely different things. And this is where most often we see firms make their first mistakes, right? Either they collect bills from wherever clients happen to send them, so they end up scattered across emails, forwards, and attachments, and file management systems, or they create a form so everything finally lands in one place. But neither one actually kind of works entirely because the first option, the team's gonna spend hours digging through threads to find the information that they need, while on the second, You're going to be creating an even bigger problem than you're solving because as I said, anyone with a link can submit a bill on your client's behalf, and that's a big security issue. So while the idea behind the form kind of works, you need to make intake private, which means the bills only can come in one of two ways, either through the firm's dedicated forwarding address, or they have to go into a portal where they have to log in to be able to send stuff. There's no public link for anyone to find or no way for a stranger to slip through a fake bill into the queue. Once that's set up, this step can run completely on its own so that builds land in your system without anyone on your team touching them. Now let me take you with me as I build the automation for both those paths live. All right, so what you're looking here, it's Replit, is an AI-native app building platform that I will be using to develop this. Usually, as you can see here, not different from how AI tools work, there's a chat for you to start and this chat will start building The application I want. I find it useful to share as much context as I can about what I want to build upfront. Even if it's going to build these 5, 6, 7 different features, they might not be perfect. At least I want to make sure it kind of does the bulk of the work initially as much as we can. Another one helpful thing to do, sometimes it has plan mode. I don't see it available right here. Once we start building the app, it will. It can be helpful to just discuss this with OneAI. Say Claude or ChatGPT to come up with the first prompt to just dump it here. And that's exactly what I will do. So let's use ChatGPT this time. Just, just open here. So I'll just start with a mega prompt, right? I am building an application to automate the bill prep process of an accounting firm. I wanna make sure we have user authentication built in because this is a 2-sided portal. So there's gonna be users for the firm. There's gonna be users for the client as well. And there's going to be different users for the client. Specifically, for simplicity, let's start with a manager and a staff user for the client, meaning one of them will be submitting the bills and the other one is going to be the approver of the bills. I want to make sure we embed into the app also the ability that every client that we add creates a dedicated forwarded email address where I can get the client to forward emails into And then there will be an automation that will process those on a regular basis to then push it into the system for that specific client record. I also would want to have the ability that when those records come through, there's an AI feature that extracts the data from those invoices. For now, let's just say that that's going to be the vendor, the amount, and the date. Leave placeholders for potentially other items that we may also want to extract. There will also be an aggregated view for the client to see all the bills they have pending, and they should be able to bulk approve them after they've looked at the source documents. On the firm side, I want to make sure we have an ability to not only have an easy one-time link to send to the client so they don't have to log in, but we can still keep it safe and secure. And I want ability for us to approve the bills on their behalf, but have to attach evidence as part of it. Last but not least, once the client approves, I want to be able to send this data straight into QuickBooks. So I want an OAuth integration flow from QuickBooks that would allow me to sign into my QuickBooks account to connect it and then have each bill that is approved be created as a bill in that specific account that I have connected. Please create a prompt for me to input into an AI-native app building platform to get that started. So that was a lot. I'm sure it was, but that's the idea. Like you have a ton of things you will want to create and you just get it to create the first version of that prompt for you. Then I'll just be dropping this in Replit. And then from there, we will iterate and tweak until we're happy with it. This is a lot. I might not even be able to drop this now that I'm thinking about it or looking at this. So I might have to ask it to shorten the prompt quite a bit. And let the agent on the Replit side actually think through and come up with this additional detail. Let's see, maybe I can. So I'll just try. Actually, I can. It comes out in a different format. I'll just put this on power mode. There's a variety of agent modes you can use. Because this is the first shot, I'll just use max this time around. I will use the most powerful model and I'll say use Officer branding. That's it. All the rest of the text in the prompt, it's embedded into that TXT file. So let it run and come back when it's done, right? So after about 20 minutes, we have like a first version, at least something to see. It's funny, it seems like it interpreted it as an app that other firms would build. This happens to be an internal tool. So I see that it had like a website for people to sign up and stuff. I might ask it to remove that later on, but it's still working. So I'll let it continue to work and for it to let me know once it's done. But at least we're starting to see signs that it's making progress and Getting it done. Okay, so here's what it suggests. You know, the bill pay is already done. The API web app, verify the passwordless approval flow. You sign up, you sign in, upload, etc. One-time approval link that expires in 24 to 48 hours with an email one-time password. QuickBooks OAuth per client. It does ask me for some API keys to send the outbound emails as well as to connect QuickBooks. But I think we are ready here to preview this app and see how far it actually got and see what feedback we would have for it. Let's just say I want to get started. I can see here I can continue with Google. This is development mode, actually. How about I rather publish it? We're going to publish it instead and test it in production. I think that would be more, more productive to do. It's worth mentioning, as you can see here, that the Replit app has some deployment and hosting features that will provision, do some security checks, and ultimately enable you to publish and make this available for other people. To see any leads, although usually this also can be done in a private setting with a password protected login or with users, which we're going to do. And you can also make this just internal. So it's just an internal tool, which is actually most of the work we do here at Opsor, just building internal tools for firms. All right. So the project is live and let's go ahead and test. So I'm going to open this up on a separate tab and see if we can see at least the initial authorization flow and what that looks like, as well as What does creating a dedicated email folder look like? And if I follow the build, will that actually work? Let's see. So I'll just click on Get Started. Looks like I can just sign in with Google in this instance. So I'll just go continue with Google. Let's just use my own email, business email address. So it's asking me to set up my firm. Say Upserve. Now I can see the firm view. I'm assuming here that I would want to onboard a client. And let's just test client number 1 whose email is— I'll use my personal one. And let's just say I have another email that's going to be the bill approver. He's asking me for 3 email addresses. That's something I don't actually like. What if I only have one person that's going to do it all? That might be some feedback I may have for it. But it's suggesting now that this is the inbox I can use to forward Emails into— let me ask a question to the agent here briefly. Do I need to enable what's the vendor it said it's going to use, Recent, before the forwarding email address works? This is something I like to do oftentimes if you're just chatting with it. There is currently a free version that takes no credits, just when it's simple questions or simple tweaks. It's actually sponsored by ChatGPT. And it might not be free by the time you're looking at this, by the way. Okay. It's funny enough. It's actually telling me here that to actually receive the forwarded invoices, you'll need to configure an inbound email provider and connect it to the app's webhook. So even though I have an email generating the email for me, it wouldn't be processed. I'm just going to ask it to please enable this inbound email provider and/or suggest a specific one. To enable this feature. In the meantime, I would be curious to log in as a client and see what their experience looks like, right? Because I already have a client here, number 1, associated with this specific email address. Theory, if this was produced correctly, I should be able to log in with that email address or have received an email login. So let me check that. I have not received an email yet, and I know it's telling me that it's going to, it's going to need the recent vendor. So I'm going to go ahead and look for that, log into that vendor that it already built in. It's called Resend, and I'm going to be incorporating it in. Just to showcase that process briefly here, Resend, it's email for developers to deliver transaction and marketing emails at scale. This is a decision that Replit made. We happen to be familiar with Resend, and I think it's a good decision to use it. I'm just going to go ahead and log in, create an API key, then come back to Replit. I happen to know it has some secret vaults where I can edit and put in this specific key, which is the safe and best way to keep the keys in this system. But I noticed it doesn't have the recent yet, so I'll just ask it. Before you do that, can you please add a, the recent API key, QuickBooks keys as well? To the secrets vault within Replit. I wanna make sure I add them there and that all of that is stored safely. Let's execute on that before we add some additional complexity and we'll just keep iterating through. All right. So as you can see here that it's telling me to submit the API key in a field that it's hidden. I'll just hit submit. With that, I should be able to see the secrets come in on the internal side. And here I can see the recent API key. I'll just say here, do the same for QBO. And I happen to know already how to get the QuickBooks API keys, but it should be a straightforward process once you go to intuit.developer.com, sign in with your current credentials, and there's just some questions you need to answer to actually get them. I'll just be using some sandbox and let me actually show that. So if you go to intuit.developer.com at any point, you should be able to create a new app. And within that app, effectively have the ability to get the API keys you want. There's some development keys as well as some production keys. I'm just going to be using the development keys for demonstration purposes here. You would have to go through a process of answering certain questions to be able to actually make the production version. Possible, which is some app details and some kind of compliance questions as well. But for the sake of demonstration here, I'm going to be opening this. And if I'm able to make this work, by the way, it then means that I'll just have to switch the keys from development to production. And then this should work with QuickBooks. The user within the app should be able to sign into QuickBooks and connect it that way. So I'll submit those 2 keys. I'll go back to the former prompt. I told it enabling the inbound email feature. Which is going to be important in this instance for us to get done. All right. So I've just asked it a little bit more clearly and directly to enable that inbound email provider, which I've already given it provider that should be able to do that. And I'll just ask it to go and wait some time here. Now it's prompted me to give it some sort of like subdomain. I actually want to ask it more directly. Is there a simpler way to have a receiving address that needs no custom domain? And again, you can kind of chat back and forth with it. It might push you in a specific direction and you might be like, well, I wouldn't be entirely sure how to execute on that. Walk me through it, or are there easier options? So now it's walking me through, hey, recent emails receiving. Let's actually see if that exists. Sometimes again, it makes things up. But if I go to email, if I go to receiving, I can— no received email. Yes, start receiving emails with a predefined address. Anything, and then this, I can copy this and say this is kind of what I'm seeing. I suspect it's going to have to go back and redo the way it built the internal email address that is created. Let's see if that's part of how it's going to think through solving this problem in a way that's easier. And again, we'll probably go through the effort of making this a custom domain name if I was actually building this for, for a firm. For the purpose of demonstration here, just trying to keep it As simple as I can. As you can see, as I said, it's gonna make sure that client aliases are now based on these new ones as well as gonna recreate, make sure that moving forward new clients have this too. All right, so it's suggesting here that as it configured that already, so existing and new clients moving forward are gonna use that address. There's a, it's telling me to create a webhook in recent webhooks. Let's see again, it's kind of walking me through the interface of recent. In this case, it's telling me go to webhooks here. Create a new one and create this specific endpoint. I'll just go ahead and follow its instructions. Email received specifically is the one that I would care about. I'm gonna add that in. Then it is suggesting that there's gonna be a signing secret that I can see right here that effectively is different from the API key, but I need to enter it here for it to have it available. Say that that's how we do it. Let's wait.
All right. Now with that signing secret, it's telling me perfect. This published site is still running on the older build. Now the setup is ready to republish. You have this receiving domain name. You gave me the keys that you needed to do. We just need to republish the app. Click on republish, wait, and let's actually then test this email flow. All right. So the app is published now. Let's go ahead and refresh to see the latest version. So you can see that now this email is different and it ends in resent. I'm going to copy it. So it kind of went through an Updated it for the client that already had. And I'm going to go ahead and look for the most recent invoice in my inbox. Let's go. Okay, here it is. One specific invoice for Paperform, which we pay for. I'm going to forward this. It has it in PDF. I'm just going to forward that to the email that I was given, my accounting firm. And based on what they told me, that's about everything I should do. And I should see the bill come up here. It might take some time. I'll actually ask that question. I just forwarded an invoice. How long should it take? How often do you process this inboxes? Let's go to the free mode because that's not really an edit. Make sure I save all my credits. In the meantime, we can perhaps just refresh the page because I know webhooks are supposed to work immediately, but it's still not coming through. That might be something we need to work through. In the meantime, you know what I want to do? Let's try adding a new client. Client 2. So I wonder that now that the email stuff is built in, shouldn't I actually receive the outbound email? It's telling me that alster.app is not verified yet. Please verify your domain name on recent. So there's still some additional steps that need to be done here. I wonder if that's— if I still have a way to test it and make sure that this would work on the current version. Let's see what Rapid says as well. It's suggesting that 2 incoming webhook attempts in the live logs. But neither came in. So it looks as if we've seen the data, but it's not sending it to the app just yet. 401 would be an error. Here suggesting we can investigate why Reason accepts the webhook but rejects the email lookup. It's likely because of what he mentioned of like verifying the email inbox. Let's see if we can go through that process. So as you can see here, Replit is suggesting and kind of working with the agent to understand the issue. I created an API key first. That only had sending access, and I need to update that to full access. So I'm going to go ahead and save that to make sure it now knows that that's the case. Just add an additional comment. I have adjusted the access to the API key. Can you try to reprocess the email I sent and see if it successfully lands on the bills page for that client? Let's see. I'm just going to hit submit and wait. All right. So as you can see here, it's suggesting that the updated key can now read the inbox. I forwarded one. I found the forwarded invoice. Retry the original message. So it's now retrying on its own based on what I sent, and let's see if it figures it out. All right, so we're here again and it's suggesting, hey, my friend, I actually be able to fix this. Please publish it. You don't need to reforward the invoice again. The original is still recent. I can retry after you publish it again. So let's go ahead and republish. And you'll notice that this is an iterative process, right? It's not going to get it entirely right the first time. You can kind of work with it to solve issues as we go. We'll publish it, test it one more time, and see if it works. All right, so the app has been republished. Let's go ahead and update. If it doesn't show up, I might have to ask the agent again, just like, hey, I've republished, retry the pending forwarded email. So I might have to trigger some things internally there, try to make it work. If we see that working, then I'll send one fresh again and we'll be officially verified that this particular step, it's working as expected. All right, we successfully processed the forwarded email. As you can see, this is Paperform for $59. So if I go to my inbox or to the app here and I refresh, and I should be able to see this bill that needs review. For the sake of testing, let's actually go ahead and try one more email that is fresh and that didn't have to retrigger. Let's see what else I pay for. Pay for soon. So let's see if we can find— do I get soon receipts? I don't think I do. Okay, that should be an interesting one. This is our YouTube team. So they sent us this invoice. Here it is, $4,000. It's actually forwarded to the second inbox. And I'm just going to forward that. Boom. Go back to the app. Here we have paper form for client number 1. Then we should see the second vendor come up for client number 2. Within a few minutes, let me see if the agent on the Replit side at least received it. Let's not cheat here. Oh, there you go. It's processing. Actually, I like that. I like that it's showing me that it's processing it. You can now see that Grow Pro Social, the firm we use, video editing comes up here. The date of the invoice date that that is exactly correct. And here is now suggesting needs review. So we have successfully created a portal that both the firm and the client can sign up for, and that when Each client will receive a specific email address that when forwarded invoices or bills into it, it will show up here for the firm to see.
Now, while anyone can build tools and automations like these, it's easy to see why not everyone may want to, right? And I get it, you don't have hours to spend time on this, and you might not want to DIY something with your client's data on the line. If you don't want to build or maintain these tools and automations yourself, you can book a call with my team. Using the link below. We've helped thousands of accounting firms get their capacity back. So if you want to see exactly how automation like these and more could help you do the same, just book a call using the link in the description. But either way, getting the bill into your system is just a start, right? Because now someone has to actually read it, and that's the data entry you're paying someone to do almost every day, right? Opening up an invoice, typing the vendor, the amount, the due date into a spreadsheet one by one. By one. Now, to get this off of your employees' hands, we need to automate 2 things. One is the extraction, right? We need to set it up so that Claude or AI can read the invoice, pull out the vendor, the amount, the due date, and other details. That way, all the staff has to do is to confirm that the details are correct. And number 2, we have aggregation. This is where you add up every pending bill for each client. And by automating this, you remove the need for anyone to build out this by hand. So, and there's a good reason why we set these up in the way we do. If, like the firm we're working with, you're using a separate Airtable base for a client, 100 of them means 100 different things to maintain. Well, every new client means building another one. So in either case, the only way to keep scaling was to hire more people to do all of this. Well, automating removes some of the need for more headcount. Let me show you what I mean.
Now, technically, The agent already did a pretty good job, as you saw, about extracting the specific details of both vendor and even invoice number and the vendor name. So I can come here and sort of like easily adjust that. I haven't connected QuickBooks yet, and that's something we'll be doing a little bit later. But I like the interface it was able to come up with. It looks very similar to like DAX and some of these other tools. And you can see here that I could retry the extraction if I see it's Failed, or I can just simply submit for approval. I'd be curious to see how I can go about, in this case, I'm on the— oh, look at that. This is how I can switch, at least preview the version the client will see. So if I was, as I understand it, sorry, that's not true, but I'm gonna ask that from the agent. Can you create a view where I can preview what the client will see on their end? Add that small little feature so we can iterate a little bit faster through and understand better what the client experience is gonna look like. In the meantime, I'll just look for one or two more invoices to send directly through the email address. So we have a few to look at. So I sent a couple more invoices. You can see here from a specific freelancer, this is one we worked with last year. And again, you can see here very easily the ability to click, see the amount, see the specific file that comes up here with the detail if I wanted to understand where all of that comes from. So looking pretty good, working pretty well. And these are ones that I should be able to just for the sake of this submit for approval, pending approval. Let's do the same here. There's an error coming up. I can just take a screenshot and send it to the agent to understand why that is because it does seem to be working and I see it pending for approval now. I happen to be in the client view. This is a little strange because I didn't see the option to switch, but right now it looks like I'm already seeing it as client number 2, even though I asked it to build the client preview version. It does seem like it has it. And I can see here, for example, email has no supported attachment. It's funny because I sent it an email that came from Xero, but unfortunately Xero has a link to the invoice and not an attachment. I might want to iterate here to actually tell it, hey, there might not be an attachment. It might be in a link that you have to click through to download. For the sake of it, however, let's see how I can go ahead and create multiple bills and generate an approval link. So the idea here is that I'll be able to create a link for the client to now come in within the next 48 hours, just for security reasons, without having to log in, just to make it super easy for them, have a link for them to see. So it looks like perhaps the prompt of previewing wasn't necessary, but here's the idea. Hey, Mr. Client, you have these amount of bills to approve. Just to verify it's you, security purposes, we're going to send an email to your inbox. Looks like we have some email things to still configure there, which I find it interesting. Let me send that to the agent because technically we should already have some of the email things built in. But at least this shows you like what the client experience is supposed to look like. You bulk select the bills, send it to the client for approval. It will be a simple link that they can verify who they are and then go ahead and approve their bills. Let's keep going through the process.
And FYI, if you want to start using Klodian in your firm today, we put together a free Cloud Skills Starter Pack that you can grab using the link in the description. Now we know exactly what each client owes and the total is ready to go, which brings us to step number 4, which is the client approval. This is where most firms get stuck in a loop. You email the client, we're about to pay these bills, it's $5,000. Okay. And then you wait and you follow up and then you wait some more and all of the due dates get closer because, you know, just having the total ready doesn't help if the summary is sitting at red. In someone's inbox. In fact, every bill you can't pay on time, you're waiting on a reply on, and is a late fee or whatever, your clients might blame you on it because you're supposed to be doing their bill pay. So even if it's because of them, you are responsible. Instead, this system sends the client the summary automatically and their approval comes straight into the system. We could even make it that it's just, say, one simple click. And while that alone is useful, this automation also fixes another issue, which is trust, right? Your client sees every bill, every vendor. the file or source document of everything, the exact total before every single dollar moves, and they approve. So there's never like room for mistakes or confusion over who saw or approved what. Let me show you how this comes together.
So I'm now here on the client's view and you can see that I'm actually able to connect workflows. Let's actually test if that specific feature is working correctly because it should prompt me to go into— interestingly enough, it's not, but we might have To do some changes there to make it work. And again, whenever in doubt, just ask the agent. That's what I'm about to do. I suspect I know the answer because it's kind of hinted at it there in the tool. Let me go back because I did saw a specific error. There you go. Then this, and this is a redirect URI. It's the settings within the Intuit Developer Platform that I might have to change. So once you're done, help me troubleshoot this specific error or to test the QuickBooks integration in development. Send that through. In the meantime, again, just because we've done this work, I understand at least where I'll have to go to make some of the adjustments it is asking of me. And specifically, every time you create an app, there should be a specific URL you redirect people to. I know this is where this exists, and we might want to change this to a specific one that the app has available. Not to get fancy with you, but this is just a setting that needs to be correct and agree between the platform and the integration that we built with QuickBooks. For the sake of testing and finalizing the client approval flow, I'll be curious to see too. I got this message when logging in as a client and we see if it landed recent just for me to showcase what the client process Would be. And I think we can even go to WeSend directly and see if we can find that email laying there somewhere. I don't see it, so I'll just wait for the agent to give me an answer there to see if we can move that forward and showcase what that works, then make the QuickBooks integration work. And at least we should have a not perfect but functional app that automates certain parts of the process. All right, so check this out. This is what the user experience would look like. I'll probably make some adjustments, but it would allow the client to see the document behind each bill, understand what they're actually approving, open it in a new tab if they wanted, and just approve it for you. Click review, submit their decisions, see like a summary, and that would be it. So pretty simple, intuitive experience for the client. Actually, for the client we're building this for, for the firm we're building this for, they also want like a graph that shows them what impact those approval— bill approvals will have on their cash position, almost like a little graph to see, hey, if you pay this bill, this is how much cash you'll have. Perhaps you won't be able to pay payroll and be more strategic around paying bills, but at least as a first version that came up with out of the kind of big first prompt, I think it's a good starting point.
And that brings us to step 5 and 6, which is paying the bill and recording. This is where the one manual step fits Right? Because even though AI is very useful, you can't hand them the pay button to the software, at least not yet. And you really don't have to. Like, making payments should only take a click, and with all the legwork that automations have already done, should be an easy step. And when the alternative is risking sending clients' money to the wrong vendor, manually clicking a button a few times is the obvious choice. Now, once the payment has been made, all that's left is to record it in your accounting software, QuickBooks Zero, whatever it might be for you. And just like everything else with covered already. This is another step that can be automated so you don't have to pay the bill and then report in your tax software and then report it in your system and perhaps and then notify the client. We can just make sure you only have to do the first and then the rest is done automatically for you. Let me show you how to set this up.
As we said, last thing I want to verify is the QuickBooks integration. So let's fix the QuickBooks integration. Seems like an error comes from a redirect URI, I'm happy to edit to what it needs to be. So as long as we now edit or look into and make that integration work, I think we should have a functional app, especially pretty good for a few hours of work. It's going to do the work there to understand what is the exact URI I need so I can make that adjustment. All right, so it's given me a couple of things here, specifically that the redirect URI should be this specific link. So I should be able to come here at this URI. Make sure I save that. If you're clicking Connect to QuickBooks from the published app, also add this. And I am, so I'm going to add that too. I'm going to save this, keep using the app, return to the portal, and click QuickBooks again to start a fresh attempt. You don't need to republish the app just yet. Perfect. So let's go ahead and open up the app once again. In this case, it's saying that sync failed. Obvious reason, we don't have it connected just yet. Let's try connecting it to the first client here. So if I click on Connect QuickBooks, now I am able to select the company. Let's select this sandbox company as an example, connect, and that should be a pretty simple 2-step process to connect and link a client to one of their QuickBooks accounts. So in this instance, this particular client hasn't approved yet. So if we go through the workflow again of saying, hey, Mr. Client, I'm going to generate this link, send it your way so that you can approve. We verify that that works. Let me verify with the agent before I approve. I connected QuickBooks to client number one. What's the behavior I should expect when the client approves? It's the bill going to be created here you go right away. Can you verify and confirm what's the behavior to expect? I successfully connected it, and I'm approving one bill as we speak. Let me ask this as well. Before you do the above, do give me the verification code. You should have received just now for me to approve. That's the client. And again, this is just because I haven't completely fixed the outbound. It seems to require some domain verifications. But in practice, this should be something that the client should receive that email code every time to be able to log in and approve bills for your firm. So we have this code. I'll tell it now. Perfect. Now answer the above. I'm going to approve as the client. Pretty easy process here. Perfect. So it's saying yes, automatically starts a QuickBooks sync. Supposedly what should happen here, I verify your actual test. So in this client, there should already be a bill successfully recorded. I'll actually ask it, can you show me or give me the link to it, or is that link anywhere available? The app is what it's suggesting is that, hey, client number 1 already accepted or approved that specific bill, and because they have QuickBooks connected, then in theory this should have worked. It's suggesting that sync failed, but the agent is telling me that that worked. Okay, looks like it needs an expense account. I would need to retry. Okay, it hasn't been created yet. If I go to— can you push a bill to confirm you can? We can work on perfecting this process later. Just want to confirm the QuickBooks integration for now. I think the challenge is that there's no expense account selected. Technically, the expense account should vary by bill. That's just a failure of design there that, that should, and that should certainly get fixed. So it didn't put that into consideration, but it's suggesting in this case that actually find a suitable expense account. That's part of what I would iterate here in this process to say, hey, actually every time you extract the data, I also want you to come up with the appropriate category or expense account for the bill you're looking at based on what you know about this specific client's Shopify account. While it does this, I'm curious if I can retry that sync. This wouldn't be a shot of accounts. There's certainly some things to fix. I do want to just confirm at least the QuickBooks integration is there because I do expect that we'll have to work through this. Fastest test, open up the form bill as the firm expense account, save, and retry the sync. Okay, let's just quickly see. That's exactly what I just did. Vendor paper from Western not found in QuickBooks. Pick the matching vendor. So that's probably part of what I'm going to ask it here to make sure that it finds or creates that vendor. Because in this case, it looks like it's failing because there's no specific vendor. All right, make sure that you either create the vendor if it doesn't exist or you find the appropriate vendor if it's already created on that account. Build that fix and then I'll come back here to just verify that the sync was done successfully. Successfully and we'll have a working app MVP version. All right, so we've been able to now republish the app. I kind of asked of it to make sure it implemented the fix and looks like it was able to ensure the QuickBooks integration is working as expected. I actually came in here and you click, click, just click on Resync or Try Resync. And I can see here that it suggested the sync went through successfully and the QuickBooks bill 163 163 was created. Funny enough, I don't find like a link to it. I think that would be helpful, but I'll ask the agent directly. Oh, let's see if I can go. It's saying synced. Yeah, it's really a bummer that it doesn't give me the link directly. I haven't asked that of him, so I'm just gonna tell her, hey, just so I can verify for the YouTube haters, can you share the invoice 163 for link? For the paper form bill that just went through the QBO integration, just want to make sure we can see that that actually landed on QuickBooks.
And after that, I think we're going to call this app functional—not perfect, but functional. Right? So the agent is done and telling me, "Hey, here's the URL." Funny enough, should be easy to construct because, as you can see there below, it's just intuit.com/app/bill and then. Transaction ID and the specific ID of that client. Let's see if I open that up here on a separate page, if I am able to confirm if the Sandbox Company One has the paper form $59 bill actually available. Funny enough, I don't see anything. I wonder if I might have selected the wrong account. So let me actually go back because. It's possible that it is on the other Samba company. We just have 2 here for testing purposes. I cannot recall which one it is, but let's see. Interestingly enough, we might have some other things to troubleshoot before we actually wrap up. I'll ask the agent again, like, can you confirm what's the name of the QuickBooks account that's connected? Because I just don't recall. Exactly what I connected. Perhaps I connected my actual QuickBooks account, not the sandbox one. Let me troubleshoot this offline and see where this is actually landing. Sandbox Company US 1. So it is that first one that I opened. There you go. $59 invoice 381178. Offset the vendor is Paper Forms. For some reason this wasn't showing up earlier. Or here we got it. It categorizes as rent or lease. It's probably a pretty bad category, but this is a dummy account, so there's probably not a good account to select anyways. And I think that might have been the one I actually set up in the account. So ignore that small detail. Ultimately, again, I'll just— this is just for us for demonstration purposes. But we have, as I said, not a perfect DAG, but a functional one. And that's how you safely automate every step of your firm's bill pay process except Click and pay. But automated bill pay is just one workflow. You know, most firms have several others just like it eating up hours every single week, and yet they have no idea how automation and AI and tools can cut it all down for them. So if you want to see 5 insane cloud use cases for accounting firms right now, feel free to watch this video next. I'll see you there.
More from Isaac

This Boring AI Automation Could Save Your Accounting Firm 40 hours (But most ignore it)

How to Build AI Systems With Claude (So Your Accounting Firm Runs Without You)









