Why does Authorize.net create two transactions for one checkout?
Payment Tokenization: how payment methods are saved securely in WooCommerce
WC Autoship works with payment gateways that support tokenization and store that token as a saved payment method using the WooCommerce Payment Token API.
A saved payment method is necessary for Autoship to be able to automatically process an Autoship Schedule (a recurring transaction) on behalf of a customer with their consent, but without their direct input.
As of WooCommerce 2.6 (released in July 2016) customers can manage these saved payment methods securely within My Account > Payment methods.
Read more about the Payment Token API in WooCommerce 2.6 on the WooCommerce Blog.
Reference Transactions: how payment methods are saved with Authorize.Net CIM at WooCommerce Checkout
When a customer completes a checkout from your WooCommerce store using the WC Autoship Authorize.Net CIM integration, two transactions will show up in their transaction history in rapid succession:
- Reference transaction
- Completed Sale (or Authorization if that setting is being used)
the first transaction being voided. This is because of the way that Authorize.net saves the payment method. The first transaction is a reference transaction. A reference transaction is a transaction that a payment processor references for later payments as a way of saying "This customer gave us permission to create future transactions using their saved payment information". These initial, voided transactions shouldn't appear in your customers bank statements.
1. Our plugin submits user and payment info to Authorize.net's API with a request to create a Payment Profile.
2. Authorize.net creates a reference transaction and immediately voids it. The transaction number from this transaction can be used as a reference to an agreement by which future transactions can be created. and returns the transaction number to our plugin.
3. Our plugin creates a WC Payment Token with that transaction number as it's token.
4. Our plugin uses the newly created WC Payment Token to process payment for the actual checkout.
Reference Transactions: how payment methods are saved with Authorize.Net CIM as a new WooCommerce Payment Method
When a customer adds a new payment method to their WooCommerce profile using Authorize.net, the following occurs:
1. Our plugin submits user and payment info to Authorize.net's API with a request to create a Payment Profile.
2. Authorize.net creates a reference transaction and immediately voids it. The transaction number from this transaction can be used as a reference to an agreement by which future transactions can be created. and returns the transaction number to our plugin.
3. Our plugin creates a WC Payment Token with that transaction number as it's token.