QuickBooks Payments API Supports ACH Debits for Web Payments
QuickBooks Payments offers an API for processing bank-account debits, letting developers accept ACH payments on websites while using separate services for cards.

QuickBooks users building custom e-commerce sites routinely ask whether Intuit offers a developer-facing payment gateway comparable to Stripe or Square — and more specifically, whether that gateway can handle ACH bank-account debits on its own, without forcing credit-card processing into the same integration. The short answer, confirmed by community solutions: yes, QuickBooks Payments exposes an API that supports direct bank-account debits, and it can be used independently of card-based transactions.
What the question is really asking
A developer building a PHP-based website wanted to keep their existing Stripe integration for credit cards but route ACH-only payments through Intuit. The core requirement was straightforward: a programmable gateway, documentation, and the ability to initiate a bank debit through code rather than through the QuickBooks UI. They were not looking to replace their card processor — they needed a complementary ACH channel.
How QuickBooks Payments handles ACH
QuickBooks Payments provides a REST API that lets applications charge both cards and bank accounts. For ACH, the workflow involves creating a bank-account token (or passing bank-account details directly in some integration patterns) and then issuing a debit request against that account. The API accepts the account holder’s name, the account number, the routing number, an account type such as personal checking, and a phone number for the account holder. The debit call itself specifies an amount and currency.
In practice, the accepted community solution demonstrated this using the open-source QuickBooks PHP DevKit, a third-party library that wraps the QuickBooks Payments API into PHP objects. The code instantiates a Payments object using OAuth credentials, builds a bank-account object with the holder’s details, and calls a debit method. If the transaction succeeds, a transaction object is returned; if it fails, the library surfaces an error message describing what went wrong.
Key details for developers evaluating this approach
Authentication. The QuickBooks Payments API uses OAuth — specifically, OAuth 1.0a in older integrations and OAuth 2.0 in current ones. Developers need to register an application in the Intuit Developer portal to obtain the consumer key and secret, and in production, complete an approval process before live transactions are permitted.
Sandbox availability. Intuit provides a sandbox environment through its Developer portal, allowing teams to test debit and charge calls against simulated accounts before going live. The community example referenced sandbox mode as a boolean flag passed when initializing the Payments object.
ACH-specific considerations. Bank-account debits through the Payments API are subject to ACH network rules, which differ from card-network rules in timing and risk. ACH transactions typically take several business days to settle and clear, and returned transactions — whether for insufficient funds, closed accounts, or other reasons — may not surface for one to two business days after initiation. Developers building an ACH flow should account for this settlement lag in their order-fulfillment logic.
PCI scope. A common point of confusion in community discussions is whether handling bank-account and routing numbers triggers PCI DSS obligations. PCI DSS applies specifically to cardholder data — primary account numbers, expiration dates, and related card details. Bank-account and routing numbers fall under ACH network rules and NACHA operating guidelines, not PCI. That said, storing bank-account information still carries security responsibilities, and many integrations use tokenization to avoid retaining raw account details after the initial transaction.
Surcharging and fees. QuickBooks Payments pricing for ACH transactions differs from card pricing and is typically structured as a percentage or flat fee per transaction, depending on the merchant’s agreement. Developers should confirm current rates with their Payments account, as those details sit outside the API itself.
Where to find the documentation
Intuit’s developer documentation covers the Payments API under the QuickBooks API suite, with sections on bank-account charges, the OAuth flow, and sandbox setup. The open-source PHP DevKit referenced in the community solution is maintained independently of Intuit and provides its own documentation for wrapping the API in PHP applications. Developers evaluating this path should review both the official API reference and any library-specific setup guides for the integration pattern they choose.
For broader help with QuickBooks Payments configuration and troubleshooting, our QuickBooks Online support pages cover common setup and account-linking issues.