# Authorize.net Tap to Pay

Authorize.net Tap to Pay takes the card in Authorize.net's own phone app, the Authorize.net 2.0 app. You type the same amount into the app; the till doesn't send it to the phone. Your store finds the payment in Authorize.net and records it on the order.

This is separate from the [WCPOS app's own Tap to Pay](/ko/hardware/card-readers.md#tap-to-pay), which uses Stripe Terminal. Setting this gateway up is under [Set up Authorize.net Tap to Pay](#setup).

Pro Feature

Authorize.net Tap to Pay needs [WCPOS Pro](/ko/getting-started/pro-license.md) 2.0 or later.

Beta: a real tap is not tested yet

Version 0.1.0 is a beta. It was tested against Authorize.net's sandbox, with a card-present sale made through Authorize.net's API standing in for the tap: the sale, the match, a void, and a refund after settlement.

A real tap in the Authorize.net app has not been tested yet. Readers paired with the Authorize.net app have not been tested. Try it with a small amount and refund it before relying on it. Report problems with the order number, the time of the sale and a screenshot.

## Take a payment[​](#take-payment "Take a payment으로 직접 링크")

Open the register first

With **Open and close the register** switched on, the till won't record a payment while the register is closed, and a card you've already taken would have to be refunded. See [Registers](/ko/manage-store/stores/register-settings.md#one-register) for the setting.

Press **Checkout**. **Authorize.net Tap to Pay** is a tile on the **Payments** tab.

1. Tap the **Authorize.net Tap to Pay** tile. Above the keypad the till shows **Terminal: Authorize.net app** (the **Reader name**).
2. Press **Send … to Authorize.net Tap to Pay**. The till shows **Waiting for the customer on the terminal**, with the steps **Sent**, **On terminal**, **Approved** and **Captured**.
3. In the Authorize.net app on your phone, take exactly the same amount. Don't add a tip in the app. See [Tips](/ko/sell/take-payment/tips.md).
4. The customer taps their card on the phone.
5. When your store finds the payment, the till records it on the order, and shows **Paid in full** once nothing is left to pay.

While the till waits, your store keeps checking Authorize.net's list of payments that haven't settled yet. With **Auto-match** on, the payment completes by itself when exactly one Authorize.net payment of that amount has arrived, counting from 30 seconds before you pressed Send. Before recording it, your store checks it with Authorize.net, including the amount and currency. A transaction is recorded on one payment only, ever.

While nothing matches yet, the extension also sends the till the line **Take USD … in the Authorize.net app. This completes by itself when the payment arrives.** Whether the till shows this line hasn't been tested yet.

A declined card fails the payment. The till shows **Payment failed: …** with **Try again** and **Choose another way**. See [On a Card Reader](/ko/sell/take-payment.md#card-reader).

On the checkout's [**Legacy**](/ko/sell/take-payment/legacy-tab.md) tab, Authorize.net Tap to Pay shows a **Terminal** picker with **Send to terminal**, **Cancel** and **Try again**, recorded like a payment from the tender pane.

### More than one payment could be yours[​](#several-matches "More than one payment could be yours으로 직접 링크")

The payment doesn't complete by itself when more than one Authorize.net payment of that amount could be yours, when **Auto-match** is off, or when the only match arrived more than 30 seconds before you pressed Send. The extension then sends the till a list to pick from, for example **2 Authorize.net payments of USD … could be this one. Pick the one you just took.**, with up to 6 payments of that amount from the 15 minutes before you pressed Send.

Whether the till shows this list hasn't been tested yet. Leave **Auto-match** on. If the till keeps waiting after the customer has paid, press **Cancel on terminal** ([next section](#cancel)).

### Cancel a payment[​](#cancel "Cancel a payment으로 직접 링크")

Press **Cancel on terminal**. Your store checks Authorize.net once more. If exactly one new payment of that amount has arrived, it is recorded and the payment completes instead. Otherwise the payment is cancelled. Cancelling in WCPOS stops nothing in the Authorize.net app.

경고

A payment the till didn't record stays in Authorize.net: this happens when the customer taps after you cancelled, or when more than one payment matched. Check the Authorize.net Merchant Interface before you take the card again, and refund an unrecorded payment there.

## If a payment goes wrong[​](#goes-wrong "If a payment goes wrong으로 직접 링크")

The card was declined in the app

* A decline fails the waiting payment. Start a new WCPOS payment before the customer taps again.
* A decline for the same amount from another register can also fail a payment that is still waiting with no approved match.

Amount mismatch

* The payment in Authorize.net has a different amount or currency from the till, for example a tip added in the app. The payment fails and an order note is added.
* The money was taken: refund that transaction in the Authorize.net Merchant Interface.

The till keeps waiting after the customer paid

* Check the amount matches exactly, the app is signed in to the same Authorize.net account and the same environment as **Environment**, and **Auto-match** is on.
* Then press [**Cancel on terminal**](#cancel). See also the [50-transaction limit](#scope-and-limitations).

Turn on the Transaction Details API in the Authorize.net Merchant Interface (Account → Settings → Transaction Details API).

* Turn it on there, then try again.

The Authorize.net Tap to Pay tile is greyed out or missing

* See [When a tile can't be used](/ko/settings/checkout/payment-methods.md#unavailable-tiles). A manager checks both credentials are saved and the gateway is switched on in `WP Admin > POS > Settings > Checkout`.

A payment is stuck, or the till says the provider hasn't answered

See [When a card reader payment gets stuck](/ko/settings/checkout/payment-methods.md#card-reader-problems).

## Refund an Authorize.net payment[​](#refunds "Refund an Authorize.net payment으로 직접 링크")

1. In the POS, open the order's refund. See [Refunds](/ko/sell/refunds.md).
2. Choose **Refund to Authorize.net Tap to Pay** and press **Process Refund**.

A refund in WP Admin with WooCommerce's **Refund … via Authorize.net Tap to Pay** button works the same way. Before Authorize.net settles the payment (usually overnight), only a full refund is possible, and it voids the payment. After it settles, refund all of it or part of it back to the card.

A partial refund before settlement shows: **Authorize.net settles this payment overnight. Refund the full amount to void it now, or refund part of it after it settles.** An identical refund sent in the last 8 hours is refused: **An identical refund was sent in the last 8 hours. Check the Authorize.net Merchant Interface before trying again.**

Other refund messages

* **This Authorize.net payment was already voided.** — the full payment was voided before settlement.
* **Authorize.net did not confirm the refund. Check the Authorize.net Merchant Interface before trying again.** — check there before another attempt.
* **Authorize.net cannot refund this payment now. Check the Authorize.net Merchant Interface.** — check the payment there.
* **This payment was taken in the other Authorize.net environment.** — switch **Environment** back, or refund it in the Merchant Interface.
* **This payment has no Authorize.net transaction to refund.** — there is no Authorize.net transaction for this payment.
* **The refund amount must be more than zero.** — enter an amount above zero.

## Set up Authorize.net Tap to Pay[​](#setup "Set up Authorize.net Tap to Pay으로 직접 링크")

A manager sets the gateway up once in WP Admin and signs the phone in to the Authorize.net app.

Before you set up: what you need

### Requirements[​](#requirements "Requirements으로 직접 링크")

Processor

<!-- -->

: Your Authorize.net merchant account must be on the TSYS processor, with Tap to Pay switched on by Authorize.net. Check this with Authorize.net before you buy phones

Authorize.net Account

<!-- -->

: A US merchant account, its API Login ID and Transaction Key, and the Transaction Details API switched on

Phone

<!-- -->

: As Authorize.net states it: Tap to Pay on iPhone needs an iPhone XS or newer on iOS 18 or later; Tap to Pay on Android needs Android 15 on a phone that is Tap to Pay Ready. US only. Sign in to the Authorize.net 2.0 app with a user of the same Authorize.net account

Connections

<!-- -->

: The till needs a connection: your store checks Authorize.net for the payment. There is one reader, named by the **Reader name** setting (default **Authorize.net app**), and nothing to pair

WCPOS

<!-- -->

: WCPOS Pro 2.0 or later

Server

<!-- -->

: WooCommerce 7.0+, PHP 7.4+

Currency

<!-- -->

: The account takes one currency, and the Authorize.net 2.0 app takes USD only

Every setting on the gateway's page

Open **Authorize.net Tap to Pay** at `WP Admin > WooCommerce > Settings > Payments`.

| Setting             | What it does                                                                                                                                                        |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Title**           | Payment method title shown in the POS. Default **Authorize.net Tap to Pay**.                                                                                        |
| **Environment**     | **Sandbox** (default) or **Production**. Sandbox uses `apitest.authorize.net` and a sandbox account. Production takes real money.                                   |
| **API Login ID**    | From the Authorize.net Merchant Interface: **Account → Settings → API Credentials & Keys**.                                                                         |
| **Transaction Key** | Stored on the server only and never shown again.                                                                                                                    |
| **Auto-match**      | Complete the payment by itself when exactly one Authorize.net transaction fits. On by default.                                                                      |
| **Reader name**     | The name the POS shows for the phone app. Default **Authorize.net app**.                                                                                            |
| **Support bundle**  | The **Download support bundle** button: a file to share with WCPOS support. It covers every POS payment provider on the site; secrets and card numbers are removed. |

After saving, each credential field shows only its last 4 characters: **Saved value: ••••…. Leave blank to keep it.** Leave a field blank to keep the saved value. A credential with control characters is refused with **Authorize.net credentials cannot contain control characters.**

There is no **Enabled** checkbox on this page. The only switch is `WP Admin > POS > Settings > Checkout`. The gateway is never offered on the shop's checkout.

Six steps: install, copy credentials, turn on the Transaction Details API, enter credentials, set up the phone, switch it on in WCPOS

1

### Install the extension

In `WP Admin > POS > Settings > Extensions`, find **Authorize.net Tap to Pay for WooCommerce (beta)** and click **Install**. WCPOS installs and activates it in one go, and turns on **Auto-update**. See [Extensions](/ko/manage-store/add-ons.md#installing-an-extension).

Auto-update is on for this beta, so new beta versions install by themselves. To update by hand instead, turn **Auto-update** off on the extension's card in Extensions. See [Auto-updates](/ko/manage-store/add-ons.md#auto-updates).

Install from a downloaded zip instead

Download `authorize-net-terminal-for-woocommerce.zip` from the [GitHub releases page](https://github.com/wcpos/authorize-net-terminal-for-woocommerce/releases) and upload it via `Plugins > Add Plugin`, then **Upload Plugin**. The GitHub "Source code" zip won't install.

2

### Copy the API credentials

In the Authorize.net Merchant Interface, open **Account → Settings → API Credentials & Keys** for the **API Login ID** and **Transaction Key**. Use a sandbox account's credentials for **Sandbox**, your live account's for **Production**.

3

### Turn on the Transaction Details API

Open **Account → Settings → Transaction Details API** and turn it on. Without it the till shows the [Transaction Details API message](#goes-wrong) (E00011).

4

### Enter the credentials

In `WP Admin > WooCommerce > Settings > Payments`, open **Authorize.net Tap to Pay**, choose **Environment**, enter **API Login ID** and **Transaction Key**, leave **Auto-match** on, and click **Save changes**.

5

### Set up the phone

Install the Authorize.net app and sign in with a user of the same Authorize.net account.

6

### Switch it on in WCPOS

In `WP Admin > POS > Settings > Checkout`, toggle **Authorize.net Tap to Pay** **Enabled**. The tile appears at the till on the next page load.

참고

This is the only switch. See [Checkout Settings](/ko/settings/checkout.md#enabling-a-gateway).

## Sandbox and production[​](#environments "Sandbox and production으로 직접 링크")

**Sandbox** is the default and uses `apitest.authorize.net`. **Production** uses `api.authorize.net` and takes real money. The setting is Production only when you choose it. Credentials belong to one environment: enter the ones for the environment you chose.

Switching **Environment** while a payment is waiting fails that payment. Switch only when no till is taking an Authorize.net payment.

A payment taken in one environment can't be refunded after you switch: **This payment was taken in the other Authorize.net environment.** Authorize.net doesn't document whether its app signs in to a sandbox account. To try a real tap, use Production with a small amount and refund it in full the same day; before settlement, a full refund voids the payment.

## Logs[​](#logs "Logs으로 직접 링크")

When you ask for help, send the order number and the relevant log lines.

Find logs for support

Find logs in `WooCommerce > Status > Logs`, under source `authorize-net-terminal-for-woocommerce`. Use **Download support bundle** on the gateway's settings page for a file to share with WCPOS support. Don't share full credentials or card data.

## Scope & Limitations[​](#scope-and-limitations "Scope & Limitations으로 직접 링크")

* A beta: a real tap in the Authorize.net app hasn't been tested
* Tap to Pay in the Authorize.net app only: no physical card terminals; readers paired with the Authorize.net app are untested
* The amount is typed into the app; the till doesn't send it
* US Authorize.net accounts on the TSYS processor, with Tap to Pay switched on by Authorize.net; one currency; the Authorize.net 2.0 app takes USD only
* No tips in the app: the amount must match exactly
* No webhooks: your store checks Authorize.net for the payment
* No manual capture, and no partial payment on the phone
* A payment Authorize.net holds for review isn't recorded
* Version 0.1.0 reads only the 50 newest unsettled transactions on the account, so a tap is missed when 50 or more other Authorize.net transactions on the account (any register, your online checkout included) land after it before the till finds it
* Your WordPress server's clock must be right to within 30 seconds: auto-match compares it with the time Authorize.net gives the payment
* Two registers taking the same amount at the same moment can each record the other's payment
* The pick list for several matching payments hasn't been tested at the till
* Switching **Environment** while a payment is waiting fails that payment

## If setup goes wrong[​](#troubleshooting "If setup goes wrong으로 직접 링크")

### Common Issues[​](#common-issues "Common Issues으로 직접 링크")

Enter the Authorize.net API Login ID and Transaction Key first.

* Save both credentials on the gateway's page.

Authorize.net credentials cannot contain control characters.

* Paste the value again without the extra characters copied with it.

WCPOS Pro 2.0 notice

* **Authorize.net Tap to Pay for WooCommerce POS needs WooCommerce POS Pro 2.0.0 or newer.** Install or update WCPOS Pro. Without it the extension adds nothing to the POS.

### Getting Help[​](#getting-help "Getting Help으로 직접 링크")

* Include the **order number**, the **time of the sale**, a **screenshot** and the relevant **log lines** with your support request
* Report problems on [GitHub issues](https://github.com/wcpos/authorize-net-terminal-for-woocommerce/issues)
* Contact Authorize.net support for the account, the app and Tap to Pay

## Related Documentation[​](#related-documentation "Related Documentation으로 직접 링크")

[Taking a PaymentEvery way to take payment at the till](/ko/sell/take-payment.md)

[RefundsGive money back from the POS](/ko/sell/refunds.md)

[Payment GatewaysThe other terminals and gateways WCPOS supports](/ko/settings/checkout/payment-gateways.md)
