---
title: "Authorize.net"
description: "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)."
canonical_url: "https://twominutebilling.com/help/guides/connect-a-payment-gateway/authorizenet"
---
# Authorize.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.

<screenshot :height="915" :single="true" :width="1280" alt="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" caption="Authorize.net → Account → Account and API Settings → API Credentials and Keys." src="gateways/authorizenet-api-keys">



</screenshot>

You need three values:

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Where to find it
    </th>
    
    <th>
      Looks like
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        API Login ID
      </strong>
    </td>
    
    <td>
      Authorize.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.
    </td>
    
    <td>
      —
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Transaction Key
      </strong>
    </td>
    
    <td>
      Make it on the same page.
    </td>
    
    <td>
      —
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Signature Key
      </strong>
    </td>
    
    <td>
      Make it on the same page. It has 128 characters. We use it to check the webhooks from Authorize.net.
    </td>
    
    <td>
      —
    </td>
  </tr>
</tbody>
</table>

<warning>

**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.

</warning>

## Permissions

<warning>

**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.

</warning>

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.

<table>
<thead>
  <tr>
    <th>
      What you turn on
    </th>
    
    <th>
      What Two Minute Billing uses it for
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Transaction Details API
    </td>
    
    <td>
      Finds lost answers, refunds and voids made in the Merchant Interface, and reads the daily batches: eCheck settlements and returns arrive only there.
    </td>
  </tr>
  
  <tr>
    <td>
      Customer Information Manager
    </td>
    
    <td>
      Saves cards and bank accounts as payment profiles, and charges them.
    </td>
  </tr>
  
  <tr>
    <td>
      Public Client Key
    </td>
    
    <td>
      Opens the Authorize.net form where your customers enter a card or a bank account.
    </td>
  </tr>
  
  <tr>
    <td>
      Signature Key
    </td>
    
    <td>
      Checks the webhooks.
    </td>
  </tr>
  
  <tr>
    <td>
      eCheck: WEB
    </td>
    
    <td>
      Debits the bank accounts that your customers save online.
    </td>
  </tr>
  
  <tr>
    <td>
      eCheck: PPD, CCD
    </td>
    
    <td>
      Refunds a settled bank debit.
    </td>
  </tr>
</tbody>
</table>

<warning>

**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.

</warning>

## 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:

<table>
<thead>
  <tr>
    <th>
      Payment method
    </th>
    
    <th>
      Currency
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      eCheck (ACH)
    </td>
    
    <td>
      USD
    </td>
  </tr>
</tbody>
</table>

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.

<note>

**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**.

</note>

## 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.

## Related

- [Payment gateways overview](https://twominutebilling.com/help/guides/connect-a-payment-gateway)
- [Recover failed payments](https://twominutebilling.com/help/guides/recover-failed-payments)
- [Handle disputes](https://twominutebilling.com/help/guides/handle-disputes)


## Sitemap

See the full [sitemap](https://twominutebilling.com/sitemap.md) for all pages.
