Payment gateways

Authorize.net

Authorize.netAuthorize.net
Connect your Authorize.net account to Two Minute Billing: find your API Login ID, Transaction Key and Signature Key, connect them, and let Two Minute Billing register the webhook. Cards and eCheck (US bank accounts).

Two Minute Billing charges cards and US bank accounts (eCheck, an ACH debit) through your Authorize.net account. You keep your Authorize.net rates, and your card processor pays out to your bank as usual.

Before you start

  • An Authorize.net account. The sandbox is a separate account with its own credentials, and sandbox credentials never work in production. Connect sandbox credentials to a test business and production credentials to a live business.
  • Each Authorize.net merchant account takes one currency. Select that currency when you connect it.
  • A Public Client Key, for the card form your customers fill in. In the Merchant Interface, open Account → Account and API Settings → API Credentials and Keys and, under Public Client Key, click Generate new public client key if there is none.
  • You need permission to manage payment gateways in Two Minute Billing. The owner and admin roles have it.

Find your API keys

In the Merchant Interface, open Account → Account and API Settings → API Credentials and Keys. The API Login ID is on this page. To get a Transaction Key or a Signature Key, click Generate new transaction key or Generate new signature key. Authorize.net asks for a PIN that it sends to you, then shows the key.

The Authorize.net Merchant Interface's API Credentials and Keys page in the sandbox, showing the API Login ID and the options for a new Transaction Key and a new Signature Key
Authorize.net → Account → Account and API Settings → API Credentials and Keys.

You need three values:

FieldWhere to find itLooks like
API Login IDAuthorize.net Merchant Interface → Account → Account and API Settings → API Credentials and Keys. Also turn on the Transaction Details API: we use it to find payments and refunds. The business test or live mode selects the Authorize.net environment.—
Transaction KeyMake it on the same page.—
Signature KeyMake it on the same page. It has 128 characters. We use it to check the webhooks from Authorize.net.—
Keep the keys secret. Anyone with the API Login ID and the Transaction Key can charge and refund in your Authorize.net account. Paste them only into Two Minute Billing, which stores them encrypted, and never into an email or a chat.

Permissions

Turn on the Transaction Details API. The API Login ID and the Transaction Key can charge and refund, but they cannot read your transactions until the Transaction Details API is on. Two Minute Billing uses it to find refunds and voids made in the Merchant Interface, and payments whose answer was lost on the way. It is off by default.
  1. In the Merchant Interface, turn New Authorize.net off at the top right.
  2. Open Account → Settings → Security Settings → General Security Settings → Transaction Details API.
  3. Answer your secret question and click Enable Transaction Details API.

Also check these:

  • Signature Key. Authorize.net sends webhooks only after you make a Signature Key.
  • Public Client Key. The card form your customers fill in needs one.
  • Customer Information Manager. Two Minute Billing saves cards and bank accounts as customer payment profiles. If saving one fails, ask Authorize.net to enable customer profiles on your account.
  • eCheck, for bank accounts. eCheck is a separate service on a production account: apply for it in the Merchant Interface, or ask Authorize.net. Ask for the WEB and PPD eCheck types, and CCD if you bill businesses. Bank accounts that your customers save online are debited as WEB. Authorize.net refunds a WEB debit as PPD (CCD for a business account), so without PPD or CCD you cannot refund a settled bank debit.
What you turn onWhat Two Minute Billing uses it for
Transaction Details APIFinds lost answers, refunds and voids made in the Merchant Interface, and reads the daily batches: eCheck settlements and returns arrive only there.
Customer Information ManagerSaves cards and bank accounts as payment profiles, and charges them.
Public Client KeyOpens the Authorize.net form where your customers enter a card or a bank account.
Signature KeyChecks the webhooks.
eCheck: WEBDebits the bank accounts that your customers save online.
eCheck: PPD, CCDRefunds a settled bank debit.
Bank accounts need the payer's authorization, and we collect it. Authorize.net leaves the ACH debit authorization to you. When a customer saves a bank account, the checkout and the portal show our debit authorization, which names your business and says that the amount can change from one invoice to the next. The customer must accept it before the account is saved. Two Minute Billing keeps the accepted text, with the time, the IP address and the browser, and emails the customer a copy of it (the bank debit authorization copy email). Ten or more days before each debit, the pre-debit notice email gives the customer the amount and the date. Keep both emails on.

