Log Authorize.Net payments to QuickBooks and a reconciliation sheet
Every settled Authorize.Net capture lands in QuickBooks as a sales receipt and in a Google Sheet so finance can reconcile the two systems automatically.
Whenever Authorize.Net captures a new payment (webhook: net.authorize.payment.authcapture.created), sync it deterministically into QuickBooks Online and log a reconciliation row in Google Sheets. This event fires for both one-shot captures and successful recurring subscription charges, and I want to handle both the same way.
Guardrails before doing any work: skip transactions whose testRequest flag is true so sandbox traffic never touches the books, and dedupe on the Authorize.Net transId so webhook retries or duplicate deliveries never double-book revenue. The transId is unique and immutable per transaction, so it's the right idempotency key. If a sales receipt already exists for this transId (either recorded in the reconciliation sheet or discoverable via QuickBooks), stop and do nothing.
Step 1: enrich the webhook. Use Authorize.Net Get Transaction Details on the incoming transId to pull the payer's email, first/last name, settled amount, and card summary (card type and last four digits). The webhook payload itself is thin; Get Transaction Details is where the actual customer and card info live.
Step 2: resolve the customer in QuickBooks. Use QuickBooks Query Entities with a SQL-like query against Customer, matching on the payer's email (for example: SELECT * FROM Customer WHERE PrimaryEmailAddr = '<email>'). If exactly one customer comes back, use them. If no customer matches, fall back to Create Customer with DisplayName built from the payer's name and PrimaryEmailAddr set to the Authorize.Net email, then use the newly created customer. If more than one customer matches the email (rare), pick the most recently updated active one.
Step 3: book the revenue. Use QuickBooks Create Sales Receipt against the matched customer with a single line item for the captured amount, and put the Authorize.Net transId into PaymentRefNum and PrivateNote so finance can search either field to trace the charge. Use TxnDate matching the Authorize.Net settlement date.
Step 4: log for reconciliation. Append a row to the reconciliation Google Sheet using Append Values, with columns in this order: date (Authorize.Net settlement date), transId, customer name, amount, card last four, and the QuickBooks sales receipt id returned from step 3. This is the tie-out finance uses to reconcile Authorize.Net settlement batches against QuickBooks revenue.
If any step fails after the sales receipt is created (for example, the sheet append), still surface the sales receipt id so finance can reconcile manually; do not roll back the receipt. If Get Transaction Details or the customer lookup fails, do not create a sales receipt.
What does this prompt do?
- Listens for every settled Authorize.Net capture, including recurring subscription charges, and pulls the payer's email, amount, and card summary.
- Finds the matching QuickBooks customer by email, or creates a new customer record on the fly if this is their first payment.
- Books a QuickBooks sales receipt against that customer for the exact captured amount and references the Authorize.Net transaction id so it's traceable in either system.
- Appends a reconciliation row to a Google Sheet with the date, transaction id, customer name, amount, card last four, and the QuickBooks sales receipt id.
- Skips test-mode transactions and dedupes on the Authorize.Net transaction id so webhook retries never double-book revenue.
What do I need to use this?
- An Authorize.Net merchant account with webhooks enabled for settled payment captures
- A QuickBooks Online company connected to the workflow
- A Google Sheet with a header row for date, transaction id, customer, amount, card last four, and QuickBooks receipt id
How can I customize it?
- Point at a different reconciliation sheet, or add columns like currency, product code, or tax amount
- Split one-off sales from recurring subscription charges into separate sheets or QuickBooks accounts
- Route test-mode transactions to a sandbox sheet instead of skipping them
FAQs
Does this cover recurring subscription charges too?
What happens if the payer isn't in QuickBooks yet?
What stops the same payment from being recorded twice?
Are test transactions included?
Does this work with QuickBooks Desktop?
Related templates
Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.
See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.
Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.
Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.
Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.
See every LinkedIn ad account's spend against the budget you committed to, catch overspend early, and rebalance without rebuilding a spreadsheet.
Stop hand-keying Authorize.Net payments into QuickBooks.
Every settled charge lands in QuickBooks and your reconciliation sheet the moment it happens, with no duplicates and no manual copy-paste.