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.
Additional information
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
Frequently asked questions
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
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.