Connect it in Two Minute Billing

  1. Open Settings → Payment gateways and click Add gateway.
  2. Select Authorize.net and paste the API Login ID, the Transaction Key and the Signature Key.
  3. Select the currency and the payment methods this account handles.
  4. Click Create gateway account.

Then open the account and click Check credentials. Healthy means Authorize.net accepted the API Login ID and the Transaction Key. The check also looks at the webhook and tells you if Authorize.net has stopped sending events to it.

The payment methods you can turn on for Authorize.net:

  • Cards
  • eCheck (ACH) — US bank accounts, USD. Turn on eCheck in Authorize.net first. A debit takes up to 7 days to settle. The payer accepts our debit authorization when they save the account.

A bank account is saved first and charged later: it is not offered for a payment that the customer makes on the spot. A bank debit stays pending until Authorize.net settles its batch, usually the next day, and the money reaches you in up to seven days. A bank can still return the debit after that, for example for insufficient funds (code R01). Two Minute Billing reads the returns from the daily batches and marks the payment as failed, and dunning starts.

Currencies

Two Minute Billing offers these 6 currencies on Authorize.net:

AUD, CAD, EUR, GBP, NZD, USD

Each gateway account takes one currency, and your processor sets which one. For example: USD or CAD in North America, GBP or EUR in Europe, AUD or NZD in Asia-Pacific.

Some payment methods take one currency only:

Payment methodCurrency
eCheck (ACH)USD

If you leave Currencies empty on the gateway account, the account takes each currency of your business that is on this list.

Webhooks

Authorize.net tells Two Minute Billing about things that happen after a charge: a refund or a void made in the Merchant Interface, a fraud hold that is approved or declined, a saved card that changes. Authorize.net signs each event with your Signature Key, and Two Minute Billing uses that key to check it.

Two Minute Billing registers the webhook with Authorize.net for you when you save the account. Nothing to copy.

If the gateway account page shows the webhook as not configured:

  1. In the Authorize.net Merchant Interface, go to Account → Settings → Webhooks → Add Endpoint.
  2. Paste the notification URL shown on the gateway account page. Select the payment events and the payment profile events. Set the status to Active and click Save.
Record chargebacks yourself. Authorize.net does not send chargebacks. When your card processor reports one, open the payment in Transactions and click Record dispute. When it is decided, open it in Disputes and click Mark as won or Mark as lost.

Test it

In your test business, create a customer and save the test card 4111 1111 1111 1111 with any future expiry date and any three-digit CVV. Collect an invoice: it is marked paid, and Logs shows the call to Authorize.net and Authorize.net's answer.

To test eCheck, turn on eCheck (ACH) for the gateway account. In the portal, add a US bank account, accept the authorization, and enter any valid US routing number with any account number. The sandbox accepts a debit under $100 and declines one over $100. The payment stays pending: the sandbox does not settle eCheck, so you cannot test a settlement, a return or the refund of a settled bank debit there. A full refund of a pending bank debit cancels it (a void).

Go live

  1. Sign in to your production Merchant Interface and make a Transaction Key, a Signature Key and a Public Client Key there. Copy the production API Login ID.
  2. In your live business, add Authorize.net with those values.
  3. Two Minute Billing registers a separate webhook for production. Check it under Account → Settings → Webhooks in the Merchant Interface.

Troubleshoot

  • Check credentials says "We could not check the credentials." with "Authorize.net refused the API Login ID or Transaction Key". A value is wrong, or it belongs to the other environment. Copy the API Login ID again, make a new Transaction Key if necessary, and update the gateway account.
  • Check credentials says "Correct the settings below." with "Authorize.net set the webhook … to inactive". Authorize.net stops sending events after 10 failed deliveries. Open the gateway account and register its webhook again, or set its status to Active under Account → Account and API Settings → Webhooks in Authorize.net.
  • A partial refund is refused with "Authorize.net cannot refund part of this payment before it settles". Before a card payment settles, usually within one day, Authorize.net can only cancel the whole payment. Refund the full amount, or wait until the payment settles and then refund any amount.
  • Saving a bank account fails, or a bank debit is declined at once. eCheck is not on for your account, or the debit is over your eCheck limit. Ask Authorize.net to enable eCheck with the WEB type, and check your eCheck limits.
  • A bank debit refund is refused with "Authorize.net refunds a bank debit only for 180 days after it settles". Refund the customer outside Authorize.net and record the refund offline.
  • The card form does not open, with "This Authorize.net account has no Public Client Key". Open Account → Account and API Settings → API Credentials and Keys and, under Public Client Key, click Generate new public client key. Then try again.
Copyright © 2026