<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Extend WooCommerce - CODIBU</title>
	<atom:link href="https://help.codibu.com/kbtopic/extend-woocommerce/feed/" rel="self" type="application/rss+xml" />
	<link>https://help.codibu.com</link>
	<description>Hosting &#38; Domain,  Development &#38; Design, SEO &#38; Marketing, 2300+ Themes &#38; Plugins, Free SEO analysis &#38; tools</description>
	<lastBuildDate>Wed, 25 Jan 2023 20:03:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://help.codibu.com/wp-content/uploads/2022/07/favicon.png</url>
	<title>Extend WooCommerce - CODIBU</title>
	<link>https://help.codibu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WooCommerce Memberships</title>
		<link>https://help.codibu.com/blog/woocommerce-memberships-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=woocommerce-memberships-2</link>
					<comments>https://help.codibu.com/blog/woocommerce-memberships-2/#respond</comments>
		
		<dc:creator><![CDATA[JN C]]></dc:creator>
		<pubDate>Mon, 09 Nov 2020 10:36:11 +0000</pubDate>
				<guid isPermaLink="false">https://help.codibu.com/kb/woocommerce-memberships/</guid>

					<description><![CDATA[<p>A membership solution 100% integrated with your content and products. WooCommerce Memberships is not just another plugin for restricting your site’s content: it’s an easy-to-use, site-wide membership<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://help.codibu.com/blog/woocommerce-memberships-2/">WooCommerce Memberships</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2>A membership solution 100% integrated with your content and products.</h2>
<p><strong>WooCommerce Memberships</strong> is not just another plugin for restricting your site’s content: it’s an easy-to-use, site-wide membership solution that brings your content, shop, and memberships together.</p>
<div>
<p>“This is maybe one of the easiest and cleanest plugins when it comes to configuration…it’s super clean and easy to manage.</p>
<p>You’re gonna love this plugin.” – Chris Lema</p>
</div>
<p><strong>Memberships allows you to create an entire membership system</strong> that’s seamlessly tied to your store.</p>
<p>You can restrict your content to members, but you can also “drip” that content over time to schedule when members have access. Sell access to memberships, include memberships with product purchases, manually assign memberships, and completely integrate member perks within your store.</p>
<h3>Sell or Assign Memberships</h3>
<p>Memberships are not a specific type of WooCommerce product; instead, membership plans are created independently from products. This lets you determine how access is granted for <strong>maximum flexibility</strong>. You can assign 0 or more products (of almost any type) to a membership plan to support several types of memberships:</p>
<ul>
<li>sell a membership as stand-alone product — create a product for the membership, then tie the plan to that product to sell it</li>
<li>grant access to a membership as part of a product purchase — i.e., buy a subscription for a meal box, get access to the recipes section for free</li>
<li>grant access to the same membership from several products (i.e., a yearly purchase or a monthly subscription)</li>
<li>assign memberships manually for an invite-only members area
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-general-plan-data.png"><img fetchpriority="high" decoding="async" class="aligncenter wp-image-10558 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-general-plan-data.png" alt="" width="897" height="410" /></a>
</li>
</ul>
<h3>Strategically Grant Content Access</h3>
<p>You put a lot of work into your members-only content, so Memberships lets you schedule when your members should have access to it. You can <strong>drip content</strong>, which means that you can schedule when members should have access to your content. For example, you can require that customers be a member for a week before they can access certain posts or pages.</p>
<figure id="attachment_164490" class="wp-caption aligncenter" aria-describedby="caption-attachment-164490">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-restrict-content-rules.png"><img decoding="async" class="aligncenter wp-image-10565 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-restrict-content-rules.png" alt="" width="961" height="512" /></a><br />
<br /><figcaption id="caption-attachment-164490" class="wp-caption-text">Plan Content Restriction</figcaption></figure>
<p>This gives you more control over how members begin using your site and lets you introduce members to your content at your pace.</p>
<p>When you use this with Subscriptions, you can even determine which content is included in a free trial period with content dripping rules.</p>
<figure id="attachment_157756" class="wp-caption aligncenter" aria-describedby="caption-attachment-157756">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-plan-content-restriction-subscriptions-550x453-1.png"><img decoding="async" class="aligncenter wp-image-11618 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-plan-content-restriction-subscriptions-550x453-1.png" alt="" width="550" height="453" /></a><br />
<br /><figcaption id="caption-attachment-157756" class="wp-caption-text">Dripping with free trial</figcaption></figure>
<h3>Turn Your Store into a Purchasing Club</h3>
<p>Memberships lets you create members-only products so that your site can become a purchasing club, or let you offer certain products exclusively to members.</p>
<p>You can restrict <strong>product viewing</strong> to members, which means these products will be hidden from non-members in your shop. You can also <strong>restrict purchasing</strong>, which means that products are public, but only members can buy them.</p>
<figure id="attachment_164491" class="wp-caption aligncenter" aria-describedby="caption-attachment-164491">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-product-restriction-rules.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-10564 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-product-restriction-rules.png" alt="" width="1020" height="443" /></a><br />
<br /><figcaption id="caption-attachment-164491" class="wp-caption-text">Plan Product Restriction</figcaption></figure>
<p>You can also drip product access so that members don’t get access to products immediately.</p>
<h3>Offer Better Shipping Options to Members</h3>
<p>Members should be your most loyal customers, so giving them perks that encourage them to purchase repeatedly from you keeps them coming back for more. Memberships extends your free shipping settings so you can offer free shipping directly to your members, while requiring non-members to meet other criteria (like having a coupon or minimum order amount).</p>
<figure id="attachment_967157" class="wp-caption aligncenter" aria-describedby="caption-attachment-967157">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-member-free-shipping.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-10559 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-member-free-shipping.png" alt="" width="1111" height="802" /></a><figcaption id="caption-attachment-967157" class="wp-caption-text">Add members-only free shipping<em><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-member-free-shipping.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-10559 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-member-free-shipping.png" alt="" width="1111" height="802" /></a><br />
</em></figcaption></figure>
<h3>Reward Members with Special Discounts</h3>
<p>Since you may want to give your members certain perks, you can provide <strong>member discounts</strong> for all products, some products, or certain product categories.</p>
<figure id="attachment_164492" class="wp-caption aligncenter" aria-describedby="caption-attachment-164492">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-discount-rules.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-10555 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-discount-rules.png" alt="" width="1024" height="305" /></a><br />
<br /><figcaption id="caption-attachment-164492" class="wp-caption-text">Plan Purchasing Discounts</figcaption></figure>
<h3>Automatically Show Members Their Perks</h3>
<p>While membership management should be easy on you, it should be easy on your members, too. Members can find all of the information they need about their memberships in the <strong>Member Area</strong>. Members can access the area for any membership from the “My Account” page by clicking “View”.</p>
<figure id="attachment_159452" class="wp-caption aligncenter" aria-describedby="caption-attachment-159452">
<img loading="lazy" decoding="async" class="aligncenter wp-image-10561 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-my-discounts.png" alt="" width="1102" height="718" /><br />
<br /><figcaption id="caption-attachment-159452" class="wp-caption-text">Member Area: My Discounts</figcaption></figure>
<p>You can enable any or all sections of the member area to show members a list of accessible content (post and pages), products, discounts, and / or public membership notes. If a member will have access to content in the future, the member can see the access date as well.</p>
<h3>Import or Export Members</h3>
<p>You have a lot of tools to manage members within WooCommerce, but you may want to connect to other services too, such as importing a member list into an email tool. Memberships lets you <strong>export members</strong> to a CSV file so that you can get member data out of WooCommerce and into other tools.<img loading="lazy" decoding="async" class="aligncenter wp-image-10556 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-export-settings.png" alt="" width="870" height="698" /></p>
<p>You can also <strong>import members</strong> via CSV to add new memberships, create new users, or bulk-update existing members by merging your file with existing data.</p>
<h3>Simplify Communication with Members</h3>
<p>When you run a membership site, you spend a lot of time on <strong>customer service</strong> and <strong>managing members</strong>. We’ve tried to make that as easy as possible with Memberships. We’ve added “Membership Notes” so that you can track information about memberships for a customer, add your own notes for your reference, and even easily communicate with a particular member by sharing a note with them via email.<img loading="lazy" decoding="async" class="aligncenter wp-image-11601 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-member-notes-550x545-1.png" alt="" width="550" height="545" /></p>
<p>You can also use <strong>expiration and renewal reminder emails</strong> to let members know of ending memberships and prompt them to renew or upgrade.</p>
<figure id="attachment_164494" class="wp-caption aligncenter" aria-describedby="caption-attachment-164494">
<img loading="lazy" decoding="async" class="aligncenter wp-image-10563 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-plan-email-content.png" alt="" width="1096" height="831" /><br />
<br /><figcaption id="caption-attachment-164494" class="wp-caption-text">Plan Email Content</figcaption></figure>
<h3>Memberships + Subscriptions</h3>
<p>Memberships is fully functional as a stand-alone membership solution, but it works very well with the most advanced eCommerce recurring payments solution available: <strong>WooCommerce Subscriptions</strong>.</p>
<p>When both plugins are active, Memberships can leverage some features of Subscriptions to give you more flexibility over membership billing (more details <a href="https://help.codibu.com/blog/kb/woocommerce-memberships-subscriptions-integration/">in our documentation</a>):</p>
<ul>
<li>Memberships can use recurring billing (i.e., monthly payments) for the membership rather than a set term (such as a year)</li>
<li>Memberships can use Subscriptions as a payment plan, but control access length itself to support installment payments</li>
<li>Free trials can be used for the membership via a subscription</li>
<li>Content restriction and dripping can include or exclude free trial periods so you control what content is available in trials</li>
<li>Members can pause their own memberships by suspending a subscription</li>
<li>Members can upgrade or downgrade memberships by switching a subscription</li>
<li>Upgrades and downgrades can leverage Subscription’s proration to ensure that membership costs are accurate</li>
</ul>
<p>Even if you don’t want to use recurring billing, you can leverage the other features of Subscriptions by setting the subscription length to one billing cycle so you can take advantage of upgrades and downgrades or trial periods.</p>
<h3>Selling Memberships to Companies or Groups</h3>
<p>Need to sell memberships to teams, companies, or groups instead? Check out the <a href="https://help.codibu.com/blog/kb/teams-for-woocommerce-memberships/">Teams for WooCommerce Memberships</a> extension (purchased separately). This plugin adds on to WooCommerce Memberships, letting to sell access to a group of users instead of an individual.<img loading="lazy" decoding="async" class="aligncenter wp-image-10557 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-memberships-for-teams-team-account-members-accepted.png" alt="" width="2180" height="1052" /></p>
<h3>How to Get Started</h3>
<p>Ready to create memberships for your customers? You can get going with these steps:</p>
<ol>
<li>Buy this extension <img decoding="async" class="emoji" role="img" draggable="false" src="https://help.codibu.com/wp-content/uploads/2022/03/1f642.svg" alt="&#x1f642;" /></li>
<li>Download and install Memberships in your WooCommerce store</li>
<li>Create your Membership Plans and Members</li>
<li>Check out our <a href="https://help.codibu.com/blog/kb/woocommerce-memberships-2/">extensive documentation</a> for any advanced setup help</li>
<li>That’s it! Sit back and enjoy your fully integrated membership site!</li>
</ol><p>The post <a href="https://help.codibu.com/blog/woocommerce-memberships-2/">WooCommerce Memberships</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://help.codibu.com/blog/woocommerce-memberships-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Table Rate Shipping</title>
		<link>https://help.codibu.com/blog/table-rate-shipping-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=table-rate-shipping-2</link>
					<comments>https://help.codibu.com/blog/table-rate-shipping-2/#respond</comments>
		
		<dc:creator><![CDATA[JN C]]></dc:creator>
		<pubDate>Mon, 09 Nov 2020 09:12:30 +0000</pubDate>
				<guid isPermaLink="false">https://help.codibu.com/kb/table-rate-shipping/</guid>

					<description><![CDATA[<p>Advanced Shipping Options The table rate shipping module extends WooCommerce’s default shipping options giving you highly customizable shipping options. Define multiple shipping rates based on location,<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://help.codibu.com/blog/table-rate-shipping-2/">Table Rate Shipping</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2>Advanced Shipping Options</h2>
<p>The table rate shipping module extends WooCommerce’s default shipping options giving you highly customizable shipping options.</p>
<p>Define multiple shipping rates based on location, price, weight, or item count. Wildcards may be used to match multiple regions too.</p>
<ul>
<li>Add multiple tables of rates per shipping zone</li>
<li>Several types of table rate calculation: Per order, Calculated per item, Calculated per line, Calculated per class</li>
<li>Add rules based on Weight, Number of items, Number of items by class and Price</li>
<li>Add costs per row, per item cost, a percentage and per weight unit</li>
</ul>
<figure id="attachment_1751841" class="wp-caption aligncenter" aria-describedby="caption-attachment-1751841"><a href="https://help.codibu.com/wp-content/uploads/2020/11/screen-shot-2016-06-14-at-2-30-33-pm.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10398" src="https://help.codibu.com/wp-content/uploads/2020/11/screen-shot-2016-06-14-at-2-30-33-pm.png" alt="" width="1808" height="762" /></a><br /><figcaption id="caption-attachment-1751841" class="wp-caption-text">Add table rate shipping to specific zones</figcaption></figure>
<h4>Intuitive Interface</h4>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/screen-shot-2016-06-14-at-2-34-07-pm.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10399" src="https://help.codibu.com/wp-content/uploads/2020/11/screen-shot-2016-06-14-at-2-34-07-pm.png" alt="" width="1136" height="1142" /></a></p>
<p>Adding data as complex as table rate shipping can be an arduous process. That’s why the user interface has been designed to make the process of adding, duplicating and removing rates as intuitive as possible.</p><p>The post <a href="https://help.codibu.com/blog/table-rate-shipping-2/">Table Rate Shipping</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://help.codibu.com/blog/table-rate-shipping-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Product Add-Ons</title>
		<link>https://help.codibu.com/blog/product-add-ons-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=product-add-ons-2</link>
					<comments>https://help.codibu.com/blog/product-add-ons-2/#respond</comments>
		
		<dc:creator><![CDATA[JN C]]></dc:creator>
		<pubDate>Mon, 09 Nov 2020 09:11:16 +0000</pubDate>
				<guid isPermaLink="false">https://help.codibu.com/kb/product-add-ons/</guid>

					<description><![CDATA[<p>For a shopping experience as unique as your customers From adding a personal engraving, to upgrading to premium fabric, customizing products can keep your customers coming<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://help.codibu.com/blog/product-add-ons-2/">Product Add-Ons</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="entry entry-content">
<h2><b>For a shopping experience as unique as your customers</b></h2>
<p>From adding a personal engraving, to upgrading to premium fabric, customizing products can keep your customers coming back. With Product Add-Ons, you can offer special options to your customers in a snap.</p>
<p>Product Add-Ons allow your customers to personalize products while they’re shopping on your online store. No more follow-up email requests—customers get what they want, before they’re done checking out.<b><a href="https://help.codibu.com/wp-content/uploads/2020/11/Edit-Product-‹-Products-‹-Add-ons-—-WooCommerce-2018-10-23-16-39-47.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10260" src="https://help.codibu.com/wp-content/uploads/2020/11/Edit-Product-‹-Products-‹-Add-ons-—-WooCommerce-2018-10-23-16-39-47.png" alt="" width="950" height="466" /></a></b></p>
<p>Add options via text boxes, dropdowns, text areas, checkboxes, custom price inputs, even sample images. Add-ons can be added globally or per-product from the edit product page.</p>
<h3><b>Give your customers the options they want</b></h3>
<p>Product Add-Ons is one of the most popular extensions available for WooCommerce. It gives you and your customers even more options, including (but definitely not limited to):</p>
<p><b>Image-based selections</b><b><a href="https://help.codibu.com/wp-content/uploads/2020/11/Screen-Shot-2018-08-28-at-13.34.06.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10405" src="https://help.codibu.com/wp-content/uploads/2020/11/Screen-Shot-2018-08-28-at-13.34.06.png" alt="" width="1536" height="1064" /></a></b></p>
<p>A picture’s worth a thousand words, so why describe a customer’s personalization options when you can show them? With image-based selections, customers can see what they’re getting before they buy.</p>
<p><b>Flat fees</b><b><a href="https://help.codibu.com/wp-content/uploads/2020/11/Screen-Shot-2018-10-22-at-1.53.16-PM.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10407" src="https://help.codibu.com/wp-content/uploads/2020/11/Screen-Shot-2018-10-22-at-1.53.16-PM.png" alt="" width="1262" height="338" /></a></b></p>
<p>Charge customers a flat fee regardless of how many products they ordered. Perfect for a one-time set-up charge or a rush fee.</p>
<p><b>Percentage fees</b></p>
<p>Charge a fee for the add-on based on a percent of the total price—this is especially useful for service-based add-ons that can be tougher to boil down to a flat fee.</p>
<p><b>Text input</b></p>
<p>Let your customers enter custom text to create a custom t-shirt, add a monogram or personalize a card.</p>
<p><b>Dropdown</b></p>
<p>Customer can chose between a few pre-defined options with a drop-down field for your add-on.</p>
<p><b>Checkboxes</b><b><a href="https://help.codibu.com/wp-content/uploads/2020/11/Beanie-with-Logo-–-Add-ons-2018-10-23-20-25-43.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10222" src="https://help.codibu.com/wp-content/uploads/2020/11/Beanie-with-Logo-–-Add-ons-2018-10-23-20-25-43.png" alt="" width="958" height="1010" /></a></b></p>
<p>Make customization as easy and satisfying as checking a checkbox. Great for add-on services, like gift wrapping or express shipping.</p>
<p><b>Custom price</b></p>
<p>Let your customers name their price, perfect for tips, donations and gratuity!</p>
<p>Add-ons can be named, described, reordered and (optionally) given prices.</p>
<p>The extension also works with:</p>
<ul>
<li>WooCommerce Subscriptions – add additional options to subscription products.</li>
<li>WooCommerce Bookings – offer upgrades like an oil treatment for a massage, priority seats for their tour or a rush fee for their rental.</li>
</ul>
</div>
<div class="reviews"> </div><p>The post <a href="https://help.codibu.com/blog/product-add-ons-2/">Product Add-Ons</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://help.codibu.com/blog/product-add-ons-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WooCommerce Customer / Order / Coupon Export</title>
		<link>https://help.codibu.com/blog/woocommerce-customer-order-coupon-export/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=woocommerce-customer-order-coupon-export</link>
					<comments>https://help.codibu.com/blog/woocommerce-customer-order-coupon-export/#respond</comments>
		
		<dc:creator><![CDATA[JN C]]></dc:creator>
		<pubDate>Sun, 08 Nov 2020 15:51:10 +0000</pubDate>
				<guid isPermaLink="false">https://help.codibu.com/kb/woocommerce-customer-order-coupon-export/</guid>

					<description><![CDATA[<p>Overview The WooCommerce Customer / Order / Coupon Export extension lets you export your site’s customers, orders, or coupons to a CSV or XML file. Here are a<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://help.codibu.com/blog/woocommerce-customer-order-coupon-export/">WooCommerce Customer / Order / Coupon Export</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Overview</p>
<p>The <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/" rel="noopener noreferrer">WooCommerce Customer / Order / Coupon Export</a> extension lets you export your site’s customers, orders, or coupons to a CSV or XML file. Here are a few of the features offered by this plugin to make it easier to manage your site’s data:</p>
<ul>
<li>Export <strong>customers, orders, or coupons</strong>, in <strong>CSV or XML</strong> format, <strong>individually or in bulk</strong>.</li>
<li>Create your own <strong>custom formats</strong> to determine which fields are included and where they’re positioned.</li>
<li><strong>Automatically export and send</strong> your file to a remote server via FTP, HTTP POST, or email, such as to your fulfillment service.</li>
<li>Exports run asynchronously in the background, meaning you can <strong>export thousands of records</strong> while you complete other tasks – or take a well-earned break!</li>
</ul>
<p> <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export-developer-documentation/" target="_blank" rel="noopener noreferrer">Click here to read our developer documentation.</a></p>
<p>If you want to export orders to Stamps.com, please check out the <a href="https://help.codibu.com/blog/kb/stamps-com-xml-file-export" target="_blank" rel="noopener noreferrer">Stamps.com XML File Export</a> extension instead!</p>
<div class="woo-sc-box normal   ">
<strong><img decoding="async" class="emoji" role="img" draggable="false" src="https://help.codibu.com/wp-content/uploads/2022/03/1f4e3.svg" alt="&#x1f4e3;" /> Free add-ons available!</strong></p>
<p>&nbsp;</p>
<ul>
<li>Export refunded orders only</li>
<li>Export the customer VAT number – requires the <a href="https://help.codibu.com/blog/kb/woocommerce-taxamo" target="_blank" rel="noopener noreferrer">WooCommerce Taxamo</a> or <a href="https://help.codibu.com/blog/kb/eu-vat-number" target="_blank" rel="noopener noreferrer">EU VAT Number</a> plugin.</li>
</ul>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
<h3 id="section-2">Requirements</h3>
<ul>
<li>PHP 5.6+ (you can view this under <strong>WooCommerce &gt; Status</strong>)</li>
<li>WooCommerce 3.0.9+</li>
<li>Your site must support <strong>background processing</strong> to use automated exports or process exports in the background of your site. <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#faq-loopback">Click here to learn more about this requirement.</a></li>
</ul>
<p>&nbsp;</p>
<h3 id="section-3">Installation</h3>
<ol>
<li>Ensure your store meets the <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#requirements">plugin requirements</a>.</li>
<li>Download the extension from your <a href="http://woocommerce.com/my-account/downloads/" target="_blank" rel="noopener noreferrer">WooCommerce dashboard</a>.</li>
<li>Go to <strong>Plugins &gt; Add New &gt; Upload</strong> and select the ZIP file you just downloaded.</li>
<li>Click <strong>Install Now</strong> and then <strong>Activate</strong>.</li>
<li>That’s it! You’re all set. Keep reading this documentation to learn more about exporting customers, orders, and coupons from your site!</li>
</ol>
<p>&nbsp;</p>
<h2 id="section-4">Upgrading from another plugin</h2>
<p>If you’re upgrading from the XML Export plugin, you will see a notice in the most recent version of that plugin to migrate to this version. Your existing plugin subscription has automatically been converted to a subscription for the unified Customer / Order / Coupon Export plugin! You can migrate your site to this plugin seamlessly with a couple of clicks.</p>
<p>You should be <strong>connected to WooCommerce.com</strong> to completed this migration. If your site isn’t connected, you’ll be prompted to connect first. If you need help connecting, please <a href="https://help.codibu.com/blog/kb/managing-woocommerce-com-subscriptions/#i-am-not-using-or-have-not-previously-used-the-woocommerce-helper" rel="noopener noreferrer">check out this document</a>. If you can’t connect for some reason, please check our <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#upgrade-faq">FAQs</a> below for instructions on how to upgrade.</p>
<p>Once your site is connected to WooCommerce.com, you’ll see a notice to migrate to this plugin when you’re ready. With a single click, we’ll automatically take care of the full migration:</p>
<ul>
<li>The Customer / Order / Coupon Export plugin wil be downloaded from your WooCommerce.com account</li>
<li>The plugin will be installed and activated on your site</li>
<li>Your previous exports, custom formats, and automated export (if applicable) will be migrated from the XML Export plugin to this plugin</li>
</ul>
<p>&nbsp;</p>
<h3 id="section-5">Upgrade FAQs</h3>
<p><strong>Q: What if I’m unable to connect to WooCommerce.com? (For example, if your site sells CBD oil products.)</strong><br />
<strong>A:</strong> You can still migrate! You’ll need a couple more steps, though:</p>
<ol>
<li>Download the Customer / Order / Coupon Export plugin from your <a href="https://woocommerce.com/my-account/downloads/" target="_blank" rel="noopener noreferrer">WooCommerce.com account</a> (you will already have a new subscription for it).</li>
<li>Install this plugin under <strong>Plugins &gt; Add New &gt; Upload</strong>.</li>
<li>Activate this plugin.</li>
</ol>
<p>Once this new, unified plugin is activated, it will handle migrating your settings automatically for you.</p>
<hr />
<p><strong>Q: What will happen to my XML Export plugin subscription?</strong><br />
<strong>A:</strong> Your WooCommerce.com account was automatically gifted a new subscription for this plugin. Here’s how we handled the change:</p>
<ul>
<li>You have been gifted a subscription for this plugin that ends on the same date as your XML Export plugin subscription.</li>
<li>If your XML Export subscription was set to auto-renew, we’ve turned it off, and enabled auto-renew on the new plugin subscription. If your subscription did not auto-renew, we’ve left it disabled.</li>
<li>Your XML Export plugin subscription is still in your account for now, but it will end on its original date, and cannot be renewed again.</li>
</ul>
<hr />
<p><strong>Q: What if the migration doesn’t go smoothly?</strong><br />
<strong>A:</strong> The worst-case scenario is that we’re not able to migrate the plugin’s settings, and you would need to update them manually. This is a pretty foolproof process, though, that we have used for other plugin retirement migrations. <a href="https://woocommerce.com/my-account/create-a-ticket/">Our support team</a> is also happy to help out with any questions or migration concerns!</p>
<p>&nbsp;</p>
<h2 id="section-6">Export data manually</h2>
<p>You can export customers, orders, and coupons manually at any time. When you begin a <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-manual-bulk">bulk export</a> or export items from the <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-manual-orders">Orders</a> or <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-manual-users">Users</a> lists, a modal will appear to let you know the export is processing:</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10825" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-exported-started.png" alt="" width="643" height="246" /></p>
<p>If you leave this modal open while the export processes, you can download the file via that modal:</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-exported-completed.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10824" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-exported-completed.png" alt="" width="642" height="188" /></a></p>
<p>However, since customer and order exports are processed asynchronously in the background on your site, you can feel free to close the modal or leave your site completely while the export runs. This lets you keep working while your export processes behind the scenes. Exports are batch-processed, which allows your site to process an export for thousands of records without timing out.</p>
<p>If you leave the export modal, you can download the file from an admin notice that will appear when the export is ready or by going to <strong>WooCommerce &gt; Exports &gt; Export List</strong>, where we store exports for 14 days.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-export-list.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10826" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-export-list.png" alt="" width="1104" height="372" /></a></p>
<div class="woo-sc-box normal   "><strong>Note:</strong> If your site does not support background processing, your site is incapable of processing the export in the background. That means you’ll need to leave the export modal open while the export processes. <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#faq-loopback">Click here to read more about background processing and how to resolve this issue.</a></div>
<p>&nbsp;</p>
<h3 id="section-7">Exporting data in bulk</h3>
<p>To manually export data in bulk:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Go to <strong>WooCommerce &gt; Export</strong>.</li>
<li>On the <strong>Manual Export</strong> tab, update the following settings:
<ul>
<li><strong>Output type</strong>: Choose to export your file in CSV or XML format.</li>
<li><strong>Export type</strong>: Choose whether to export orders, customers, or coupons.</li>
<li><strong>Format</strong>: Select a <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-predefined">predefined</a> or <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom">custom</a> format.</li>
<li><strong>Filename</strong>: Enter a name for the file generated by this export.</li>
<li><strong>Mark as exported</strong>: Enable to ensure the exported data is excluded from future exports. <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#mark-exported">Click here to learn more about this setting.</a></li>
<li><strong>Batch processing</strong>: Only enable if your site <strong>does not</strong> support <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#faq-loopback">background processing</a>.</li>
</ul>
</li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-manual-settings.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10829" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-manual-settings.png" alt="" width="1129" height="635" /></a></p>
<ol>
<li>Update the <strong>Export Options</strong> section to target particular orders (and include order notes), customers, or coupons. The available options will change based on your selected <strong>Output type</strong>.</li>
<li>If you have <a href="https://help.codibu.com/blog/kb/woocommerce-subscriptions/" rel="noopener noreferrer">WooCommerce Subscriptions</a> activated on your site and you’re exporting orders, you can also choose to export subscriptions orders only.</li>
<li>Click <strong>Export</strong>.</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-manual-bulk-export-options.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10828" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-manual-bulk-export-options.png" alt="" width="884" height="708" /></a></p>
<p>You can download the export file <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-manual">as explained above</a>.</p>
<p>&nbsp;</p>
<h3 id="section-8">Exporting data from the Orders list</h3>
<p>You can export one or more orders from the <strong>Orders</strong> page by following the steps below:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Go to <strong>WooCommerce &gt; Orders</strong>.</li>
<li>Select one or more orders to export. You can set the <strong>Exported</strong> filter to show orders based on their export status.</li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-orders-export-select.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10833" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-orders-export-select.png" alt="" width="1054" height="424" /></a></p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>From the <strong>Bulk Actions</strong> menu, choose one of the following actions:
<ul>
<li><strong>Download to CSV</strong></li>
<li><strong>Download to XML</strong></li>
<li><strong>Export and Send</strong>: Export the selected orders and send them via FTP, HTTP POST, or email.</li>
</ul>
</li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-orders-export-bulk-actions.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10831" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-orders-export-bulk-actions.png" alt="" width="251" height="211" /></a></p>
<ol>
<li>Click <strong>Apply</strong>.
<ul>
<li style="list-style-type: none;">
<ul>
<li>If you selected an immediate download (e.g. <strong>Download to CSV</strong> or <strong>Download to XML</strong>), you can retrieve the download file <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-manual">as explained above</a>.</li>
<li>If you chose <strong>Export and Send</strong>, you’ll be prompted to select one of your <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-auto">automated order exports</a> so the same <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-auto-transfer">transfer method</a> can be used to send this export. Only automated order exports with FTP, HTTP POST, or email transfer methods can be selected for this type of export.</li>
</ul>
</li>
</ul>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-orders-export-export-and-send.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10832" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-orders-export-export-and-send.png" alt="" width="500" height="255" /></a></li>
</ol>
<p>Once an order is exported from the <strong>Orders</strong> page, it will be marked as exported. This will prevent the order from being included in future automated exports. <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#mark-exported">Click here to read more about this setting and how to change it.</a></p>
<p>&nbsp;</p>
<h3 id="section-9">Exporting data from the Users list</h3>
<p>You can export one or more customers (i.e. users that have made at least one purchase) from the <strong>Users</strong> page by following the steps below:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Go to <strong>Users</strong> and select one or more customers to export.</li>
<li>From the <strong>Bulk Actions</strong> menu, choose one of the following actions:
<ul>
<li><strong>Download to CSV</strong></li>
<li><strong>Download to XML</strong></li>
<li><strong>Export and Send</strong>: Export the selected customers and send them via FTP, HTTP POST, or email.</li>
</ul>
</li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-users-export-bulk-actions.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10836" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-users-export-bulk-actions.png" alt="" width="694" height="337" /></a></p>
<ol>
<li>Click <strong>Apply</strong>.
<ul>
<li>If you selected an immediate download (e.g. <strong>Download to CSV</strong> or <strong>Download to XML</strong>), you can retrieve the download file <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-manual">as explained above</a>.</li>
<li>If you chose <strong>Export and Send</strong>, you’ll be prompted to select one of your <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-auto">automated order exports</a> so the same <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-auto-transfer">transfer method</a> can be used to send this export. Only automated customer exports with FTP, HTTP POST, or email transfer methods can be selected for this type of export.</li>
</ul>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-users-export-export-and-send.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10837" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-users-export-export-and-send.png" alt="" width="503" height="258" /></a></p>
<p>Once an order is exported from the <strong>Users</strong> page, it will be marked as exported. This will prevent the customer from being included in future automated exports. <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#mark-exported">Click here to read more about this setting and how to change it.</a></p>
<p>&nbsp;</p>
<h2 id="section-10">Export data automatically</h2>
<p>If your site supports <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#faq-loopback">background processing</a>, you can create one or more automated exports to send customer or order export files on a recurring basis.</p>
<p>Before you get started, please read the following notes about automated exports:</p>
<ul>
<li><strong>Orders placed / customers created before activating this plugin will not be automatically exported.</strong> They can, however, be <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#mark-exported-change">marked as exported</a> if you’d like.</li>
<li><strong>Only items marked as not exported will be included in automated exports.</strong> <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#mark-exported">Click here to learn more.</a></li>
<li><strong>Exports are scheduled in your WordPress site’s timezone.</strong> You can find your timezone settings under <strong>Settings &gt; General</strong>.</li>
</ul>
<p>&nbsp;</p>
<h3 id="section-11">Create an automated export</h3>
<p>You can create an automated export by following the steps below:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Go to <strong>WooCommerce &gt; Export &gt; Automated Exports</strong> and click <strong>Add New</strong>.</li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-automated-export-new.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10814" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-automated-export-new.png" alt="" width="783" height="422" /></a></p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Update the following settings for the automated export:
<ul>
<li><strong>Enabled</strong>: Turn the automated export on or off.</li>
<li><strong>Export name</strong>: Enter an internal name for the export.</li>
<li><strong>Output type</strong>: Choose to export your file in CSV or XML format.</li>
<li><strong>Export type</strong>: Choose whether to export orders, customers, or coupons.</li>
<li><strong>Filename</strong>: Enter a name for the files generated for the export.</li>
<li><strong>Format</strong>: Select a <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-predefined">predefined</a> or <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom">custom</a> format.</li>
</ul>
</li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-automated-export-settings.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10817" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-automated-export-settings.png" alt="" width="663" height="501" /></a></p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Update the <strong>Trigger automated export</strong> setting to determine when the export will run. <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-auto-schedule">Click here to read more about scheduling.</a>
<ul>
<li>You can run order exports as orders or paid or on set intervals.</li>
<li>You can only run customer exports on set intervals.</li>
</ul>
</li>
<li>Update the <strong>Method</strong> setting to determine how the export will be sent / transferred. <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-auto-transfer">Click here to read more about transfer methods.</a></li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-automated-export-schedule.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10816" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-automated-export-schedule.png" alt="" width="934" height="864" /></a></p>
<ol>
<li>If you’re exporting orders, you can update the <strong>Export Options</strong> section to target particular orders and include order notes.</li>
<li>Click <strong>Save</strong>.</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-automated-export-options.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10815" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-automated-export-options.png" alt="" width="1330" height="804" /></a></p>
<p>You can return to the <strong>Automated Exports</strong> tab to view and manage your automated exports.</p>
<p>&nbsp;</p>
<h3 id="section-12">Export schedules</h3>
<p>This plugin relies on WP-Cron (the established way of performing recurring tasks within WordPress) to schedule automated export jobs. Unfortunately, the WP-Cron system is not always perfectly accurate – it requires constant traffic to your site to trigger events at the right times, which can be difficult for sites with less traffic.</p>
<p>There are two workarounds for this accuracy issue:</p>
<ul>
<li><strong>Setup a real system cron on your server that ensures WP-Cron is triggered every minute.</strong> Click here to learn about setting this up. Your hosting provider should be able to help with this workaround, which would be ideal since it’s guaranteed to solve the issue with random times.</li>
<li><strong>Use a service (e.g. Pingdom or UptimeRobot) to ping your site every few minutes.</strong> This will ensure WP-Cron fires regularly.</li>
</ul>
<p>&nbsp;</p>
<h3 id="section-13">Export transfers</h3>
<p>&nbsp;</p>
<h4 id="transfer-methods">Transfer methods</h4>
<p>There are four methods you can use to transfer automated exports:</p>
<ul>
<li><a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-method-local">Locally</a></li>
<li><a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-method-ftp">FTP</a></li>
<li><a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-method-http">HTTP POST</a></li>
<li><a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-method-email">Email</a></li>
</ul>
<div class="woo-sc-box normal   "><strong>Note:</strong> When you choose to <strong>Export and Send</strong> data from the <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-manual-orders">Orders</a> or <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-manual-users">Users</a> pages, you’ll be prompted to select an automated export. The plugin will then use that export’s transfer method settings to send the exported data.</div>
<p><a id="#export-test"></a>The FTP, HTTP Post, and Email methods include a test feature that you can use to confirm that everything is setup properly before activating the automated export.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-automated-export-test.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10818" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-automated-export-test.png" alt="" width="675" height="265" /></a></p>
<p>&nbsp;</p>
<h5 id="locally">Locally</h5>
<p>Exports transferred locally are available for 14 days in the <strong>Export List</strong>. There’s no special setup required for this transfer method.</p>
<p>&nbsp;</p>
<h5 id="ftp">FTP</h5>
<p>To transfer via FTP, you’ll need to update the following settings:</p>
<ul>
<li><strong>Server address</strong>: Enter an IP address or hostname for the FTP server.</li>
<li><strong>Username</strong></li>
<li><strong>Password</strong></li>
<li><strong>Port</strong>: Enter “21” for regular FTP, “22” for SFTP, or “990” for FTP with Implicit SSL.</li>
<li><strong>Initial path</strong>: Enter the initial path for the FTP server <strong>without a leading slash and with a trailing slash</strong>. If you’re connecting via SFTP, the initial path should be the full path of the folder if your username doesn’t default to the <code>HOME</code> directory.</li>
<li><strong>Security</strong>: Choose your FTP server’s security.</li>
<li><strong>Passive mode</strong>: Enable to turn on passive mode for FTP connections. This should be <strong>disabled</strong> unless you are having issues connecting, especially if you’re seeing the <code>PORT command successful</code> message followed by a timeout in the error log (<strong>WooCommerce &gt; Status &gt; Logs</strong>).</li>
</ul>
<div class="woo-sc-box normal   "><strong>Don’t know your FTP settings or credentials?</strong> Get in touch with your FTP provider to confirm any details you aren’t sure about.</div>
<p>&nbsp;</p>
<h5 id="http-post">HTTP POST</h5>
<p>To transfer via HTTP POST, you’ll need to enter the <strong>HTTP POST URL</strong> where the export file should be sent. This is a great option for sending files to Zapier.</p>
<p>&nbsp;</p>
<h5 id="email">Email</h5>
<p>To transfer via email, you’ll need to update a few settings:</p>
<ul>
<li><strong>Recipient(s)</strong>: Enter one or more (comma-separated) emails that should receive the export. If left blank, the export will send to the site admin’s email address, which is shown in the field’s tooltip and can be edited by going to <strong>Settings &gt; General</strong>.</li>
<li><strong>Email subject</strong>: Set a subject line for the export email to help recipients identify the export file.</li>
</ul>
<p>&nbsp;</p>
<h4 id="transfer-monitoring">Transfer monitoring</h4>
<p>When you configure automated exports, the plugin will track the transfer status of each export under the <strong>Export List</strong>. If a transfers fail, any site user who can manage WooCommerce (typically admins and shop managers) will be notified via admin notice.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-transfer-failing.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10835" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-transfer-failing.png" alt="" width="785" height="185" /></a></p>
<p>If several failures occur consecutively, an admin notice will recommend checking out the logs and export settings to ensure the automated export is setup properly.</p>
<p>&nbsp;</p>
<h2 id="section-14">Marking data as exported</h2>
<p>Because this plugin supports manual and multiple automated exports, it’s important to consider what will happen to an order or customers after export. This is especially important for stores that send automated exports to external sources. You wouldn’t want to include the same order in multiple automated exports to your fulfillment center, but you also wouldn’t want to exclude that order from an automated export if you exported the order manually for some other purpose.</p>
<p>To give you complete control over what data are included / excluded from your exports, we’ve included the ability to change export status (i.e. whether an item was exported or not) both at a global level (e.g. impacts all your exports) or for individual automated exports.</p>
<p>&nbsp;</p>
<h3 id="section-15">What happens when something is exported?</h3>
<p>When you <strong>manually</strong> export an order or customer, it is marked as exported and will be excluded from all future automated exports. However, the order or customer will be included in future manual exports. If you <strong>do not</strong> want your manual export to impact future automated exports, be sure to <strong>disable</strong> the <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-manual-bulk">Mark as Exported setting</a> before exporting.</p>
<p>When you <strong>automatically</strong> export an order or customers, it is marked as exported <strong>for that automated export</strong> and will be excluded from <strong>future runs of that automated export only</strong>. This prevents you from sending the same order over and over again to your fulfillment center.</p>
<p>&nbsp;</p>
<h3 id="section-16">How can I change whether something is marked as exported?</h3>
<p>You can mark orders / customers as exported or not exported from a few locations.</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><strong>Orders or Users lists.</strong> Use the <strong>Mark as Exported</strong> or <strong>Mark as Not Exported</strong> bulk actions to change the export status for the selected objects. This will change the export status <strong>for all exports</strong>.</li>
</ul>
</li>
</ul>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-mark-as-exported.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10830" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-mark-as-exported.png" alt="" width="310" height="261" /></a></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><strong>Order detail or User detail pages.</strong> Select a specific order or user to toggle the export status at a global level (i.e. impacts all exports) or for one or more automated exports. This lets you determine whether an order or customer should be included in particular future automated exports.</li>
</ul>
</li>
</ul>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-exported-by.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10823" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-exported-by.png" alt="" width="1094" height="544" /></a></p>
<div class="woo-sc-box normal   "><strong>Note:</strong> Changing the export status to “not exported” is not a permanent change. This status will revert if the order or customer is included in a future export, <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#mark-exported-process">as defined here</a>.</div>
<p>&nbsp;</p>
<h2 id="section-17">Export formats</h2>
<p>We offer several <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-predefined">predefined formats</a>, but you can also create your own <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom">custom format</a> to ensure the file format meets your exact specifications.</p>
<div class="woo-sc-box normal   "><strong>Note:</strong> While we do our best to not change column ordering in our default formats, we <strong>strongly recommend not relying on column ordering</strong>, since any changes we must make will break integrations that rely on a specific order. Instead, we recommend using the <strong>column names / IDs</strong>, which are guaranteed to never change.</div>
<p>&nbsp;</p>
<h3 id="section-18">Predefined formats</h3>
<p>You can use one of our predefined formats to export your customers, orders, and coupons. The CSV Import formats are compatible with our <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/" rel="noopener noreferrer">Customer / Order / Coupon CSV Import Suite</a> plugin.</p>
<p>&nbsp;</p>
<h4 id="customer-exports">Customer exports</h4>
<ul>
<li><a href="https://docs.google.com/spreadsheets/d/1uB9Xd2nq9vIb5OUgn91N6XeYKzCTDZ_2Y8wK294PV9E/edit?usp=sharing" target="_blank" rel="noopener noreferrer">Default CSV format</a></li>
<li>Default XML format</li>
<li><a href="https://docs.google.com/spreadsheets/d/1uB9Xd2nq9vIb5OUgn91N6XeYKzCTDZ_2Y8wK294PV9E/edit#gid=132380672" target="_blank" rel="noopener noreferrer">CSV Import format</a></li>
</ul>
<p>&nbsp;</p>
<h4 id="order-exports">Order exports</h4>
<ul>
<li><a href="https://docs.google.com/spreadsheets/d/1ftgpGz8igrGdk1HQkY1JrHf3BO4FRzubXMBr8ajtc9Y/edit?usp=sharing" target="_blank" rel="noopener noreferrer">Default CSV format</a></li>
<li><a href="https://docs.google.com/spreadsheets/d/1ftgpGz8igrGdk1HQkY1JrHf3BO4FRzubXMBr8ajtc9Y/edit#gid=1858268422" target="_blank" rel="noopener noreferrer">Default – One row per item CSV format</a></li>
<li><a href="https://gist.github.com/bekarice/07b1526ddd1519db7698bcfc9e72ee55" target="_blank" rel="noopener noreferrer">Default XML format</a></li>
<li><a href="https://docs.google.com/spreadsheets/d/1ftgpGz8igrGdk1HQkY1JrHf3BO4FRzubXMBr8ajtc9Y/edit#gid=2046124808" target="_blank" rel="noopener noreferrer">CSV Import format</a></li>
</ul>
<p>&nbsp;</p>
<h4 id="coupon-exports">Coupon exports</h4>
<ul>
<li><a href="https://docs.google.com/spreadsheets/d/1mJg-M8phgwhssQIo8a__IatAbPhwQlrT8GG_MQnznIQ/edit#gid=0target=" target="_blank" rel="noopener noreferrer">CSV Import format</a></li>
</ul>
<div class="woo-sc-box normal   "><strong>Note:</strong> You can download our sample CSV files from Google Sheets by clicking <strong>File &gt; Download as &gt; CSV</strong> or make a copy to your own Google Sheets to modify by clicking <strong>File &gt; Make a Copy</strong>.</div>
<p>&nbsp;</p>
<h3 id="section-19">Create custom formats</h3>
<p>You can create multiple custom export formats, which are useful if you need to rearrange, remove, or add columns to your export. Custom formats can be used in your manual or automated exports.</p>
<p>&nbsp;</p>
<h4 id="custom-csv-format">Custom CSV format</h4>
<p>Follow the steps below to create a custom CSV export format:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Go to <strong>WooCommerce &gt; Exports &gt; Custom Formats</strong>.</li>
<li>Select the export type you want to create – <strong>Orders</strong>, <strong>Customers</strong>, or <strong>Coupons</strong>.</li>
<li>Click <strong>Add new CSV format</strong>.</li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-custom-format-csv-new.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10819" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-custom-format-csv-new.png" alt="" width="734" height="389" /></a></p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Select an existing format to use as a starting point for your custom format and click <strong>Load</strong>, or click <strong>X</strong> to start from scratch.</li>
<li>Update the <strong>Format Options</strong>:
<ul>
<li><strong>Name</strong>: Enter an internal name for your export format.</li>
<li><strong>CSV delimiter</strong>: Select a delimiter to separate columns in your file.</li>
<li><strong>Include all meta</strong>: Choose whether to include all meta in the export. <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom-meta">Click here to learn more about adding meta to exports.</a></li>
</ul>
</li>
<li>If you are creating an orders export format, you can also update the following extra options:
<ul>
<li><strong>A row represents</strong>: Choose whether a row should represent a single order or a single line item (e.g. an order with multiple line items will span multiple rows).</li>
<li><strong>Item columns should use</strong>: Choose whether items columns (e.g. line items) should be pipe-delimited or JSON format.
<ul>
<li><strong>JSON example</strong>: typically used in the predefined CSV Import format for orders – <code>[{"product_id":99,"product_name":"Woo Album","quantity":1,"total":19.99}]</code></li>
<li><strong>Pipe-delimited example</strong>: typically used in the predefined Default CSV format for orders – <code>product_id:99|sku:woo-album|name:Woo Album|quantity:1|total:19.99</code></li>
</ul>
</li>
</ul>
</li>
<li>Update the <strong>Column Mapping</strong> to determine which fields will appear on your export.
<ul>
<li>When adding columns, the <strong>data source</strong> determines what data will appear in the export. You can select an option from the list, <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom-meta">add a custom meta key</a>, or <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom-static">add a static value</a>.</li>
</ul>
</li>
<li>Click <strong>Save</strong>.</li>
</ol>
</li>
</ol>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4 id="custom-xml-format">Custom XML format</h4>
<p>Follow the steps below to create a custom XML export format:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Go to <strong>WooCommerce &gt; Exports &gt; Custom Formats</strong>.</li>
<li>Select the export type you want to create – <strong>Orders</strong>, <strong>Customers</strong>, or <strong>Coupons</strong>.</li>
<li>Click <strong>Add new XML format</strong>.</li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-custom-format-xml-new.png"><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-1900967" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-custom-format-xml-new.png?w=734" sizes="(max-width: 734px) 100vw, 734px" srcset="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-custom-format-xml-new.png 734w, https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-custom-format-xml-new.png?resize=550,291 550w" alt="Create new custom XML format" width="734" height="389" /></a></p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Select an existing format to use as a starting point for your custom format and click <strong>Load</strong>, or click <strong>X</strong> to start from scratch.</li>
<li>Update the <strong>Format Options</strong>:
<ul>
<li><strong>Name</strong>: Enter an internal name for your export format.</li>
<li><strong>Indent output</strong>: Enable to pretty print the XML output with indents, which is helpful if a human is reading the file but unnecessary otherwise.</li>
<li><strong>Include all meta</strong>: Choose whether to include all meta in the export. <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom-meta">Click here to learn more about adding meta to exports.</a></li>
</ul>
</li>
<li>Update the <strong>Column Mapping</strong> to determine which fields will appear on your export.
<ul>
<li>When adding columns, the <strong>data source</strong> determines what data will appear in the export. You can select an option from the list, <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom-meta">add a custom meta key</a>, or <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom-static">add a static value</a>.</li>
</ul>
</li>
<li>Click <strong>Save</strong>.</li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-custom-format-xml-settings.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10821" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-custom-format-xml-settings.png" alt="" width="843" height="685" /></a></p>
<p>&nbsp;</p>
<h4 id="adding-custom-meta">Adding custom meta</h4>
<p>You can add columns for order, coupon, or user meta to custom formats.</p>
<p>To add custom meta, select “Meta field…” from the <strong>Data source</strong> drop-down menu and enter the <strong>Meta key</strong>.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-custom-meta.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10822" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-custom-meta.png" alt="" width="816" height="91" /></a></p>
<p>You <strong>must know the correct meta key</strong> for the data when adding a column for meta. If you’re not sure, running an export with the <strong>Include all meta</strong> setting enabled will include all meta keys, so you can use that to find the meta key you want to include in your custom format going forward.</p>
<div class="woo-sc-box normal   "><strong>Note:</strong> While this plugin can export order metadata, it cannot export metadata for line items. Line item metadata can only be added as a single column when the <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom-CSV">A row represents setting</a> is configured to “A single line item” and the item meta key is added to the column list.</div>
<p>&nbsp;</p>
<h4 id="adding-static-values">Adding static values</h4>
<p>You can add columns for static values to custom formats. You can use this feature to add blank columns or columns with a set value for all rows (e.g. your store’s name).</p>
<p>To add a static value, select “Static value…” from the <strong>Data source</strong> drop-down menu and enter the <strong>Value</strong>.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-static-value.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10834" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-static-value.png" alt="" width="816" height="91" /></a></p>
<p>&nbsp;</p>
<h2 id="section-20">Compatible plugins</h2>
<p>This is a list of plugins (though not an exhaustive one!) that are known to be compatible with WooCommerce Customer / Order / Coupon Export. Columns are automatically added for plugins in this list; they are compatible out-of-the-box.</p>
<div class="woo-sc-box normal   "><strong>Note</strong>: Just because a plugin is missing from this list doesn’t mean it’s <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#troubleshooting-incompatible">incompatible</a>! You can also consult our <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export-developer-documentation/" rel="noopener noreferrer">developer documentation</a> for compatibility with other extensions.</div>
<table>
<thead>
<tr>
<th>EXTENSION</th>
<th>CSV FIELDS</th>
<th>XML FIELDS</th>
<th>NOTES</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="https://help.codibu.com/blog/kb/woocommerce-checkout-add-ons" target="_blank" rel="noopener noreferrer">Admin Custom Order Fields</a></td>
<td><strong>admin_custom_order_field</strong>_[column name/ID]<br />
(value / option for custom field)</td>
<td><strong>CustomFields<br />
– ID<br />
– Name<br />
– Value</strong></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><a href="https://help.codibu.com/blog/kb/woocommerce-avatax" target="_blank" rel="noopener noreferrer">AvaTax</a></td>
<td><strong>vat_id</strong> (customer VAT ID)<br />
<strong>tax_exemption</strong> (customer tax exemption status)</td>
<td><strong>VATid</strong>(customer VAT ID)<br />
<strong>TaxExemption</strong>(customer tax exemption code)</td>
<td>&nbsp;</td>
</tr>
<tr>
<td><a href="https://help.codibu.com/blog/kb/woocommerce-checkout-add-ons/" rel="noopener noreferrer">Checkout Add-ons</a></td>
<td><strong>checkout_add_on_</strong>[add-on name/ID] (add-on value)<br />
<strong>checkout_add_on_total_</strong>[add-on name/ID] (add-on cost)</td>
<td><strong>CheckoutAddOns<br />
– ID<br />
– Name<br />
– Value<br />
– Cost</strong></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><a href="https://help.codibu.com/blog/kb/checkout-field-editor/" rel="noopener noreferrer">Checkout Field Editor</a></td>
<td><strong>field_name</strong></td>
<td><strong>CheckoutFields<br />
– FieldName</strong></td>
<td>Column name generated from field name</td>
</tr>
<tr>
<td><a href="https://help.codibu.com/blog/kb/cost-of-goods" target="_blank" rel="noopener noreferrer">Cost of Goods</a></td>
<td><strong>order_cost_total<br />
total_cost<br />
item_cost</strong></td>
<td><strong>OrderCostTotal<br />
LineCostTotal<br />
ItemCost</strong></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><a href="https://help.codibu.com/blog/kb/customer-order-coupon-csv-import-suite/" target="_blank" rel="noopener noreferrer">Customer / Order / Coupon CSV Import Suite</a></td>
<td>N/A</td>
<td>N/A</td>
<td>Use <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-predefined">CSV Import formats</a></td>
</tr>
<tr>
<td><a href="https://help.codibu.com/blog/kb/sequential-order-numbers-pro" target="_blank" rel="noopener noreferrer">Sequential Order Numbers Pro</a></td>
<td><strong>order_number<br />
order_number_formatted</strong></td>
<td><strong>OrderNumber<br />
OrderNumberFormatted</strong></td>
<td>Uses SONP order number</td>
</tr>
<tr>
<td><a href="https://help.codibu.com/blog/kb/shipment-tracking" target="_blank" rel="noopener noreferrer">Shipment Tracking</a></td>
<td><strong>tracking_provider<br />
custom_tracking_provider<br />
custom_tracking_link<br />
tracking_number<br />
date_shipped<br />
tracking_ID<br />
formatted_tracking_provider<br />
formatted_tracking_link</strong></td>
<td><strong>tracking_provider<br />
custom_tracking_provider<br />
custom_tracking_link<br />
tracking_number<br />
date_shipped<br />
tracking_ID<br />
formatted_tracking_provider<br />
formatted_tracking_link</strong></td>
<td>When this plugin is activated, these fields will be automatically added within a <strong>shipment_tracking</strong> field (CSV) or <strong>ShipmentTracking</strong> tag XML</td>
</tr>
<tr>
<td><a href="https://help.codibu.com/blog/kb/woocommerce-subscriptions/" rel="noopener noreferrer">Subscriptions</a></td>
<td>N/A</td>
<td>N/A</td>
<td>Can export subscription or renewal orders on the <strong>Export</strong> tab. <strong>This plugin does not export subscriptions data that you can import elsewhere!</strong></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h2 id="section-21">Frequently asked questions</h2>
<p><strong id="faq-refunds">Q: Can I export refunds?</strong><br />
<strong>A:</strong> Yes! This plugin is compatible with refunds while using one of the <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-predefined">predefined formats</a> or <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom">custom formats</a> if the following fields are added:</p>
<ul>
<li><code>refunded_total</code>: The amount refunded in the order</li>
<li><code>Item_refunded</code>: The total refunded for a particular item in the order</li>
</ul>
<hr />
<p><strong id="faq-missing-customer">Q: There are users missing from my customer export. Where are they?</strong><br />
<strong>A:</strong> Users must place at least one order before they will be considered “customers” and included in this export.</p>
<hr />
<p><strong id="faq-duplicate">Q: Can I duplicate columns in my custom export format?</strong><br />
<strong>A:</strong> No, we automatically remove all duplicate sources because columns are used as keys for the column headers.</p>
<hr />
<p><strong id="faq-export-status">Q: Can I remove the Export Status column from the Orders or Users pages?</strong><br />
<strong>A:</strong> Sure thing! You can hide this column (and many others!) by going to the <strong>Screen Options</strong> pages at the top of these screens.</p>
<p>&nbsp;</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-export-status.png"><img loading="lazy" decoding="async" class="aligncenter wp-image-10827 size-full" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-export-status.png" alt="" width="762" height="232" /></a></p>
<p>&nbsp;</p>
<h3 id="section-22">Background processing</h3>
<p><strong id="faq-lookback-test">Q: How can I tell if my site supports background processing?</strong><br />
<strong>A:</strong> Go to <strong>WooCommerce &gt; Status &gt; Tools</strong> and run the <strong>Background Processing Test</strong>. If your site fails this test, please contact your host to enable background processing / loopback connections. While some hosts may identify this as a security issue, there’s no threat to using loopback connections and, if done properly, it won’t increase server usage. Quality hosts will mitigate increased server usage with rate limiting.</p>
<hr />
<p><strong id="faq-loopback-required">Q: My site doesn’t support background processing – do I need this to use the plugin?</strong><br />
<strong>A:</strong> Strictly speaking, no – you can still run exports without background processing enabled for your site.</p>
<p>However, background processing is required to run <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-auto">automated exports</a>. Additionally, without background processing, you can’t leave the export modal while running a <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export//#export-manual">manual export</a>. So while it’s not required, we highly recommend it for the best experience with this plugin!</p>
<p>More importantly, many current and upcoming features in WooCommerce need loopback connections to function. For example, the database updater (already in use) and future plans for backgrounded email sending, both of which uses the same type of background processing (and requires loopback connections). It’s essential that a host for an eCommerce site support this.</p>
<p>&nbsp;</p>
<h3 id="section-23">Excel display issues</h3>
<p><strong id="faq-excel-zeros">Q: Why are leading zeros (e.g. in a ZIP code) missing from my Excel export?</strong><br />
<strong>A:</strong> By default, Excel hides leading zeros. This is most common with ZIP codes like “02111” – Excel will automatically hide the first zero and display “2111”. However, the zero is included in the export – you can force Excel to show this by formatting the column as “Text”.</p>
<hr />
<p><strong id="faq-excel-characters">Q: Why are the foreign / special characters not displaying correctly in Excel?</strong><br />
<strong>A:</strong> We’ll need to force Excel to use UTF-8 encoding to render these characters properly by adding this snippet to your site – please be sure you know how to safely add custom code to your site before adding this snippet:</p>
<p><code>add_filter( 'wc_customer_order_csv_export_enable_bom', '__return_true' );<br />
</code></p>
<div class="woo-sc-box normal   "><strong>Note:</strong> Excel for Mac doesn’t support UTF-8 characters, so your exports may not display accented or special characters properly. We recommend using a different application, such as:</p>
<p>&nbsp;</p>
<ul>
<li>Google Sheets</li>
<li>LibreOffice</li>
<li>Numbers</li>
</ul>
<p>&nbsp;</p>
</div>
<hr />
<p><strong id="faq-excel-column">Q: How can I ensure that Excel won’t show all my data in one column?</strong><br />
<strong>A:</strong> It sounds like your computer is setup to use a different delimiter than the standard comma. In most cases, the alternative delimiter is a semicolon. You can change delimiters in your <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats">export format</a>.</p>
<p>&nbsp;</p>
<h3 id="section-24">XML format questions</h3>
<p><strong id="faq-xml-product-addons">Q: Can I separate <a href="https://help.codibu.com/blog/kb/product-add-ons-2/" rel="noopener noreferrer">Product Add-Ons</a> in the XML file so they’re easier to find?</strong><br />
<strong>A:</strong> Unfortunately, the way that Product Add-Ons are stored on orders makes it nearly impossible to accurately get all add-ons for an order, so we do not support this for XML exports. However, we do have a code snippet available that should work for most stores, but please be sure you know how to safely add custom code to your site and test this thoroughly!</p>
<hr />
<p><strong id="faq-xml-encoding">Q: Can I change the character encoding or XML version? My site uses special characters.<br />
</strong><br />
<strong>A:</strong> Absolutely! The defaults should work for most sites, but if you need to filter the character encoding, standalone definition, XML version, or other format definitions, you can do so using the <code>wc_customer_order_export_suite_format_definition</code> filter. Here’s a sample snippet to get you started – please be sure you know how to safely add custom code to your site before installing this snippet!</p>
<p>&nbsp;</p>
<h2 id="section-25">Troubleshooting</h2>
<p>Here are a few common troubleshooting topics that we’re addressing in this section:</p>
<ul>
<li><a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#troubleshooting-incompatible">Another plugin’s data isn’t showing up in the export</a></li>
<li><a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#troubleshooting-queued">Exports are remaining queue / freezing</a></li>
<li><a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#troubleshooting-slow">Exports are slow / receiving out-of-memory errors</a></li>
<li><a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#troubleshooting-ssh2-extension">SSH2 Extension is not installed, cannot connect via SFTP</a></li>
<li><a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#troubleshooting-other">Other issues</a></li>
</ul>
<p>&nbsp;</p>
<h3 id="section-26">Incompatible plugins</h3>
<p>There are a few plugins that are incompatible with this plugin:</p>
<ul>
<li><a href="https://help.codibu.com/blog/kb/product-add-ons-2/" rel="noopener noreferrer">Product Add-Ons</a>: While add-on data will be displayed in line item meta when exported, the plugin does not show add-ons separately for each line item.</li>
<li><a href="https://help.codibu.com/blog/kb/woocommerce-bookings/" rel="noopener noreferrer">WooCommerce Bookings</a>: Version 1.10.0+ changed the way booking data is related to an order. Because booking data are no longer part of the order or order item data, bookings won’t be exported automatically.</li>
</ul>
<p>&nbsp;</p>
<h3 id="section-27">Exports remaining queued</h3>
<p><strong>If your exports freeze without completing</strong>, your site may be blocking HTTP requests in some way. Exports are processed asynchronously in the background, which requires your site to make requests to itself for information. As such, your site <strong>cannot block HTTP requests</strong> or exports will not start processing.</p>
<p>Here are some common causes of blocked requests:</p>
<ul>
<li><strong>If your site is hosted with WordPress.com, the options table may be too limited.</strong> When setting up WooCommerce on WordPress.com, the site database must be updated; sometimes the options table limit is outdated at 64 characters when it should be 255 characters (as of WordPress 4.4). This limit should be fixed so that export jobs save properly. If WordPress.com confirms that the limit is 255 characters, please <a href="https://woocommerce.com/my-account/create-a-ticket/" target="_blank" rel="noopener noreferrer">get in touch with our support team</a>.</li>
<li><strong>Using a maintenance mode or blocking plugin.</strong> For example, the Airplane Mode plugin for developers will block HTTP requests.</li>
<li><strong>Your site is behind BasicAuth</strong>, which will require you to login before you can visit the site. This prevents background requests from completing. For example, WP Engine staging sites often use basic authentiacation to block site access. Click here to learn about correcting this issue, or disable BasicAuth while testing exports.</li>
<li><strong>Host files</strong>: For developers – hosts files to resolve a site to a different domain can’t be used with Customer/Order/Coupon Export and many other WooCommerce plugins. Customer/Order/Coupon Export uses <code>wp_safe_remote_*</code> requests to get data from itself, and these requests require a domain name. If your site is pointing to a domain from a hosts file, rather than a public site, these requests will fail.</li>
<li><strong>Your site host blocks requests from servers to themselves</strong>, called loopback connections. <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#faq-loopback">Click here to learn more about this requirement and how to test for this.</a></li>
</ul>
<pre><code>&lt;a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-faq-basic-authentication.png"&gt;&lt;img src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-export-faq-basic-authentication.png?w=950" alt="Basic authentication sign in" width="950" height="620" class="aligncenter size-large wp-image-1900983" /&gt;&lt;/a&gt;
</code></pre>
<p>&nbsp;</p>
<h3 id="section-28">Slow exports / out-of-memory errors</h3>
<p>If your exports are slow or you’re encountering out-of-memory errors, please contact your host to <strong>confirm that the MySQLi extension is installed on your server and used by WordPress</strong>.</p>
<p>Customer / Order / Coupon Export defaults to streaming exports to their destination instead of sending an entire file to improve server efficiency and reduce the likelihood of out-of-memory errors with very large exports. This feature requires the MySQLi extension to be enabled and used by WordPress.</p>
<p>In rare cases, the extension is installed but not being used by WordPress. This can be remedied by adding <code>define( 'WP_USE_EXT_MYSQL', false );</code> to your <code>wp-config.php</code> file.</p>
<p>&nbsp;</p>
<h3 id="section-29">SSH2 Extension is not installed, cannot connect via SFTP</h3>
<p>If you see the error <i>“Test failed: SSH2 Extension is not installed, cannot connect via SFTP”</i> when trying to setup an automated SFTP export, you will need to reach out to your host to make sure the SSH2 extension is installed for PHP.</p>
<p>For those hosted with WordPress.com, this extension is not available, and unfortuantely SFTP exports will not be possible. You will need to use a different FTP type instead.</p>
<p>&nbsp;</p>
<h3 id="section-30">Other issues</h3>
<p>Having difficulty with the plugin?</p>
<ul>
<li>Please ensure your site meets the <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#requirements">plugin requirements</a>.</li>
<li>Check the <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#faqs">FAQs</a> to see if they address your question.</li>
<li><strong>Having trouble adding custom meta fields?</strong> <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#formats-custom-meta">Please ensure your meta keys are correct.</a></li>
<li>Having a problem with an automated export delivery?
<ul>
<li>Confirm that your FTP, HTTP Post, or email information is correct.</li>
<li><a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-test">Run a test</a> to see if the transfer method is working properly.</li>
<li>Review our section on <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/#export-auto-schedule">export schedules</a> to see if there might be any issues with your export schedule.</li>
<li>If you encounter the following error when exporting via FTP – <code>Error message: Uncaught Error: Call to undefined function ftp_connect()</code> check <code>phpinfo()</code> to ensure that your server’s PHP has FTP support enabled.</li>
</ul>
</li>
<li>If you’re experiencing a different issue, please <strong>turn on and review error logs</strong> under <strong>WooCommerce &gt; System Status &gt; Logs</strong> and get in touch with support if this doesn’t help you identify the problem.</li>
</ul><p>The post <a href="https://help.codibu.com/blog/woocommerce-customer-order-coupon-export/">WooCommerce Customer / Order / Coupon Export</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://help.codibu.com/blog/woocommerce-customer-order-coupon-export/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WooCommerce Authorize.Net AIM</title>
		<link>https://help.codibu.com/blog/woocommerce-authorize-net-aim/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=woocommerce-authorize-net-aim</link>
					<comments>https://help.codibu.com/blog/woocommerce-authorize-net-aim/#respond</comments>
		
		<dc:creator><![CDATA[JN C]]></dc:creator>
		<pubDate>Sun, 08 Nov 2020 15:50:20 +0000</pubDate>
				<guid isPermaLink="false">https://help.codibu.com/kb/woocommerce-authorize-net-aim/</guid>

					<description><![CDATA[<p>Overview WooCommerce Authorize.Net AIM&#160;integrates with Authorize.Net payment services to provide secure and powerful payment processing for your WooCommerce store. Accept credit cards and optionally accept eChecks<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://help.codibu.com/blog/woocommerce-authorize-net-aim/">WooCommerce Authorize.Net AIM</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Overview</p>
<p><a href="https://help.codibu.com/blog/kb/authorize-net">WooCommerce Authorize.Net AIM</a>&nbsp;integrates with Authorize.Net payment services to provide secure and powerful payment processing for your WooCommerce store. Accept credit cards and optionally accept eChecks on your WooCommerce store via Authorize.Net!</p>
<p>This plugin also supports&nbsp;<strong>Accept.js</strong>&nbsp;from Authorize.Net for improved security and decreased PCI compliance responsibility. When Accept.js is used, customer credit card information is no longer sent directly through your server and instead is handled directly by Authorize.Net, meeting the lower level PCI SAQ A-EP compliance level. You can&nbsp;learn more about Accept.js here.</p>
<div class="woo-sc-box note   "><strong>Please note:</strong>&nbsp;This plugin requires that you have an SSL certificate installed and active on your site. Not sure which Authorize.Net gateway is right for you? Check out the&nbsp;Authorize.Net Extension Comparison Guide.</div>
<p>&nbsp;</p>
<h3 id="section-2">Installation</h3>
<ol>
<li>Download the extension from your dashboard</li>
<li>Go to Plugins &gt; Add New &gt; Upload and select the ZIP file you just downloaded</li>
<li>Click Install Now, and then Activate</li>
<li>Go to&nbsp;<strong>WooCommerce &gt; Settings &gt; Checkout &gt; Authorize.Net</strong>&nbsp;and read the next section to learn how to setup and configure the plugin.</li>
</ol>
<p>&nbsp;</p>
<h3 id="section-3">Requirements</h3>
<ul>
<li>An&nbsp;Authorize.Net account</li>
<li>PHP 5.3+ (You can see this under WooCommerce &gt; Status)</li>
</ul>
<p>&nbsp;</p>
<h2 id="section-4">Setup and Configuration</h2>
<h4 id="obtain-credentials-from-authorizenet">Obtain Credentials from Authorize.Net</h4>
<p>You need to have an active gateway account with Authorize.Net and follow the following steps to get your API credentials.</p>
<ul>
<li style="list-style-type: none">
<ul>
<li>Go to&nbsp;Authorize.Net</li>
<li>Click on “Account Login” on the top-right</li>
<li>Enter your Login ID and Password then press Log In</li>
<li>From your home page, click on the Account Menu</li>
</ul>
</li>
</ul>
<figure id="attachment_152970" class="wp-caption aligncenter" aria-describedby="caption-attachment-152970"><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-gateway-authorize-net-aim-setup-1-550x67-1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10838" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-gateway-authorize-net-aim-setup-1-550x67-1.png" alt="" width="550" height="67"></a><figcaption id="caption-attachment-152970" class="wp-caption-text">Go to “Account” in to your Authorize.Net Account</figcaption></figure>
<ul>
<li style="list-style-type: none">
<ul>
<li>In the left hand menu Account section click on “Settings”</li>
</ul>
</li>
</ul>
<figure id="attachment_152971" class="wp-caption aligncenter" aria-describedby="caption-attachment-152971"><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-gateway-authorize-net-aim-setup-2.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10839" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-gateway-authorize-net-aim-setup-2.png" alt="" width="189" height="185"></a><figcaption id="caption-attachment-152971" class="wp-caption-text">Click “Settings”</figcaption></figure>
<ul>
<li style="list-style-type: none">
<ul>
<li>In the Security Settings section click on “API Login and Transaction Key”</li>
</ul>
</li>
</ul>
<figure id="attachment_152972" class="wp-caption aligncenter" aria-describedby="caption-attachment-152972"><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-gateway-authorize-net-aim-setup-3-550x184-1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10840" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-gateway-authorize-net-aim-setup-3-550x184-1.png" alt="" width="550" height="184"></a><figcaption id="caption-attachment-152972" class="wp-caption-text">Get API Credentials</figcaption></figure>
<ul>
<li style="list-style-type: none">
<ul>
<li>Your&nbsp;<strong>API Login ID</strong>&nbsp;will be displayed on this page, which will be copied and entered in the extension settings:</li>
</ul>
</li>
</ul>
<figure id="attachment_152973" class="wp-caption aligncenter" aria-describedby="caption-attachment-152973"><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-gateway-authorize-net-aim-setup-4-550x367-1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10841" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-gateway-authorize-net-aim-setup-4-550x367-1.png" alt="" width="550" height="367"></a><figcaption id="caption-attachment-152973" class="wp-caption-text">Get API Login and Transaction Key</figcaption></figure>
<ul>
<li style="list-style-type: none">
<ul>
<li>To create a new&nbsp;<strong>Transaction Key</strong>, answer the security question at the bottom of the page, check the “Disable Old transaction Key(s)” checkbox and press Submit.</li>
<li>Your new Transaction Key will be displayed on the next page – copy this transaction key, and enter it along with the API Login on the extension settings page:</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<figure id="attachment_153037" class="wp-caption aligncenter" aria-describedby="caption-attachment-153037"><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-enter-api-credentials-550x304-1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10798" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-enter-api-credentials-550x304-1.png" alt="" width="550" height="304"></a><figcaption id="caption-attachment-153037" class="wp-caption-text">Enter Your API Credentials</figcaption></figure>
<p>If you would also like to enable Accept.js support, please&nbsp;<a href="https://help.codibu.com/blog/kb/woocommerce-authorize-net-aim/#accept-js-support">see below for additional set up information</a>.</p>
<h3 id="cc-settings">Extension Settings</h3>
<p>To configure the plugin, click on&nbsp;<strong>WooCommerce &gt; Settings</strong>&nbsp;from the left hand menu, then the top tab “Checkout”. You should see Authorize.Net AIM as an option in the list at the top. Click this section to view the credit card settings.</p>
<figure id="attachment_163100" class="wp-caption aligncenter" aria-describedby="caption-attachment-163100"><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-settings.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10801" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-settings.png" alt="" width="776" height="1202"></a><figcaption id="caption-attachment-163100" class="wp-caption-text">Credit Card Settings</figcaption></figure>
<ul>
<li><strong>Enable / Disable</strong>&nbsp;– This will enable the gateway to be used by customers to checkout.</li>
<li><strong>Title</strong>&nbsp;– This is the text shown for the payment during checkout and on the Order Received page.</li>
<li><strong>Description</strong>&nbsp;– This is the text shown under the title during checkout. Limited HTML is allowed. If you enable test mode, this section will also display a notice along with test credit card numbers.</li>
<li><strong>Card Verification (CSC)</strong>&nbsp;– Enable this to require customers to enter their CVV / CV2 (Card Security Code) when checking out. This can be useful if you have requirements in your Authorize.Net account for CV2 verification.</li>
<li><strong>Transaction Type</strong>&nbsp;– This controls how transactions are submitted to Authorize.Net. You may choose either “Charge” or “Authorization”. If you select “Authorization”, you must manually capture and settle payments in your Authorize.Net control panel or on the WooCommerce orders screen after the transaction has been submitted. This defaults to “Charge”.</li>
<li><strong>Charge Virtual-Only Orders</strong>&nbsp;– (Shown if Transaction Type is set to “Authorization”) Enable this to force charges on order containing only virtual items so they’re captured immediately instead of authorized (for example, to grant download access right away)<br />
<a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-skyverge-authorization-settings.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10592" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-skyverge-authorization-settings.png" alt="" width="805" height="217"></a></li>
<li><strong>Capture Paid Orders</strong>&nbsp;– (Shown if Transaction Type is set to “Authorization”) Enable this to automatically attempt to capture transactions when orders change to a paid status.</li>
<li><strong>Accepted Cards</strong>&nbsp;– This controls the card logos that display during checkout. This is purely cosmetic and has&nbsp;<strong>no affect</strong>&nbsp;on the cards actually accepted by your merchant account.</li>
<li><strong>Detailed Decline Messages</strong>&nbsp;– Enable to display detailed messages to customers to provide reasoning for declines when possible instead of a generic error message.</li>
<li><strong>Debug Mode</strong>&nbsp;– Enable this is you are having issues correctly processing transactions. You can either log API requests / responses directly to the checkout / thank you page, save them to the WooCommerce Error Log (found under WooCommerce &gt; System Status &gt; Logs) or both. All debugging messages are cleaned of sensitive information before display, but as a best practice,&nbsp;<strong>please do not enable this unless you are having issues with the plugin.</strong></li>
<li><strong>Environment</strong>&nbsp;– Switch between “Test” and “Production” credentials. Enable “Test” to send transactions to your Authorize.Net Test Account.&nbsp;<strong>Note: This is not the “test mode” that is listed under your Authorize.Net account.</strong>&nbsp;This is an entirely separate sandbox environment that requires a separate login. You can sign up for a test account&nbsp;here. Once you have done this, you can enter a separate API Login ID and API Transaction Key for your test account. Do not place your Test Account (or regular account) into “Test Mode” within the Authorize.Net control panel as transactions will not process at all if that mode is set.</li>
</ul>
<h4 id="connection-settings">Connection Settings</h4>
<ul>
<li><strong>Share connection settings</strong>&nbsp;– Enabling this will allow you to use connection / authentication settings between the credit card and eCheck gateways. If this is enabled, you’ll have to enter your Authorize.Net API Login ID and API Transaction Key under the eCheck settings.</li>
<li><strong>API Login ID</strong>&nbsp;– This is the API Login ID for your Authorize.Net account (Test or Production).&nbsp;<a href="https://help.codibu.com/blog/kb/woocommerce-authorize-net-aim/#setup">Follow the steps above</a>&nbsp;to get this.</li>
<li><strong>API Transaction Key</strong>&nbsp;– This is the API Transaction Key for your Authorize.Net account (Test or Production).&nbsp;<a href="https://help.codibu.com/blog/kb/woocommerce-authorize-net-aim/#setup">Follow the steps above</a>&nbsp;to get this.</li>
<li><strong>Accept.js</strong>&nbsp;– Enable this to use Accept.js to send card information directly to Authorize.Net and minimize PCI compliance scope.</li>
<li><strong>Client Key</strong>&nbsp;– If Accept.js is enabled, enter the Client Key generated for your account.&nbsp;<a href="https://help.codibu.com/blog/kb/woocommerce-authorize-net-aim/#accept-js-support">Follow the instructions below</a>&nbsp;to generate a client key.</li>
</ul>
<h3 id="echeck-settings">eCheck Settings</h3>
<p>To configure the eCheck settings, click on&nbsp;<strong>WooCommerce &gt; Settings</strong>&nbsp;from the left hand menu, then the top tab “Checkout”. You should see Authorize.Net AIM eCheck as an option in the list at the top. Click this section to configure the eCheck gateway settings.</p>
<figure id="attachment_162633" class="wp-caption aligncenter" aria-describedby="caption-attachment-162633"><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-echeck-settings.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10795" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-echeck-settings.png" alt="" width="775" height="590"></a><figcaption id="caption-attachment-162633" class="wp-caption-text">eCheck settings</figcaption></figure>
<ul>
<li><strong>Enabled</strong>&nbsp;– This will enable the eCheck gateway to be used by customers to checkout.&nbsp;<strong>IMPORTANT – You must have eChecks enabled on your Authorize.Net account for this to function correctly.</strong>&nbsp;Follow the process below under&nbsp;<a href="https://help.codibu.com/blog/kb/woocommerce-authorize-net-aim/#echeck-issues">eCheck Issues</a>&nbsp;to get eChecks setup and enabled.</li>
<li><strong>Title</strong>&nbsp;– This is the text shown for the eCheck gateway during checkout and on the Order Received page. This defaults to “eCheck”.</li>
<li><strong>Description</strong>&nbsp;– This is the text shown under the title during checkout. Limited HTML is allowed. If you enable test mode, this section will also display a notice along with a test bank account number.</li>
<li><strong>Environment</strong>&nbsp;– Switch between “Test” and “Production” credentials. Enable “Test” to send transactions to your Authorize.Net Test Account.&nbsp;<strong>Note: This is not the “test mode” that is listed under your account.</strong>&nbsp;This is an entirely separate sandbox environment that requires a separate login. You can sign up for a test account&nbsp;here. Once you have done this, you can enter a separate API Login ID and API Transaction Key for your test account. Do not place your Test Account (or regular account) into “Test Mode” within the Authorize.Net control panel as transactions will not process at all if that mode is set.</li>
<li><strong>Share connection settings</strong>&nbsp;– Enabling this will allow you to use connection/authentication settings between the credit card and eCheck gateways. If this is disabled, you’ll have to enter a new Authorize.Net API Login ID and API Transaction Key for eCheck transactions.</li>
<li><strong>Debug Mode</strong>&nbsp;– Enable this is you are having issues correctly processing transactions. You can either log API requests / responses directly to the checkout / thank you page, save them to the WooCommerce Error Log, or both. All debugging messages are cleaned of sensitive information before display, but as a best practice,&nbsp;<strong>please do not enable this unless you are having issues with the plugin.</strong>.</li>
</ul>
<p>&nbsp;</p>
<h2 id="section-7">Merchant Usage</h2>
<p>It’s possible to use the&nbsp;<strong>WooCommerce Authorize.Net AIM</strong>&nbsp;extension with other gateways that support Authorize.Net emulation (such as&nbsp;eProcessing Network). You’ll need to enable the&nbsp;<strong>Authorize.Net Emulation</strong>&nbsp;gateway to use this.&nbsp;<a href="https://help.codibu.com/blog/kb/woocommerce-authorize-net-aim/#authorize-emulation">Read about how to enable and configure Authorize.Net emulation</a>.</p>
<div class="woo-sc-box info   ">Please note that&nbsp;<strong>Authorize.Net Emulation</strong>&nbsp;only supports basic payment processing features. It does not support the advanced features like capturing charges and refunds listed below, as these are only available for the AIM plugin mode.</div>
<h3 id="captures">Capture Charges from WooCommerce Order Admin</h3>
<p>Using version 3.0+ of the extension allows you to authorize charges during checkout, then manually capture them later. You can do this via your Authorize.Net control panel, or can easily do so from the WooCommerce&nbsp;<em>Edit Order</em>&nbsp;page.</p>
<p>You can&nbsp;<a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#capture-charges">read more about capturing charges with this plugin here</a>.</p>
<p>&nbsp;</p>
<h3 id="section-9">Automatic Refund Support</h3>
<p>Version 3.3.0 of Authorize.Net AIM adds&nbsp;<strong>automatic refund support</strong>&nbsp;for shops running WooCommerce 2.2+. This means that refunds can be processed directly in WooCommerce without the merchant logging into his or her Authorize.Net account.</p>
<p>You can&nbsp;<a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#refunds">read more about performing refunds with Authorize.Net AIM here</a>.</p>
<p>&nbsp;</p>
<h3 id="section-10">Void Transaction Support</h3>
<p>Transactions can be&nbsp;<strong>voided</strong>&nbsp;by using the same workflow as&nbsp;<a href="https://help.codibu.com/blog/kb/woocommerce-authorize-net-aim/#refunds">refunds</a>. A void will occur if the transaction has been&nbsp;<em>authorized</em>, but not&nbsp;<em>captured</em>. In the case of Authorize.Net, voids will also occur for authorized &amp; captured transactions that have not yet been settled. As funds haven’t been transferred, a refund can’t truly be processed.</p>
<p>Voided transactions must be voided in full; partial voids are not accepted by Authorize.Net. You can&nbsp;<a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#voids">read more about voiding transactions here</a>.</p>
<p>&nbsp;</p>
<h2 id="section-11">Authorize.Net Emulation</h2>
<p><strong>Please note</strong>&nbsp;that Authorize.Net Emulation does not support advanced features such as refunds, voids, and capturing charges from within WooCommerce. Only payment processing is supported.</p>
<p>To use Authorize.Net AIM with a gateway that supports Authorize.Net emulation, you need to enable the Authorize.Net emulator under&nbsp;<strong>Plugins &gt; Installed Plugins</strong>&nbsp;— click “Enable emulation gateway”:</p>
<figure id="attachment_162636" class="wp-caption aligncenter" aria-describedby="caption-attachment-162636"><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-enable-emulation.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10797" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-enable-emulation.png" alt="" width="1192" height="226"></a><figcaption id="caption-attachment-162636" class="wp-caption-text">Enable Emulation Gateway</figcaption></figure>
<p>This allows you to use Authorize.Net’s emulation protocol for other gateways.</p>
<p>The&nbsp;<strong>Authorize.Net emulator</strong>&nbsp;settings will now be available under&nbsp;<strong>WooCommerce &gt; Settings &gt; Checkout</strong>. To use Authorize.Net emulation, you must enable the gateway and enter the&nbsp;<em>Gateway URL</em>&nbsp;and&nbsp;<em>API credentials</em>&nbsp;provided to you by your payment processor.</p>
<figure id="attachment_162634" class="wp-caption aligncenter" aria-describedby="caption-attachment-162634"><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-emulator-settings.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10796" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-emulator-settings.png" alt="" width="774" height="864"></a><figcaption id="caption-attachment-162634" class="wp-caption-text">Emulator settings</figcaption></figure>
<h3 id="legacy-settings">Extension Settings</h3>
<ul>
<li><strong>Enable / Disable</strong>&nbsp;– This will enable the gateway to be used by customers to checkout.</li>
<li><strong>Title</strong>&nbsp;– This is the text shown for the payment during checkout and on the Order Received page.</li>
<li><strong>Description</strong>&nbsp;– This is the text shown under the title during checkout. Limited HTML is allowed. If you enable test mode, this section will also display a notice along with test credit card numbers.</li>
<li><strong>Card Verification (CSC)</strong>&nbsp;– Enable this to require customers to enter their CVV / CV2 (Card Security Code) when checking out. This can be useful if you have requirements in your Authorize.Net account for CV2 verification.</li>
<li><strong>Transaction Type</strong>&nbsp;– This controls how transactions are submitted to Authorize.Net. You may choose either “Charge” or “Authorization”. If you select “Authorization”, you must manually capture and settle payments in your Authorize.Net control panel or on the WooCommerce orders screen after the transaction has been submitted. This defaults to “Charge”.</li>
<li><strong>Accepted Cards</strong>&nbsp;– This controls the card logos that display during checkout. This is purely cosmetic and has&nbsp;<strong>no affect</strong>&nbsp;on the cards actually accepted by your merchant account.</li>
<li><strong>Debug Mode</strong>&nbsp;– Enable this is you are having issues correctly processing transactions. You can either log API requests / responses directly to the checkout / thank you page, save them to the WooCommerce Error Log (found under WooCommerce &gt; System Status &gt; Logs) or both. All debugging messages are cleaned of sensitive information before display, but as a best practice,&nbsp;<strong>please do not enable this unless you are having issues with the plugin.</strong></li>
<li><strong>Environment</strong>&nbsp;– Switch between “Test” and “Production” credentials. Enable “Test” to send transactions to your Authorize.Net Test Account.&nbsp;<strong>Note: This is not the “test mode” that is listed under your Authorize.Net account.</strong>&nbsp;This is an entirely separate sandbox environment that requires a separate login. You can sign up for a test account&nbsp;here. Once you have done this, you can enter a separate API Login ID and API Transaction Key for your test account. Do not place your Test Account (or regular account) into “Test Mode” within the Authorize.Net control panel as transactions will not process at all if that mode is set.</li>
<li><strong>Payment Gateway URL</strong>&nbsp;– The Gateway URL for the Authorize.Net gateway processor. Optionally, this URL can be changed to a different processor that allows Authorize.Net emulation.</li>
<li><strong>API Login</strong>&nbsp;– This is the API Login for your Authorize.Net account (Test or Production).&nbsp;&nbsp;to get this. If you’re using this gateway for Authorize.Net emulation, then this will be the API Login provided to you by your payment processor.</li>
<li><strong>Transaction Key</strong>&nbsp;– This is the API Transaction Key for your Authorize.Net account (Test or Production).&nbsp;&nbsp;to get this. If you’re using this gateway for Authorize.Net emulation, then this will be the API Transaction Key provided to you by your payment processor.</li>
</ul>
<p>&nbsp;</p>
<h2 id="section-13">Other Information</h2>
<h4 id="echeck-support">eCheck Support</h4>
<p>If you have enabled eChecks on your Authorize.Net account and within the plugin settings, customers will have the option to pay via Credit Card or eCheck. eCheck requires the customer to enter their bank routing number and bank account number. The billing first and last name entered during checkout is used as the Name on Account.</p>
<p>&nbsp;</p>
<h3 id="section-14">Accept.js Support</h3>
<p>Version 3.9.0+ adds support for&nbsp;<strong>Accept.js from Authorize.Net</strong>. Accept.js improves security and decreases PCI compliance responsibility for merchants. To test or use Accept.js, you&nbsp;<strong>must have an SSL certificate installed</strong>&nbsp;on your site.</p>
<p>When Accept.js is enabled, customer credit card information is no longer sent directly through your server and instead is handled directly by Authorize.Net, meeting the lower level PCI SAQ A-EP compliance level.</p>
<p>You can&nbsp;learn more about Accept.js here. If you choose to enable Accept.js, you must generate a Client Key in your Authorize.Net account and enter this in the plugin settings.</p>
<p>To generate a client key, follow these steps:</p>
<ol>
<li>Log into your Authorize.Net Account and go to Account &gt; Settings.</li>
<li>Click on “Manage Public Key” in the “Security Settings” section.<br />
<a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-accept-js-creds-1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10794" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-accept-js-creds-1.png" alt="" width="951" height="710"></a></li>
<li>If you already have generated a Client Key, you can copy it. If not, generate a new key by answering your security question and clicking “Submit” to generate the new key.<br />
<a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-generate-client-key.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10799" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-generate-client-key.png" alt="" width="945" height="572"></a></li>
<li>Copy your new Client Key and paste it into the plugin settings.</li>
</ol>
<p>Once Accept.js is enabled, your credit card processing is now secured. The checkout process will appear unchanged for customers, but secured behind the scenes.</p>
<h3 id="section-15">Enhanced Checkout Form</h3>
<p>Authorize.Net AIM (v3.8.0+) supports an enhanced checkout form for all gateway modes. This improves both&nbsp;<strong>mobile and desktop checkout</strong>. You can&nbsp;<a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#enhanced-checkout">read about the enhanced payment form here</a>.</p>
<figure id="attachment_162345" class="wp-caption aligncenter" aria-describedby="caption-attachment-162345"><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-pay-form.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10491" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-aim-pay-form.png" alt="" width="851" height="529"></a><figcaption id="caption-attachment-162345" class="wp-caption-text">Credit Card checkout (TwentySixteen theme)</figcaption></figure>
<h3 id="section-16">Detailed Decline Messages</h3>
<p>When detailed decline messages are enabled, they will provide informative error messages to the customer at checkout when Authorize.Net returns a useful response. Detailed decline messages are supported by the AIM credit card and eCheck payment methods (not by the Emulation gateway).</p>
<p>You can&nbsp;read more about detailed decline messages here.</p>
<h3 id="section-17">Apple Pay</h3>
<p>Authorize.Net AIM contains a framework for Apple Pay, but Apple Pay can only be enabled by developers, as the certification process requires developer-only tools. If you work with a developer, please&nbsp;<a href="https://help.codibu.com/blog/kb/accepting-apple-pay-with-woocommerce/">review the setup instructions and requirements here</a>&nbsp;if you’d like to add Apple Pay to your store. Apple Pay support&nbsp;<strong>is not in the scope of plugin support</strong>, so we’re unable to assist with getting it enabled for your site.</p>
<p>&nbsp;</p>
<h2 id="section-18">Troubleshooting</h2>
<p>If you’re using Accept.js, please note you may see a console error using Chrome developer tools at checkout:</p>
<pre>XMLHttpRequest cannot load https://jstest.authorize.net/v1/AcceptCore.js. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://youstore.com' is therefore not allowed access.</pre>
<p>This is expected by Authorize.Net and does not indicate a problem (transactions will process perfectly fine and are secure), annoying as it may be, which you can&nbsp;see here:</p>
<blockquote><p>Right now I can tell you that the CORS warning “cannot load” is actually correct behaviour in that it’s alerting the fact that the page cannot call our core js library only the Accept.js library. So that will not impact functionality (we are nonetheless looking at ways to stop the browser doing this).</p></blockquote>
<h3 id="section-19">Authorize.Net Error Codes</h3>
<p>Having a different trouble? First, please refer to the&nbsp;Authorize.Net Response Code Reference&nbsp;— enter the error code you see into this tool to view the source of the error. In some cases, such as a transaction being held for review or being declined, the plugin cannot change the issue and it must be resolved in your Authorize.Net account.</p>
<p><strong>Notes</strong><br />
Orders with&nbsp;<code>Response Code = 4</code>&nbsp;will be approved, but can be cancelled manually in the WooCommerce admin and Authorize.Net Merchant Area area later if they fail review.</p>
<p>Be sure to have “Partial Authorization” turned off in your Authorize.Net Merchant Area. This will restrict orders with with&nbsp;<code>Response Code = 4</code>&nbsp;and&nbsp;<code>Response Code = 295</code>&nbsp;from being approved. “Allow Partial Payments” is off by default, but to verify it is off, follow these steps:</p>
<ul>
<li>Login to your Authorize.Net Merchant Area</li>
<li>Press “Account” in the top toolbar</li>
<li>Under the “Transaction Format Settings” area click on “Partial Authorization”</li>
<li>Verify “Allow Partial Payments” is not checked</li>
</ul>
<p>&nbsp;</p>
<h3 id="section-20">Required Field Errors</h3>
<p>If you receive an error like&nbsp;<code>(E00027) - The transaction was unsuccessful. Error Code: 33 - [Field Name] is required.</code>, your Authorize.Net account is likely setup to require a field that our plugin cannot send. These errors can occur on orders, refunds, and void transactions.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-required-field-error.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10811" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-required-field-error.png" alt="" width="540" height="610"></a></p>
<p>To resolve this issue, you should remove all field requirements from your Authorize.Net account by following the steps below:</p>
<ol>
<li>Login to your&nbsp;Authorize.Net Account.</li>
<li>Go to&nbsp;<strong>Account</strong>&nbsp;&gt;&nbsp;<strong>Payment Form</strong>&nbsp;&gt;&nbsp;<strong>Form Fields</strong>.</li>
<li>Uncheck the&nbsp;<strong>Required</strong>&nbsp;boxes for all fields.</li>
<li>Click&nbsp;<strong>Submit</strong>.</li>
</ol>
<h3 id="echeck-issues">eCheck Issues</h3>
<p>Make sure the ‘WEB’ eCheck type is enabled on your Authorize.Net account, or you might see errors like&nbsp;<code>[Code 246] - This eCheck.Net type is not allowed</code>. To get this setup, follow these steps:</p>
<ol>
<li>Set up an eTicket and ask for the ‘WEB’ eCheck type to be enabled (be sure you are an account owner and know your gateway ID).</li>
<li>WEB transactions are usually enabled within 2 business days, but there is a funding hold automatically placed on your account — you can take funds in, but not get them out, until you pass another security check with the underwriting department.</li>
<li>To expedite the process, call them on the phone and they will check out your website while on the line with you. They will look to make sure you have a valid SSL on cart/checkout, and prominently placed terms of use and privacy policy pages.</li>
<li>Once you meet those requirements, the funding hold should be removed.</li>
</ol>
<h3 id="refund-issues">Refund Issues</h3>
<p>You may see an error message that looks something like this when trying to process an automatic refund:</p>
<pre>Oops, you cannot partially void this order. Please use the full order amount.
</pre>
<p>This means that you’re trying to perform a partial refund, but the charge has not been settled (typically when you try to refund within a day of the purchase). The plugin tries to void this order since the funds have not been transferred (to cancel the order instead of refunding it), but Authorize.Net does not permit partial voids.</p>
<p>Please wait until the charge has settled (about one day after the charge was made) to refund this transaction.</p>
<p>&nbsp;</p>
<h2 id="section-23">Authorize.Net Test Credentials</h2>
<p>Authorize.Net production credentials&nbsp;<strong>cannot be used in test mode</strong>. To test the plugin, merchants sometimes put their production accounts into the “Test modes” from their Authorize.Net accounts, which returns dummy data for live transactions. However, this&nbsp;<strong>will not work</strong>&nbsp;with the plugin’s test mode either, as these are still production credentials.</p>
<p>To use the plugin in test mode, you should get a set of&nbsp;dedicated test credentials&nbsp;from Authorize.Net. These work with the test mode in the plugin. Your production Authorize.Net credentials should always be live, and never set to test mode.</p>
<p>&nbsp;</p>
<h2 id="section-24">Frequently Asked Questions</h2>
<p><strong>Q: Isn’t the AIM API deprecated? Will your plugin still work?</strong><br />
<strong>A:</strong>&nbsp;Despite the similarity in the name, our Authorize.Net AIM plugin doesn’t use the AIM API. We use the recommended&nbsp;Authorize.Net API, so there’s no need to be concerned about the AIM API being deprecated.</p>
<hr>
<p><strong>Q: Can I accept subscriptions for Authorize.Net using ARB with the AIM extension?</strong><br />
<strong>A:</strong>&nbsp;At this time, accepting subscriptions using ARB with Authorize.Net AIM is not possible. Implementing ARB support is not optimal, as notifications for failed subscription payments are not reliable and this issue could cause significant problems for stores using this method. We recommend that you check out the&nbsp;<a href="https://help.codibu.com/blog/kb/authorize-net/" target="_blank" rel="noopener noreferrer">Authorize.Net CIM extension</a>&nbsp;for Subscriptions support instead.</p>
<hr>
<p><strong>Q: Can I process automatic refunds with eChecks or Emulation?</strong><br />
<strong>A:</strong>&nbsp;Unfortunately this is not possible with eChecks or with Authorize.Net Emulation. Refunds can automatically be processed from WooCommerce with a credit card purchase via AIM, but not for an eCheck purchase.</p>
<hr>
<p><strong id="disable-receipts">Q: My customers get email receipts from WooCommerce and Authorize.Net. How do I get rid of Authorize.Net receipts?</strong><br />
<strong>A:</strong>&nbsp;The plugin cannot disable these for you, but you can disable these emails in your Authorize.Net account —&nbsp;click here for instructions.</p>
<hr>
<p><strong>Q: How do I capture a higher amount than what is authorized (like a restaurant)?</strong><br />
<strong>A:</strong>&nbsp;Authorize.Net (along with most any eCommerce payment processors) cannot do this with card-not-present transactions (which is what online payments are). Captures can only be&nbsp;up to the value of what’s authorized:&nbsp;<em>“As soon as the product is shipped, the merchant can capture an amount up to the amount of the authorization.”</em></p>
<p>When gas stations and restaurants do this, they’re using a particular POS system that gives them a certification to capture a certain percentage over the authorized amount. This isn’t available with eCommerce systems to be able to capture amounts higher than what’s authorized, so this is not possible on your WooCommerce site.</p>
<hr>
<p><strong>Q: Authorize.Net supports Apple Pay for web payments. Can I use this in my store?</strong><br />
<strong>A:</strong>&nbsp;This plugin does not support Apple Pay by default, as the set up process to use Apple Pay with Authorize.Net is not possible for most merchants to complete independently. If you work with a developer, please&nbsp;<a href="https://help.codibu.com/blog/kb/accepting-apple-pay-with-woocommerce/">review the setup tips and requirements here</a>, as the plugin does have tools developers can use to enable Apple Pay.</p><p>The post <a href="https://help.codibu.com/blog/woocommerce-authorize-net-aim/">WooCommerce Authorize.Net AIM</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://help.codibu.com/blog/woocommerce-authorize-net-aim/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WooCommerce Authorize.net</title>
		<link>https://help.codibu.com/blog/woocommerce-authorize-net/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=woocommerce-authorize-net</link>
					<comments>https://help.codibu.com/blog/woocommerce-authorize-net/#respond</comments>
		
		<dc:creator><![CDATA[JN C]]></dc:creator>
		<pubDate>Sun, 08 Nov 2020 15:49:14 +0000</pubDate>
				<guid isPermaLink="false">https://help.codibu.com/kb/woocommerce-authorize-net/</guid>

					<description><![CDATA[<p>Overview WooCommerce Authorize.Net Gateway integrates with Authorize.Net payment services to provide secure and powerful payment processing for your store. With this gateway, you can accept credit cards<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://help.codibu.com/blog/woocommerce-authorize-net/">WooCommerce Authorize.net</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Overview</h2>
<p><a href="https://help.codibu.com/blog/kb/authorize-net/">WooCommerce Authorize.Net Gateway</a> integrates with Authorize.Net payment services to provide secure and powerful payment processing for your store. With this gateway, you can accept credit cards and eChecks and let customers save their payment details to your site for fast and easy checkouts. This payment gateway includes full support for <a href="https://help.codibu.com/blog/kb/woocommerce-subscriptions/">WooCommerce Subscriptions</a> and <a href="https://help.codibu.com/blog/kb/woocommerce-pre-orders/">WooCommerce Pre-Orders</a>!</p>
<div class="woo-sc-box normal   ">Migrating from a different Authorize.Net plugin? See our <a href="https://help.codibu.com/blog/kb/woocommerce-authorize-net/#upgrading-to-unified">upgrading section below</a>.</div>
<p>This plugin also <strong>includes Accept.js</strong> from Authorize.Net for improved security and decreased PCI compliance responsibility. Customer credit card information is handled directly by Authorize.Net to offload some security concerns. Click here to learn more about Accept.js</p>
<div class="woo-sc-box info   ">Looking for details on 3D Secure? <a href="https://help.codibu.com/blog/kb/authorize-net/#faq-3ds">See this FAQ entry</a>.</div>
<p>&nbsp;</p>
<h3 id="section-2">Requirements</h3>
<ul>
<li>An Authorize.Net account</li>
<li>PHP 5.6+ (You can see this under <strong>WooCommerce</strong> &gt; <strong>Status</strong>)</li>
<li>An SSL certificate. An SSL certificate is also required on local test environments.</li>
</ul>
<div class="woo-sc-box note   ">If you plan to use this plugin with Subscriptions, Pre-Orders, or want to allow customers to save their payment details, the Customer Information Manager (CIM) feature must be enabled on your Authorize.Net account (additional monthly costs may apply).</div>
<p>&nbsp;</p>
<h3 id="section-3">Installation</h3>
<ol>
<li>Ensure your store meets the <a href="https://help.codibu.com/blog/kb/authorize-net/#requirements">plugin requirements</a>.</li>
<li>Download the extension from your <a href="http://woocommerce.com/my-account/downloads/">WooCommerce dashboard</a>.</li>
<li>Go to <strong>Plugins</strong> &gt; <strong>Add New</strong> &gt; <strong>Upload</strong> and select the ZIP file you just downloaded.</li>
<li>Click <strong>Install Now</strong> and then <strong>Activate</strong>.</li>
<li>Click <strong>Configure</strong> and read the <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">next section</a> to learn how to setup the plugin.</li>
</ol>
<p>&nbsp;</p>
<h2 id="section-4">Getting Started</h2>
<div class="wistia_responsive_padding">
<div class="wistia_responsive_wrapper">
<div id="wistia-3up5rsfa6f-1" class="wistia_embed wistia_async_3up5rsfa6f videoFoam=true wistia_embed_initialized">
<div id="wistia_chrome_72" class="w-chrome" tabindex="-1">
<div id="wistia_grid_85_wrapper">
<div id="wistia_grid_85_main">
<div id="wistia_grid_85_center">
<div class="w-ui-container">
<div id="w-vulcan-v2-84" class="w-vulcan-v2 w-css-reset">
<div class="w-vulcan--background w-css-reset">
<div class="w-css-reset" data-handle="thumbnail">
<div class="w-css-reset">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/b2e4d121bbfdc263342378ac04db8a68.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-12599" src="https://help.codibu.com/wp-content/uploads/2020/11/b2e4d121bbfdc263342378ac04db8a68.jpg" alt="" width="1920" height="1092" /></a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="wistia_grid_85_below"> </div>
</div>
</div>
</div>
</div>
</div>
<p>To begin using Authorize.Net, you must first connect the plugin to your Authorize.Net account. Follow the steps below to find your API credentials on Authorize.Net and setup the plugin:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Login to your Authorize.Net account.</li>
<li>Go to <strong>Accounts</strong> &gt; <strong>Settings</strong> &gt; <strong>API Credentials &amp; Keys</strong>.</li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-setup-api-credentials.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10812" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-setup-api-credentials.png" alt="" width="1922" height="1262" /></a></p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Copy your <strong>API Login ID</strong>.</li>
<li>Select the <strong>New Transaction Key</strong> radio button and click <strong>Submit</strong>. Copy the Transaction Key.</li>
<li>If you want to setup <a href="https://help.codibu.com/blog/kb/authorize-net/#webhook-setup">webhooks</a>, select the <strong>New Signature Key</strong> radio button and click <strong>Submit</strong> to generate the Signature Key.</li>
</ol>
</li>
</ol>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-setup-create-keys.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10813" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-setup-create-keys.png" alt="" width="1494" height="1086" /></a></p>
<ol>
<li>Now, log into your site and go to <strong>WooCommerce</strong> &gt; <strong>Settings</strong> &gt; <strong>Payments</strong> and select <strong>WooCommerce Authorize.Net</strong>.</li>
<li>Paste the <strong>API Login ID</strong>, <strong>API Transaction Key</strong>, and <strong>API Signature Key</strong>, if applicable.</li>
<li>Click <strong>Save Changes</strong>.</li>
</ol>
<p>That’s it! You are now ready to start accepting credit cards via Authorize.Net! Keep reading if you want to tweak settings and customize the checkout process.</p>
<p>&nbsp;</p>
<h3 id="section-5">Credit Card Settings</h3>
<p>You can configure the following settings for the Authorize.Net credit card gateway:</p>
<ul>
<li><strong>Enable / Disable</strong>: Allow customers to use this gateway to checkout.</li>
<li><strong>Title</strong>: The text shown for the payment during checkout and on the Order Received page.</li>
<li><strong>Description</strong>: The text shown under the gateway’s title during checkout. Limited HTML is allowed. If you enable test mode, this section will also display a notice along with test credit card numbers.</li>
<li><strong>Card Verification (CSC)</strong>: Require customers to enter their card security codes when checking out. This can be useful if you have requirements in your Authorize.Net account for CV2 verification.</li>
<li><strong>Transaction Type</strong>: Controls how transactions are submitted to Authorize.Net. Select “Charge” to automatically capture payments. If you select “Authorization”, you must manually capture and settle payments in your Authorize.Net control panel or on the WooCommerce orders screen after the transaction has been submitted. This defaults to “Charge”.</li>
<li><strong>Charge Virtual-Only Orders</strong>: If Transaction Type is set to “Authorization”, enable this to automatically capture charges for orders with only virtual products. For downloadable products, this will grant downloads access right away.</li>
<li><strong>Capture Paid Orders</strong>: If Transaction Type is set to “Authorization”, enable this to automatically capture charges when orders move to a paid status.</li>
<li><strong>Accepted Cards</strong>: Determines which card logos are displayed during checkout. This has <strong>no impact on which cards are accepted by your merchant account</strong>.</li>
<li><strong>Tokenization</strong>: Let customers save their payment methods for future use at checkout. This is <strong>required for Subscriptions or Pre-Orders</strong>.</li>
<li><strong>Detailed Decline Messages</strong>: Display detailed messages to customers to provide reasoning for declines instead of a generic error message when possible. <a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#detailed-decline">Click here to read more about detailed decline messages.</a></li>
<li><strong>Debug Mode</strong>: Enable when you’re having issues processing transactions. You can choose to log API requests directly on the checkout page, save them to the <strong>WooCommerce</strong> &gt; <strong>Status</strong> &gt; <strong>Logs</strong> page, or both. As a best practice, please <strong>do not enable this setting</strong> unless you’re having issues with the plugin.</li>
<li><strong>Environment</strong>: Switch between “Test” and “Production” credentials. Enable “Test” to send transactions to your Authorize.Net Test Account. <strong>Note: This is not the “test mode” that is listed under your account.</strong> This is an entirely separate sandbox environment that requires a separate login and separate API credentials. Do not place your Test Account (or regular account) into “Test Mode” within the Authorize.Net control panel as transactions will not process at all if that mode is set.</li>
<li><strong>Share connection settings</strong>: If using the credit card and eCheck gateways, select this setting to share credentials between the gateways so you don’t have to enter them twice.</li>
<li><strong>API Login ID</strong>: <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">Follow the steps above to retrieve your API Login ID.</a></li>
<li><strong>API Transaction Key</strong>: <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">Follow the steps above to generate your API Transaction Key.</a></li>
<li><strong>API Signature Key</strong>: Optional. Only required if you want to enable webhooks for Authorize.Net account updates. <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">Follow the steps above to generate your API Signature Key.</a></li>
<li><strong>Payment Form Type</strong>: You can choose how you’d like to display the payment form. The <em>Inline</em> option meets SAQ-A EP PCI requirements while the <em>Lightbox</em> option supports SAQ A standards.</li>
</ul>
<p>&nbsp;</p>
<h3 id="section-6">eCheck Settings</h3>
<p>You can configure the following settings for the Authorize.Net eCheck gateway:</p>
<ul>
<li><strong>Enable / Disable</strong>: Allow customers to use this gateway to checkout. <strong>You must enable eChecks on your Authorize.Net account to use the eCheck gateway.</strong> Follow the process below under <a href="https://help.codibu.com/blog/kb/authorize-net/#echeck-issues">eCheck Issues</a> to get eChecks setup and enabled.</li>
<li><strong>Title</strong>: The text shown for the payment during checkout and on the Order Received page.</li>
<li><strong>Description</strong>: The text shown under the gateway’s title during checkout. Limited HTML is allowed. If you enable test mode, this section will also display a notice along with a test bank account number.</li>
<li><strong>Tokenization</strong>: Let customers save their payment methods for future use at checkout. This is <strong>required for Subscriptions or Pre-Orders</strong>.</li>
<li><strong>Authorization</strong>: Display an authorization message during the checkout process.</li>
<li><strong>Authorization Message</strong>: If Authorization is enabled, enter the message you want to show to your customers. You can use the following merge tags:
<ul>
<li><code>{merchant_name}</code>: Your store name</li>
<li><code>{order_date}</code>: Date of purchase</li>
<li><code>{order_total}</code>: Total order value</li>
</ul>
</li>
<li><strong>Recurring Authorization Message</strong>: If Authorization is enabled and <a href="https://help.codibu.com/blog/kb/woocommerce-subscriptions/">WooCommerce Subscriptions</a> is active on your site, you can enter the message you want to show your customers for recurring payments.</li>
<li><strong>Detailed Decline Messages</strong>: Display detailed messages to customers to provide reasoning for declines instead of a generic error message when possible. <a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#detailed-decline">Click here to read more about detailed decline messages.</a></li>
<li><strong>Debug Mode</strong>: Enable when you’re having issues processing transactions. You can choose to log API requests directly on the checkout page, save them to the <strong>WooCommerce</strong> &gt; <strong>Status</strong> &gt; <strong>Logs</strong> page, or both. As a best practice, please <strong>do not enable this setting</strong> unless you’re having issues with the plugin.</li>
<li><strong>Environment</strong>: Switch between “Test” and “Production” credentials. Enable “Test” to send transactions to your Authorize.Net Test Account. <strong>Note: This is not the “test mode” that is listed under your account.</strong> This is an entirely separate sandbox environment that requires a separate login and separate API credentials. Do not place your Test Account (or regular account) into “Test Mode” within the Authorize.Net control panel as transactions will not process at all if that mode is set.</li>
<li><strong>Share connection settings</strong>: If using the credit card and eCheck gateways, select this setting to share credentials between the gateways so you don’t have to enter them twice.</li>
<li><strong>API Login ID</strong>: <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">Follow the steps above to retrieve your API Login ID.</a></li>
<li><strong>API Transaction Key</strong>: <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">Follow the steps above to generate your API Transaction Key.</a></li>
<li><strong>API Signature Key</strong>: Optional. Only required if you want to enable webhooks for Authorize.Net account updates. <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">Follow the steps above to generate your API Signature Key.</a></li>
<li><strong>Payment Form Type</strong>: Choose to display the payment form inline or in a lightbox. Select “Inline” to support PCI-DSS SAQ A-EP compliance.</li>
</ul>
<p>&nbsp;</p>
<h4 id="echeck-setup-with-authorizenet">eCheck Setup with Authorize.Net</h4>
<p>To enable eCheck processing on your Authorize.Net account:</p>
<ol>
<li>Setup an eTicket and ask for the “WEB” eCheck type to be enabled. Be sure you are an account owner and know your gateway ID.</li>
<li>WEB transactions are usually enabled within 2 business days, but there is a funding hold automatically placed on your account – you can take funds in, but can’t take them out until you pass another security check with the underwriting department.</li>
<li>To expedite this process, call the Authorize.Net underwriting department so they can check your website while on the phone with you. They’ll ensure you have a valid SSL on cart/checkout and prominently placed terms of use and privacy policy pages.</li>
<li>Once you’ve met these requirements, the funding hold will be removed.</li>
</ol>
<p>&nbsp;</p>
<h3 id="section-7">Webhook Setup</h3>
<p>Webhooks notify your WooCommerce site when <strong>customer profiles</strong> and <strong>payment profiles</strong> are deleted from your Authorize.Net account. This is helpful when using <a href="https://woocommerce.com/products/woocommerce-subscriptions/">WooCommerce Subscriptions</a> to ensure that payment token removals are logged on your site for troubleshooting purposes.</p>
<p><a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">Follow the steps above to generate your API Signature Key</a>, which you can enter in the plugin settings to enable webhooks. Then, click the link in the settings notice to enable webhooks. This will push the required information into your Authorize.Net account.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-enable-webhooks.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10805" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-enable-webhooks.png" alt="" width="835" height="201" /></a></p>
<p>Authorize.Net will now notify your site when the customer or payment profiles are deleted from your account. We do, however, <a href="https://help.codibu.com/blog/kb/authorize-net/#troubleshooting-failed-renewals">recommend avoiding changes within your account</a> when possible.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-cim-webhook-notifications.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10803" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-cim-webhook-notifications.png" alt="" width="298" height="321" /></a></p>
<p>&nbsp;</p>
<h2 id="section-8">Managing Orders</h2>
<div class="wistia_responsive_padding">
<div class="wistia_responsive_wrapper">
<div id="wistia-y71uv7rp8t-1" class="wistia_embed wistia_async_y71uv7rp8t videoFoam=true wistia_embed_initialized">
<div id="wistia_chrome_76" class="w-chrome" tabindex="-1">
<div id="wistia_grid_132_wrapper">
<div id="wistia_grid_132_main">
<div id="wistia_grid_132_center">
<div class="w-ui-container">
<div id="w-vulcan-v2-131" class="w-vulcan-v2 w-css-reset">
<div class="w-vulcan--background w-css-reset">
<div class="w-css-reset" data-handle="thumbnail">
<div class="w-css-reset">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/ea47e2e3cdd86918bbf9815d2bf3314ec93af6fc.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-12601" src="https://help.codibu.com/wp-content/uploads/2020/11/ea47e2e3cdd86918bbf9815d2bf3314ec93af6fc.jpg" alt="" width="1920" height="1148" /></a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>As a site administrator, you can use the WooCommerce Authorize.Net gateway to manually capture charges and automatically refund/void transactions as needed.</p>
<p>&nbsp;</p>
<h3 id="section-9">Capture Charges</h3>
<p>If you are using version 2.0+ of the Authorize.Net gateway and the <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">Transaction Type setting</a> is set to “Authorization”, you can manually capture these payments from the WooCommerce Orders page. <a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#capture-charges">Click here to read more about capturing charges.</a></p>
<div class="woo-sc-box normal   "><strong>Note</strong>: If your <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">Transaction Type setting</a> is set to “Charge”, you cannot use the <strong>Capture</strong> button. Attempting to do so will result in the following error message:<br />
<code>3 (E00027) - The transaction was unsuccessful. Error Code: 33 - A valid referenced transaction ID is required.</code></div>
<p>&nbsp;</p>
<h3 id="section-10">Automatic Refunds</h3>
<p>If you are using version 2.0+ of the Authorize.Net gateway and version 2.2+ of WooCommerce, you can process refunds directly in WooCommerce without needing to log into your Authorize.Net account. <a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#refunds">Click here to read more about issuing automatic refunds from WooCommerce.</a></p>
<p>&nbsp;</p>
<h3 id="section-11">Void Transactions</h3>
<p>You can void transactions directly in WooCommerce in the following circumstances:</p>
<ul>
<li>If your <a href="https://help.codibu.com/blog/kb/#getting-started">Transaction Type setting</a> is set to “Authorization”, you can void when the transaction has been <em>authorized</em> but not yet <em>captured</em>.</li>
<li>If your <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">Transaction Type setting</a> is set to “Charge”, you can void when the transaction has not yet been settled (e.g. funds haven’t been transferred from the customer’s account to your Authorize.Net account).</li>
</ul>
<p>Authorize.Net does not accept partial voids. If a transaction is no longer eligible to be voided, you must <a href="https://help.codibu.com/blog/kb/authorize-net/#automatic-refunds">refund the order</a>. <a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#voids">Click here to read more about voiding transactions in WooCommerce.</a></p>
<p>&nbsp;</p>
<h2 id="section-12">Gateway Features</h2>
<p>Your customers can take advantage of the following features when your site uses WooCommerce Authorize.Net.</p>
<p>&nbsp;</p>
<h3 id="section-13">Saving Payment Methods</h3>
<div class="wistia_responsive_padding">
<div class="wistia_responsive_wrapper">
<div id="wistia-jj7pmtdx8t-1" class="wistia_embed wistia_async_jj7pmtdx8t videoFoam=true wistia_embed_initialized">
<div id="wistia_chrome_79" class="w-chrome" tabindex="-1">
<div id="wistia_grid_107_wrapper">
<div id="wistia_grid_107_main">
<div id="wistia_grid_107_center">
<div class="w-ui-container">
<div id="w-vulcan-v2-106" class="w-vulcan-v2 w-css-reset">
<div class="w-vulcan--background w-css-reset">
<div class="w-css-reset" data-handle="thumbnail">
<div class="w-css-reset"> </div>
<div class="w-css-reset">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/3cc812584ac96503eebd78dcb074e202c5473ef4.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-12603" src="https://help.codibu.com/wp-content/uploads/2020/11/3cc812584ac96503eebd78dcb074e202c5473ef4.jpg" alt="" width="1920" height="1148" /></a>
</div>
<div class="w-css-reset">Customers can save payment methods during the checkout process or from their My Account area. This lets them quickly select payment details during future checkouts and also lets your site <a href="https://help.codibu.com/kbt/authorize-net/#subscriptions-preorders-support">support Subscriptions and Pre-Orders</a>.</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>To manage their saved payment methods, customers can go to <strong>My Account</strong> &gt; <strong>My Payment Methods</strong>. From here, they can add new payment methods (credit cards or eChecks), set their default method, and delete any old or expired methods. <a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#section-11">Click here to read more about managing saved payment methods.</a></p>
<figure id="attachment_158039" class="wp-caption aligncenter" aria-describedby="caption-attachment-158039">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-cim-my-payments-550x333-1.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10802" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-cim-my-payments-550x333-1.png" alt="" width="550" height="333" /></a><br />
<br /><figcaption id="caption-attachment-158039" class="wp-caption-text">Customer Saved Payment Methods</figcaption></figure>
<p>&nbsp;</p>
<div class="woo-sc-box normal   "><strong>Notes</strong>:</p>
<p>&nbsp;</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Credit card information isn’t stored on your site’s server, but is tokenized and stored on Authorize.Net’s secure servers. This reduces your site’s PCI compliance burden. Click here to read more about Authorize.Net tokenization.</li>
<li>When using <a href="https://help.codibu.com/blog/kb/woocommerce-subscriptions/">WooCommerce Subscriptions</a>, customers cannot delete payment methods that are associated with active subscriptions. <a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#subscriptions">Click here to read more about saving payment methods with Subscriptions.</a></li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
<h4 id="subscriptions-pre-orders-support">Subscriptions / Pre-Orders Support</h4>
<div class="wistia_responsive_padding">
<div class="wistia_responsive_wrapper">
<div id="wistia-debegnkz26-1" class="wistia_embed wistia_async_debegnkz26 videoFoam=true wistia_embed_initialized">
<div id="wistia_chrome_126" class="w-chrome" tabindex="-1">
<div id="wistia_grid_155_wrapper">
<div id="wistia_grid_155_main">
<div id="wistia_grid_155_center">
<div class="w-ui-container">
<div id="w-vulcan-v2-154" class="w-vulcan-v2 w-css-reset">
<div class="w-vulcan--background w-css-reset">
<div class="w-css-reset" data-handle="thumbnail">
<div class="w-css-reset">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/69a6f4894b87faf0fa033bc0e19f717eadb63d6f.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-12604" src="https://help.codibu.com/wp-content/uploads/2020/11/69a6f4894b87faf0fa033bc0e19f717eadb63d6f.jpg" alt="" width="1920" height="1148" /></a>
</div>
</div>
</div>
<div class="w-vulcan-overlays-table w-css-reset">
<div class="w-vulcan-overlays--left w-css-reset">
<div class="w-css-reset"> </div>
</div>
<div class="w-vulcan-overlays--center w-css-reset">
<div class="w-css-reset">
<div class="w-css-reset" data-handle="bigPlayButton">
<div class="w-bpb-wrapper w-css-reset w-css-reset-tree">
<div> </div>
<div> </div>
</div>
</div>
<div class="w-css-reset" data-handle="playPauseNotifier">WooCommerce Authorize.Net supports all features of <a href="https://help.codibu.com/blog/kb/woocommerce-subscriptions/">WooCommerce Subscriptions</a> and <a href="https://help.codibu.com/blog/kb/woocommerce-pre-orders/">WooCommerce Pre-Orders</a> for both credit cards and eChecks (if enabled).</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
<h3 id="section-14">Accept.js</h3>
<p>Version 3.0+ of WooCommerce Authorize.Net includes automated support for Accept.js. Once you have <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">configured the gateway</a>, we can retrieve the information required to use Accept.js from your Authorize.Net account – no extra configuration steps required!</p>
<p>This feature means that customer payment information is handled directly by Authorize.Net, meeting the lower level PCI SAQ A-EP compliance level. Accept.js is handled behind the scenes, so your customers won’t notice any change to their checkout process. Click here to learn more about Accept.js.</p>
<p>&nbsp;</p>
<h3 id="section-15">Enhanced Checkout Form</h3>
<p>Authorize.Net supports an enhanced checkout form that improves the checkout experience on mobile and desktop devices. <a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#enhanced-checkout">Click here to read about the enhanced payment form</a>.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-enhanced-checkout-form.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10806" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-enhanced-checkout-form.png" alt="" width="773" height="427" /></a></p>
<div class="woo-sc-box normal   "><strong>Note</strong>: The appearance of your checkout form may vary based on your site’s theme.</div>
<p>&nbsp;</p>
<h2 id="section-16">Authorize.Net Emulation</h2>
<p><strong>Please note</strong> that Authorize.Net Emulation does not support advanced features such as refunds, voids, and capturing charges from within WooCommerce. Only payment processing is supported.</p>
<p>To use Authorize.Net with a gateway that supports Authorize.Net emulation, you need to enable the Authorize.Net emulator under <strong>Plugins &gt; Installed Plugins</strong> — click “Enable emulation gateway”:</p>
<figure id="attachment_162636" class="wp-caption aligncenter" aria-describedby="caption-attachment-162636">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-gateway-plugin-page-highlight.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10807" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-gateway-plugin-page-highlight.png" alt="" width="550" height="63" /></a><br />
<br /><figcaption id="caption-attachment-162636" class="wp-caption-text">Enable Emulation Gateway</figcaption></figure>
<p>This allows you to use Authorize.Net’s emulation protocol for other gateways.</p>
<p>The <strong>Authorize.Net emulator</strong> settings will now be available under <strong>WooCommerce &gt; Settings &gt; Payments</strong>. To use Authorize.Net emulation, you must enable the gateway and enter the <em>Gateway URL</em> and <em>API credentials</em> provided to you by your payment processor.</p>
<figure id="attachment_162634" class="wp-caption aligncenter" aria-describedby="caption-attachment-162634">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-emulation-settings.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10804" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-emulation-settings.png" alt="" width="550" height="376" /></a><br />
<br /><figcaption id="caption-attachment-162634" class="wp-caption-text">Emulator settings</figcaption></figure>
<h3 id="legacy-settings">Extension Settings</h3>
<ul>
<li><strong>Enable / Disable</strong> – This will enable the gateway to be used by customers to checkout.</li>
<li><strong>Title</strong> – This is the text shown for the payment during checkout and on the Order Received page.</li>
<li><strong>Description</strong> – This is the text shown under the title during checkout. Limited HTML is allowed. If you enable test mode, this section will also display a notice along with test credit card numbers.</li>
<li><strong>Card Verification (CSC)</strong> – Enable this to require customers to enter their CVV / CV2 (Card Security Code) when checking out. This can be useful if you have requirements in your Authorize.Net account for CV2 verification.</li>
<li><strong>Transaction Type</strong> – This controls how transactions are submitted to Authorize.Net. You may choose either “Charge” or “Authorization”. If you select “Authorization”, you must manually capture and settle payments in your Authorize.Net control panel or on the WooCommerce orders screen after the transaction has been submitted. This defaults to “Charge”.</li>
<li><strong>Accepted Card Logos</strong> – This controls the card logos that display during checkout. This is purely cosmetic and has <strong>no affect</strong> on the cards actually accepted by your merchant account.</li>
<li><strong>Debug Mode</strong> – Enable this is you are having issues correctly processing transactions. You can either log API requests / responses directly to the checkout / thank you page, save them to the WooCommerce Error Log (found under WooCommerce &gt; System Status &gt; Logs) or both. All debugging messages are cleaned of sensitive information before display, but as a best practice, <strong>please do not enable this unless you are having issues with the plugin.</strong></li>
<li><strong>Environment</strong> – Switch between “Test” and “Production” credentials. Enable “Test” to send transactions to your Authorize.Net Test Account. <strong>Note: This is not the “test mode” that is listed under your Authorize.Net account.</strong> This is an entirely separate sandbox environment that requires a separate login. You can sign up for a test account here. Once you have done this, you can enter a separate API Login ID and API Transaction Key for your test account. Do not place your Test Account (or regular account) into “Test Mode” within the Authorize.Net control panel as transactions will not process at all if that mode is set.</li>
<li><strong>Payment Gateway URL</strong> – The Gateway URL for the Authorize.Net gateway processor. Optionally, this URL can be changed to a different processor that allows Authorize.Net emulation.</li>
<li><strong>API Login ID</strong> – This is the API Login for your Authorize.Net account (Test or Production). <a href="https://help.codibu.com/blog/kb/authorize-net/#setup">Follow the steps above</a> to get this. If you’re using this gateway for Authorize.Net emulation, then this will be the API Login provided to you by your payment processor.</li>
<li><strong>API Transaction Key</strong> – This is the API Transaction Key for your Authorize.Net account (Test or Production). <a href="https://help.codibu.com/blog/kb/authorize-net/#setup">Follow the steps above</a> to get this. If you’re using this gateway for Authorize.Net emulation, then this will be the API Transaction Key provided to you by your payment processor.</li>
</ul>
<p>&nbsp;</p>
<h2 id="section-18">Frequently Asked Questions</h2>
<p><strong id="faq-subscriptions-required-card-code">Q: Why am I receiving an error message on subscription renewals saying that Card Code is required? It’s not required in my plugin settings!</strong><br />
<strong>A:</strong> If you’re seeing an error like “Authorize.Net Payment Failed (3 E00027): Card Code is Required…”, it’s likely that Card Code is required on your Authorize.Net account. For PCI compliance and security reasons, Authorize.Net cannot store CSCs for subscription renewals, so card codes are unavailable for renewal orders. If your Authorize.Net account requires these, the orders will fail. <a href="https://help.codibu.com/blog/kb/authorize-net/#required-field-errors">Click here to learn how to disable this requirement.</a></p>
<hr />
<p><strong id="faq-subscriptions-display">Q: Why don’t Subscriptions display inside the Authorize.Net control panel?</strong><br />
<strong>A:</strong> Subscriptions aren’t shown in Authorize.Net because the gateway doesn’t use ARB (automated recurring billing). It tokenizes the customer’s payment method and then the Subscriptions plugin handles charging the payment method. This is far more flexible than ARB and thus supports a lot of features, such as changing payment dates and amounts, that ARB can’t handle.</p>
<hr />
<p><strong id="faq-test-email">Q: Why did I receive a “test transaction successful” email?</strong><br />
<strong>A:</strong> During checkout, the extension validates the payment information entered by the customer (i.e. confirms that the card number, expiration date, etc. are correct). This “test transaction” does not charge the customer, but generates an email to the merchant. You can email support@authorize.net to have them disable this email notification to you.</p>
<hr />
<p><strong id="faq-refunds-echecks">Q: Can I process automatic refunds with eChecks?</strong><br />
<strong>A:</strong> No – automatic refunds from WooCommerce can only be processed for credit card transactions.</p>
<hr />
<p><strong id="faq-import-profile">Q: I’m migrating sites – can I import customer IDs and payment profile IDs to my new site?</strong><br />
<strong>A:</strong> The Authorize.Net plugin stores the customer ID, payment profile ID, and shipping profile ID as meta fields, so you could use an export plugin like <a href="https://help.codibu.com/blog/kb/woocommerce-customer-order-coupon-export/">Customer/Order CSV Export</a> to pull down the IDs from your old site and use an import plugin like <a href="https://help.codibu.com/blog/kb/customer-order-coupon-csv-import-suite/">Customer/Order/Coupon CSV Import Suite</a> to import these IDs to you new site! Other export/import plugins might work well here, too, so long as they are capable of exporting and importing customer/user meta.</p>
<hr />
<p><strong id="faq-disable-receipts">Q: My customers get email receipts from WooCommerce and Authorize.Net. How do I get rid of Authorize.Net receipts?</strong><br />
<strong>A:</strong> You can disable these emails in your Authorize.Net account. Click here for instructions on disabling customer email receipts.</p>
<hr />
<p><strong id="faq-capture-over-total">Q: How do I capture a higher amount than what is authorized (like a gas station or restaurant)?</strong><br />
<strong>A:</strong> Authorize.Net (along with most any eCommerce payment processor) cannot do this with card-not-present transactions, such as online payments. For these payments, you can only capture up to the value of the authorization: “The amount being requested for capture is less than or equal to the original authorized amount.”</p>
<p>When gas stations and restaurants do this, they’re using a particular POS system that gives them a certification to capture a certain percentage over the authorized amount. This functionality isn’t available for eCommerce systems, so this isn’t possible on your WooCommerce site or with the Authorize.Net plugin.</p>
<hr />
<p><strong id="faq-apple-pay">Q: Authorize.Net supports Apple Pay for web payments. Can I use this in my store?</strong><br />
<strong>A:</strong> Authorize.Net CIM contains a framework for Apple Pay, but it can only be enabled by developers, as the certification process requires developer-only tools. If you work with a developer and would like to add Apple Pay to your store, please <a href="https://help.codibu.com/blog/kb/accepting-apple-pay-with-woocommerce/">click here to review the setup instructions and requirements</a>. Please note that configuring Apple Pay support for this plugin is considered a customization and is not covered by our support policy.</p>
<hr />
<p><strong id="faq-3ds">Q: Does this plugin support 3D Secure? I need to meet Strong Customer Authentication (SCA) requirements.</strong><br />
<strong>A:</strong> WooCommerce Authorize.Net does not support 3D Secure at this time — Authorize.Net’s API does not support accepting the customer data required to meet 3D Secure v2.0 requirements (which is required for folks seeking to comply with PDS2 regulations / SCA requirements). If you need to enable SCA, please ask your Authorize.Net representative about migrating you to CyberSource. You can read more about PSD2 and Authorize.Net here, and <a href="https://help.codibu.com/blog/kb/woocommerce-cybersource-payment-gateway/#faq">see updates on 3D Secure with WooCommerce CyberSource here</a>.</p>
<hr />
<p><strong id="faq-local-ssl">Q: I have a local test environment, do I need to have an SSL certificate installed?</strong><br />
<strong>A:</strong> Yes, an SSL certificate is also required on local test environments. In order to obtain an SSL Certificate for your local site, you can generate a self-signed certificate, or install a test certificate with a service such as the free Let’s Encrypt.</p>
<p>&nbsp;</p>
<h2 id="section-19">Troubleshooting</h2>
<p>&nbsp;</p>
<h3 id="section-20">Authorize.Net Test Credentials</h3>
<p>To run tests with this plugin, you will need a set of dedicated test credentials from Authorize.Net. Your live credentials <strong>cannot be used in “Test” mode</strong>. When you change the Environment <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">setting</a> to “Test”, the Connection Settings fields will remove your live credentials and let you enter your test credentials. When you switch back to “Production”, the plugin will restore your live credentials.</p>
<div class="woo-sc-box normal   "><strong>Note</strong>: Do not set your production accounts into test mode from within your Authorize.Net account – this returns dummy data for live transactions, but <strong>does not work</strong> with the plugin’s test mode, since you’re still using production credentials.</div>
<p>&nbsp;</p>
<h3 id="section-21">Authorize.Net Error Codes</h3>
<p>Authorize.Net provides many different error/response codes that can provide helpful information about what caused an error during payment processing. Click here to review Authorize.Net’s Response Code Reference. You can enter the code in this reference tool to see the cause of the error. In some cases, such as a transaction being held for review or declined, the plugin can’t resolve the issue. In those cases, you must fix the problem from your Authorize.Net account.</p>
<p><strong>Notes:</strong></p>
<ul>
<li>Orders with <code>Response Code = 4</code> will be approved, but can be cancelled manually in the WooCommerce admin and Authorize.Net Merchant Area area later if they fail review.</li>
<li>Be sure to have “Partial Authorization” turned off in your Authorize.Net Merchant Area. This will restrict orders with with <code>Response Code = 4</code> and <code>Response Code = 295</code> from being approved. “Allow Partial Payments” is off by default, but to verify it is off, follow these steps:
<ul>
<li>Login to your Authorize.Net merchant area.</li>
<li>Go to <strong>Account</strong> &gt; <strong>Partial Authorization</strong>.</li>
<li>Ensure that <strong>Allow Partial Payments</strong> is unchecked and click <strong>Submit</strong> to save your changes, if applicable.</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<h3 id="section-22">Required Field Errors</h3>
<p>If you receive an error like <code>(E00027) - The transaction was unsuccessful. Error Code: 33 - [Field Name] is required.</code>, your Authorize.Net account is likely setup to require a field that our plugin cannot send. These errors can occur on orders, refunds, and void transactions.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-required-field-error.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10811" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-required-field-error.png" alt="" width="540" height="610" /></a></p>
<p>To resolve this issue, you should remove all field requirements from your Authorize.Net account by following the steps below:</p>
<ol>
<li>Login to your Authorize.Net Account.</li>
<li>Go to <strong>Account</strong> &gt; <strong>Payment Form</strong> &gt; <strong>Form Fields</strong>.</li>
<li>Uncheck the <strong>Required</strong> boxes for all fields.</li>
<li>Click <strong>Submit</strong>.</li>
</ol>
<h3 id="section-23">Accept.js Errors</h3>
<p>If you receive an error like <code>Accept.js Error: payment nonce is missing</code>, your checkout page is likely not loading the Accept.js file when our plugin expects it to. This is usually caused by a JavaScript conflict of some kind, typically with your theme or another plugin. Often times, optimization plugins interfere with how JavaScript loads on your checkout page and cause this error. A few conflicting plugins to look for are:</p>
<ul>
<li>Autoptimize</li>
<li>SG Optimizer</li>
<li>Hummingbird Pro</li>
</ul>
<p>If you are using one of these plugins, disabling the plugin completely or adjusting its settings so they don’t optimize your checkout page should resolve the error.</p>
<p>&nbsp;</p>
<h3 id="section-24">eCheck Issues</h3>
<p>If you enabled eChecks in the Authorize.Net gateway plugin but have not enabled WEB eCheck enabled on your Authorize.Net account, you may see errors like <code>[Code 246] - This eCheck.Net type is not allowed</code>. <a href="https://help.codibu.com/blog/kb/authorize-net/#echeck-setup">Click here for instructions on setting up eChecks on your Authorize.Net account.</a></p>
<p>&nbsp;</p>
<h3 id="section-25">Refund Issues</h3>
<p>When attempting to process an <a href="https://help.codibu.com/blog/kb/authorize-net/#automatic-refunds">automatic refund</a>, you may see the following error message:</p>
<p><code>Oops, you cannot partially void this order. Please use the full order amount.</code></p>
<p>This means that you’re trying to perform a partial refund, but the charge hasn’t been settled yet. This can happen when you try to refund within a day of purchase. The Authorize.Net plugin tries to void this order, since the funds haven’t been transferred yet, but Authorize.Net doesn’t permit partial voids.</p>
<p>To resolve this, please wait until the charge has settled (about 24 hours after the order was charged) before trying the refund again.</p>
<p>&nbsp;</p>
<h3 id="section-26">Failed Subscription Renewals</h3>
<p>The most frequent cause of failed subscription renewals is the “Payment token is missing or invalid” error. This occurs when payment data has changed on your site or within Authorize.Net for this user, but the subscription record hasn’t been updated.</p>
<p>For a renewal to process successfully, a few conditions must be met:</p>
<ul>
<li><strong>The customer must have a payment token on your site.</strong> <a href="https://help.codibu.com/blog/kb/advanced-payment-gateway-features/#token-editor">Click here for information on viewing user payment tokens.</a></li>
<li><strong>The payment token data in the user profile must match data on the subscription record.</strong> <a href="https://docs.woocommerce.com/document/subscriptions/add-or-modify-a-subscription/#section-8">Click here to learn more about finding this information in the subscription record.</a></li>
<li><strong>The payment must be accepted by Authorize.Net.</strong> Our plugin has no control over declined transactions.</li>
</ul>
<p>If the customer profile ID and payment profile ID (payment token) don’t match between the user and subscription records, any automated renewal orders will fail until you update the subscription record IDs to match the user record IDs.</p>
<p>We have a few recommendations for preventing mismatches between user and subscription records:</p>
<ul>
<li><strong>Don’t use the same Authorize.Net API credentials on multiple sites.</strong> If customer payment information is changed on one site but not another site, your payment profile information may no longer sync with your Authorize.Net account properly.</li>
<li><strong>If you take customer information over the phone, be sure to update the payment information on your site instead of on Authorize.Net.</strong> Our plugin will push changes from your site to your Authorize.Net account, but won’t be notified of payment information changes in Authorize.Net, so it can’t update your site’s subscription records.</li>
<li><strong>If you make any changes to customer or payment profile information from your Authorize.Net account, be sure to also update the subscription records on your site.</strong> You should <a href="https://docs.woocommerce.com/document/subscriptions/add-or-modify-a-subscription/#section-8">double-check customer profile ID and payment profile ID</a> for the subscription any time you make changes in Authorize.Net.</li>
<li><strong>If your customers want to update a subscription payment method, they must use the <a href="https://help.codibu.com/blog/kb/subscribers-view/#section-10">subscription “Change Payment” process</a>.</strong> Simply adding a new payment method to their site account won’t change the subscription’s payment method. If you’re doing this for them, we recommend using the free User Switching plugin to impersonate their account.</li>
</ul>
<p>&nbsp;</p>
<h3 id="section-27">Other Issues</h3>
<p>Having a different problem? Follow these steps to make sure everything is setup correctly before posting a support request:</p>
<ul>
<li>Please ensure that your site meets the <a href="https://help.codibu.com/blog/kb/authorize-net/#requirements">plugin requirements</a>.</li>
<li>Check the <a href="https://help.codibu.com/blog/kb/authorize-net/#faq">FAQs</a> to see if they address your question.</li>
<li>Confirm that your <a href="https://help.codibu.com/blog/kb/authorize-net/#getting-started">API Login ID and API Transaction Key</a> are correct.</li>
<li>Enable Debug Mode and review the errors codes/messages provided by Authorize.Net. <a href="https://help.codibu.com/blog/kb/authorize-net/#error-codes">Click here to learn more about Authorize.Net error/response codes.</a> In some cases, such as a transaction being held for review or declined, the plugin cannot change the issue and it must be resolved in your Authorize.Net account. If the error code indicates an issue with the plugin, please <a href="https://woocommerce.com/my-account/create-a-ticket/">submit a support ticket</a> and include the logs to help us troubleshoot.</li>
</ul>
<p>&nbsp;</p>
<h2 id="section-28">Upgrading from another plugin</h2>
<p>If you’re upgrading from a legacy WooCommerce.com integration (Authorize.Net AIM, DPM, or SIM / Accept Hosted), you will see a notice in that plugin to migrate to this integration. Your existing plugin subscription has automatically been converted to a subscription for the new and improved Authorize.Net integration! You can migrate your site to this integration seamlessly with a couple of clicks.</p>
<p>You should be <strong>connected to WooCommerce.com</strong> to complete this migration. If your site has not been connected to WooCommerce.com, you will be prompted to connect first. (<a href="https://help.codibu.com/blog/kb/managing-woocommerce-com-subscriptions/#i-am-not-using-or-have-not-previously-used-the-woocommerce-helper">Check out this document for help</a>, or see our FAQs below if you can’t connect.)</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-migration-not-connected.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10810" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-migration-not-connected.png" alt="" width="2048" height="509" /></a></p>
<p>Once connected to WooCommerce.com, you’ll see a notice to migrate to this version of the plugin when you’re ready.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-migration-connected.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10809" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-migration-connected.png" alt="" width="2048" height="497" /></a></p>
<p>With a single click, this will automatically take care of the full migration:</p>
<ul>
<li>The unified plugin (this new integration) will be downloaded from your WooCommerce.com account and installed.</li>
<li>This plugin will be activated.</li>
<li>Your settings, such as your Authorize.Net credentials, will be migrated over to the new plugin automatically.</li>
<li>Payments will continue to process seamlessly, as will refunds, charge captures, and more.</li>
</ul>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-migration-complete.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10808" src="https://help.codibu.com/wp-content/uploads/2020/11/woocommerce-authorize-net-migration-complete.png" alt="" width="2048" height="481" /></a></p>
<p>&nbsp;</p>
<h3 id="section-29">Upgrade FAQs</h3>
<p><strong>Q: What if I’m unable to connect to WooCommerce.com? (For example, if your site sells CBD oil products.)</strong><br />
<strong>A:</strong> You can still migrate! You’ll need a couple more steps, though:</p>
<ol>
<li>Download the new Authorize.Net integration from your WooCommerce.com account (you will already have a new subscription for it).</li>
<li>Install this plugin under <strong>Plugins &gt; Add New &gt; Upload</strong>.</li>
<li>Activate this plugin.</li>
</ol>
<p>Once this new, unified plugin is activated, it will handle migrating your settings automatically for you.</p>
<hr />
<p><strong>Q: Why were the AIM / CIM / DPM / SIM plugins replaced with this one?</strong><br />
<strong>A:</strong> When we originally built all of the various Authorize.Net integrations for WooCommerce, it was because Authorize.Net had several different payment processing products. This is no longer the case anymore, so it was confusing to have to choose the right plugin. Since Authorize.Net’s offerings have become more streamlined, we needed to migrate all WooCommerce stores to use this version of the plugin, which supports the latest and greatest offerings from Authorize.Net.</p>
<hr />
<p>
<strong>Q: What has changed from my previous plugin?</strong><br />
<strong>A:</strong> You’ve gained some new features! <img decoding="async" class="emoji" role="img" draggable="false" src="https://help.codibu.com/wp-content/uploads/2022/03/1f642.svg" alt="&#x1f642;" /> “Which features” depends on what plugin you were using previously. However, all Authorize.Net users now have the ability to let customers save payment methods, use WooCommerce Subscriptions, use WooCommerce Pre-orders, and more. You can also choose to keep your checkout form inline (helping you meet SAQ A-EP PCI compliance standards) or use a lightbox checkout form (helping you meet SAQ A PCI compliance standards).</p>
<hr />
<p><strong>Q: What will happen to my plugin subscription?</strong><br />
<strong>A:</strong> Your WooCommerce.com account was automatically gifted a new subscription for this plugin. Here’s how we handled the change:</p>
<ul>
<li>You have been gifted a subscription for the new plugin that ends on the same date as your original plugin subscription.</li>
<li>If your plugin subscription was set to auto-renew, we’ve turned it off, and enabled auto-renew on the new plugin subscription. If your subscription did not auto-renew, we’ve left it disabled.</li>
<li>Your previous plugin subscription is still in your account for now, but it will end on its original date, and cannot be renewed again (as the legacy plugins are now retired).</li>
</ul>
<hr />
<p><strong>Q: What if the migration doesn’t go smoothly?</strong><br />
<strong>A:</strong> The worst-case scenario is that we’re not able to migrate the plugin’s settings, and you would need to update them manually. This is a pretty foolproof process, though. If you’d like to double-check the migration, we recommend completing it at an off-peak time, then double-checking a test payment with your store. <a href="https://woocommerce.com/my-account/create-a-ticket/">Our support team</a> is also happy to help out with any questions or migration concerns!</p>
<p>&nbsp;</p>
<h2 id="section-30">For Developers</h2>
<p>Here are a couple of example snippets for some of the Authorize.Net CIM filters in place:</p>
<p><strong>Default the “Securely Save to Account?” checkbox on the payment form to checked</strong></p>
<div id="gist24956182" class="gist">
<div class="gist-file">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container file-box">
<div id="file-wc-auth-net-cim-save-payment-method-default-checked-php" class="file my-2">
<div class="Box-body p-0 blob-wrapper data type-php  ">
<table class="highlight tab-size js-file-line-container" data-tab-size="8" data-paste-markdown-skip="">
<tbody>
<tr>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-L1" class="blob-num js-line-number" data-line-number="1"> </td>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-ent">&lt;?php</span></td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-L2" class="blob-num js-line-number" data-line-number="2"> </td>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c">// force the &#8220;securely save to account&#8221; checkbox to default to checked</span></td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-L3" class="blob-num js-line-number" data-line-number="3"> </td>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">function</span> <span class="pl-en">wc_auth_net_cim_save_payment_method_default_checked</span>( <span class="pl-s1"><span class="pl-c1">$</span>html</span>, <span class="pl-s1"><span class="pl-c1">$</span>form</span> ) {</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-L4" class="blob-num js-line-number" data-line-number="4"> </td>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-LC4" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-L5" class="blob-num js-line-number" data-line-number="5"> </td>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> ( <span class="pl-en">empty</span>( <span class="pl-s1"><span class="pl-c1">$</span>html</span> ) || <span class="pl-s1"><span class="pl-c1">$</span>form</span>-&gt;<span class="pl-en">tokenization_forced</span>() ) {</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-L6" class="blob-num js-line-number" data-line-number="6"> </td>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>html</span>;</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-L7" class="blob-num js-line-number" data-line-number="7"> </td>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-LC7" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-L8" class="blob-num js-line-number" data-line-number="8"> </td>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-LC8" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-L9" class="blob-num js-line-number" data-line-number="9"> </td>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-k">return</span> <span class="pl-en">str_replace</span>( <span class="pl-s">&#8216;type=&#8221;checkbox&#8221;&#8216;</span>, <span class="pl-s">&#8216;type=&#8221;checkbox&#8221; checked=&#8221;checked&#8221;&#8216;</span>, <span class="pl-s1"><span class="pl-c1">$</span>html</span> );</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-L10" class="blob-num js-line-number" data-line-number="10"> </td>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-LC10" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-L11" class="blob-num js-line-number" data-line-number="11"> </td>
<td id="file-wc-auth-net-cim-save-payment-method-default-checked-php-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-en">add_filter</span>( <span class="pl-s">&#8216;wc_authorize_net_cim_credit_card_payment_form_save_payment_method_checkbox_html&#8217;</span>, <span class="pl-s">&#8216;wc_auth_net_cim_save_payment_method_default_checked&#8217;</span>, <span class="pl-c1">10</span>, <span class="pl-c1">2</span> );</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
</div>
</div>
<p><strong>Adjust authorize-only transaction order status from “On hold” to something else</strong></p>
<div id="gist24844088" class="gist">
<div class="gist-file">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container file-box">
<div id="file-wc-auth-net-cim-adjust-auth-only-order-status-php" class="file my-2">
<div class="Box-body p-0 blob-wrapper data type-php  ">
<table class="highlight tab-size js-file-line-container" data-tab-size="8" data-paste-markdown-skip="">
<tbody>
<tr>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-L1" class="blob-num js-line-number" data-line-number="1"> </td>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-ent">&lt;?php</span></td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-L2" class="blob-num js-line-number" data-line-number="2"> </td>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-LC2" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-L3" class="blob-num js-line-number" data-line-number="3"> </td>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-k">function</span> <span class="pl-en">sv_wc_auth_net_cim_tweak_held_order_status</span>( <span class="pl-s1"><span class="pl-c1">$</span>order_status</span>, <span class="pl-s1"><span class="pl-c1">$</span>order</span>, <span class="pl-s1"><span class="pl-c1">$</span>response</span> ) {</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-L4" class="blob-num js-line-number" data-line-number="4"> </td>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-LC4" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-L5" class="blob-num js-line-number" data-line-number="5"> </td>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-k">if</span> ( <span class="pl-s">&#8216;on-hold&#8217;</span> === <span class="pl-s1"><span class="pl-c1">$</span>order_status</span> &amp;&amp; <span class="pl-s1"><span class="pl-c1">$</span>response</span> instanceof <span class="pl-v">SV_WC_Payment_Gateway_API_Response</span> &amp;&amp; <span class="pl-s1"><span class="pl-c1">$</span>response</span>-&gt;<span class="pl-en">transaction_approved</span>() ) {</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-L6" class="blob-num js-line-number" data-line-number="6"> </td>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c1">$</span>order_status</span> = <span class="pl-s">&#8216;processing&#8217;</span>;</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-L7" class="blob-num js-line-number" data-line-number="7"> </td>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-LC7" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-L8" class="blob-num js-line-number" data-line-number="8"> </td>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-LC8" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-L9" class="blob-num js-line-number" data-line-number="9"> </td>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>order_status</span>;</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-L10" class="blob-num js-line-number" data-line-number="10"> </td>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-LC10" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-L11" class="blob-num js-line-number" data-line-number="11"> </td>
<td id="file-wc-auth-net-cim-adjust-auth-only-order-status-php-LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-en">add_filter</span>( <span class="pl-s">&#8216;wc_payment_gateway_authorize_net_cim_credit_card_held_order_status&#8217;</span>, <span class="pl-s">&#8216;sv_wc_auth_</span></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div><p>The post <a href="https://help.codibu.com/blog/woocommerce-authorize-net/">WooCommerce Authorize.net</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://help.codibu.com/blog/woocommerce-authorize-net/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>UPS Shipping Method</title>
		<link>https://help.codibu.com/blog/ups-shipping-method/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ups-shipping-method</link>
					<comments>https://help.codibu.com/blog/ups-shipping-method/#respond</comments>
		
		<dc:creator><![CDATA[JN C]]></dc:creator>
		<pubDate>Sun, 08 Nov 2020 15:45:31 +0000</pubDate>
				<guid isPermaLink="false">https://help.codibu.com/kb/ups-shipping-method/</guid>

					<description><![CDATA[<p>UPS Shipping Method allows you to get shipping rates from the UPS API. It requires that your server uses SimpleXML. The extension primarily works with measurements in Inches (in) and weight in Pounds (lbs),<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://help.codibu.com/blog/ups-shipping-method/">UPS Shipping Method</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><a href="https://help.codibu.com/blog/kb/ups-shipping-method/" rel="noopener noreferrer">UPS Shipping Method</a> allows you to get shipping rates from the UPS API. It requires that your server uses SimpleXML. The extension primarily works with measurements in <strong>Inches (in)</strong> and weight in <strong>Pounds (lbs)</strong>, but other units can be converted automatically. Returned rates’ currency is based on origin country in the shipping instance setting.</p>
<p>UPS can calculate quotes for both domestic and international parcels.</p>
<div class="woo-sc-box note   "><strong>Note</strong><b>:</b> This extension does not handle freight shipping, and there is a weight limit of 150 lbs. The API and the built-in box packer require that non-virtual products have weights and dimensions set. More at: <a href="https://help.codibu.com/blog/kb/adding-shipping-dimensions-to-products/" rel="noopener noreferrer">Adding Shipping Dimensions and Weights to Products</a>.</div>
<h2 id="section-1">Installation</h2>
<ol>
<li>Download the extension from your <a href="https://woocommerce.com/my-account/downloads/">WooCommerce dashboard.</a></li>
<li>Go to <strong>Plugins &gt; Add New &gt; Upload</strong> and select the ZIP file you just downloaded.</li>
<li>Click Install Now, and then Activate.</li>
</ol>
<p>More information at: <span class="woo-sc-ilink"><a class="info" href="https://help.codibu.com/blog/kb/managing-plugins/#Installing_Plugins">Installing and Managing Plugins</a></span>.</p>
<h2 id="section-2"><strong>API &amp; Debug </strong></h2>
<p><strong>Go to</strong>: <strong>WooCommerce &gt; Settings &gt; Shipping &gt; UPS</strong>.</p>
<ol>
<li><strong>UPS User ID</strong> – Get your UPS User ID from the developer site by signing up at UPS Developer Kit.</li>
<li><strong>UPS Password</strong> – Set by you during signup.</li>
<li><strong>UPS Access Key</strong> – Sent to you after signup.</li>
<li><strong>UPS Account Number</strong> – Sent to you after signup.</li>
<li><strong>Customer Classification </strong>– Determines what rates are returned. Note that Retail Rates will match the online calculator.</li>
<li><strong>Debug Mode</strong> – Enable/disable debug mode to show debugging information on your cart/checkout.</li>
<li><strong>Save changes</strong>.</li>
</ol>
<h2 id="section-3">Configuration</h2>
<ol>
<li><strong>Go to</strong>: <strong>WooCommerce &gt; Settings &gt; Shipping</strong>.</li>
<li><strong>Select</strong> your Shipping Zone that you want to add the method to, and press the Add shipping method + button on the right<br />
<a href="https://help.codibu.com/wp-content/uploads/2020/11/selectflatboxes.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10737" src="https://help.codibu.com/wp-content/uploads/2020/11/selectflatboxes.png" alt="" width="2154" height="344" /></a>
</li>
<li><strong>Select</strong> UPS from the dropdown and press Add shipping method:<br />
<a href="https://help.codibu.com/wp-content/uploads/2020/11/screen-shot-2016-10-07-at-11-09-04-am.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10735" src="https://help.codibu.com/wp-content/uploads/2020/11/screen-shot-2016-10-07-at-11-09-04-am.png" alt="" width="545" height="296" /></a>
</li>
<li><strong>Configure</strong> the settings:
<ul>
<li><strong>Method &amp; Origin Settings</strong>
<ol>
<li><strong>Method Title </strong>– Name the shipping method. This is visible to customers.</li>
<li><strong>Origin City</strong> – Enter city you are sending from.</li>
<li><strong>Origin Postcode</strong> – Set to the postcode from where you ship. It is sent to the UPS API.</li>
<li><strong>Origin Country</strong> – Set to the country from where you ship. It is sent to the UPS API.</li>
</ol>
</li>
<li><strong>Services and Packaging</strong>
<ol>
<li><strong>Services</strong> – Choose to rename and/or rearrange the order of UPS shipping rates.</li>
<li><strong>Offer Rates</strong> – Select whether to display all rates available or only the cheapest.</li>
<li><strong>Negotiated Rates</strong> – Enable negotiated rates or not. More at: Account-Specific Negotiated Rates. This must be approved by UPS, or the API returns an error. It is sent to the UPS API.</li>
<li><strong>Delivery Confirmation</strong> – Optionally you may charge customers for delivery confirmation. This just adds the specified amount to the returned rates.</li>
<li><strong>Parcel Packing Method</strong> – See below.</li>
<li><strong>UPS Packaging</strong> – You can select from a built-in list of standard UPS packaging to use.</li>
<li><strong>Custom Boxes</strong> – Here you can add custom box sizes to pack into.</li>
</ol>
</li>
<li><strong>Advanced Options</strong>
<ol>
<li><strong>Origin Address</strong> – Sometimes you may need to enter the address for the sender/origin.</li>
<li><strong>Residential</strong> – Choose whether to indicate deliveries as residential or commercial addresses.<br />
* Users are permitted to enter PO Boxes as a shipping address, even though UPS does not allow it.</li>
<li><strong>Insured value</strong> – Request Insurance to be included in UPS rates.</li>
<li><strong>Fallback</strong> – Enter a fallback amount for shipping, if no rates are found.</li>
<li><strong>Weight/Dimension Units</strong> – Only change this if you’re getting the “This measurement system is not valid for the selected country method.”</li>
</ol>
</li>
</ul>
</li>
</ol>
<div class="woo-sc-box note   "><strong>Note:</strong> The UPS shipping extension is a calculator for all products in the cart and does not exclude products based on shipping classes.</div>
<h2 id="section-4">Parcel Packing Methods</h2>
<p>There are two packing methods with UPS, and each affects the parcels you send to the API.</p>
<h3 id="section-5">Pack items individually (Default)</h3>
<p>Each item in your cart (non-virtual) is sent to the UPS API. Quotes for all items are combined to calculate the final cost. Only the weight is required, but also entering product dimensions produces a more accurate quote. For even more accuracy, we recommend the box packer method.</p>
<p>To use this method, <a title="WooCommerce How to add a product" href="https://help.codibu.com/blog/kb/adding-and-managing-products/">add a new product</a> then scroll down to <strong>Product Data &gt; Shipping</strong> to enter the product dimensions.</p>
<h3 id="section-6">Pack into boxes with weights and dimensions (Recommended)</h3>
<p>Using this method, you create your own custom box sizes in UPS Settings. The extension uses the weight/dimensions of products added to the cart, filling the custom box size from smallest to largest based on volume and size, then sends the number of boxes/size to the UPS API for a shipping estimate. Both product weight and dimensions are needed for this option to accurately calculate what boxes are needed.</p>
<p>Selecting this option you must follow the steps listed below for <strong>UPS Packaging</strong> or <strong>Custom Box Packing</strong> for this method to work.</p>
<h2 id="section-7">UPS Packaging</h2>
<p>UPS offers standard boxes for shipping. <strong>UPS Packaging</strong>:</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/UPS-Packaging-Settings.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10768" src="https://help.codibu.com/wp-content/uploads/2020/11/UPS-Packaging-Settings.jpg" alt="" width="1215" height="421" /></a></p>
<p>Start typing the package you want to include, and it auto-populates the field for you.</p>
<div class="woo-sc-box note   "><strong>Note:</strong> If you choose <strong>Pack into boxes with weights and dimensions (Recommended)</strong> but have not chosen any UPS Packaging, nor defined any custom boxes (as explained below), the plugin displays the error message: “UPS is enabled, and Parcel Packing Method is set to ‘Pack into boxes’, but no UPS Packaging is selected and there are no custom boxes defined. Items will be packed individually.”</div>
<h2 id="section-8">Custom Box-Packing</h2>
<p>The box packer included with this shipping method groups items into boxes that you define by height, width, length, weight, and max-weight. The packing is mainly <strong>volume based</strong>, but also considers item sizes.</p>
<div class="woo-sc-box note   ">The box packer is volume based. In most cases, this provides good results but is never as accurate as a real person packing a box (see BIN Packing Problem). Therefore, it is important to understand that packing results are as accurate as they can be, and any anomalies should be acceptable.</div>
<h3 id="section-9">Setting up box sizes</h3>
<ol>
<li><strong>Go to</strong>: <strong>WooCommerce &gt; Settings &gt; Shipping</strong>.</li>
<li><strong>Select</strong> your Shipping Zone containing UPS, then click <strong>UPS</strong></li>
<li>Scroll down to<strong> Custom Boxes</strong> and select <strong>Add Box</strong> to set up box dimensions:</li>
</ol>
<figure id="attachment_152458" class="wp-caption alignnone" aria-describedby="caption-attachment-152458">
<a href="https://help.codibu.com/wp-content/uploads/2020/11/UPS-Custom-box-packer.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10765" src="https://help.codibu.com/wp-content/uploads/2020/11/UPS-Custom-box-packer.png" alt="" width="1253" height="251" /></a><br />
<br /><figcaption id="caption-attachment-152458" class="wp-caption-text">Box Settings</figcaption></figure>
<p><strong>Outer dimensions</strong> are used for parcel dimensions and are passed to the API.</p>
<p><strong>Inner dimensions</strong> are used for packing, and items should fit within these.</p>
<p><strong>Box weight</strong> is the weight of the actual box, and is added to the weight of contents.</p>
<p><strong>Max weight</strong> is the maximum weight your box can hold. This includes contents weight and box weight.</p>
<h3 id="section-10">How the calculation works</h3>
<p>The packer:</p>
<ol>
<li>Finds boxes that fit items being packed (uses H x W x D).</li>
<li>Packs all fitting items into boxes (using volume).</li>
<li>Uses the smallest box that fits 100% of items *or* uses the highest % packed box, and then passes unpacked items back and repeats the process.</li>
<li>Packs unpackable items alone, using item dimensions.</li>
<li>Returns all packed boxes.</li>
</ol>
<h2 id="section-11">Handling Fees</h2>
<p>To add handling fees to shipping calculations, you can use a Price Adjustment column in the Services section. Each UPS service can be increased or decreased (by adding the “-” sign) separately, using price adjustment columns in the row.</p>
<p>Use the Price Adjustment ($) column to add a flat amount to the shipping quote. In this example, the 3-Day Select and Ground shipping methods are increased by $3.50.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/ups-handling-flat.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10766" src="https://help.codibu.com/wp-content/uploads/2020/11/ups-handling-flat.png" alt="" width="2048" height="203" /></a></p>
<p>Use the Price Adjustment (%) to increase the shipping quote by a percentage. In this example, the 3-Day Select and Ground shipping methods are increased by 1% of the quote returned by UPS.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/ups-handling-percentage.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10767" src="https://help.codibu.com/wp-content/uploads/2020/11/ups-handling-percentage.png" alt="" width="2048" height="209" /></a></p>
<h2 id="section-12">Customer Usage</h2>
<p>Customers get quotes, after inputting their address, from two places:</p>
<ul>
<li>Cart page – via the shipping calculator</li>
<li>Checkout page – via the shipping and billing forms</li>
</ul>
<div>Rates can be selected by customers as normal.</div>
<div>
<a href="https://help.codibu.com/wp-content/uploads/2020/11/ups-checkout-options.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10764" src="https://help.codibu.com/wp-content/uploads/2020/11/ups-checkout-options.png" alt="" width="639" height="784" /></a>
</div>
<div> </div>
<h2 id="section-13">Available Shipping Services for UPS Extension</h2>
<p>These services are included with the UPS Shipping extension:</p>
<p><strong>Domestic</strong></p>
<p>3-Day Select<br />
Ground<br />
2nd Day Air<br />
2nd Day Air AM<br />
Next Day Air<br />
Next Day Air Saver<br />
Next Day Air Early AM</p>
<p><strong>International</strong></p>
<p>Standard<br />
Worldwide Express<br />
Worldwide Express Plus<br />
Worldwide Expedited Standard<br />
Worldwide Saver</p>
<h2 id="section-14">FAQ</h2>
<h3 id="section-15">I dropship items. Can I use multiple origin zip codes?</h3>
<p>No, the WooCommerce UPS extension currently uses one origin zip code to request quotes from UPS.</p>
<h3 id="section-16">Does this create shipping labels and tracking codes?</h3>
<p>No it does not. It provides the integration between UPS and WooCommerce, so you can calculate shipping rates for customers and collect the correct amount of payment in checkout.</p>
<p>You get shipping labels and tracking numbers directly from UPS or can buy a different plugin to handle that for you.</p>
<h3 id="section-17">Rates are not in the correct currency</h3>
<p>UPS will use the currency that is enabled on your account. So if your site uses a different currency then the one which is set on the account, the rates won’t be returned. If the debug setting is enabled this will be indicated with a warning like:<br />
<code>[UPS] Rate for Standard (UPS) is in USD but store currency is EUR.</code></p>
<p>If you need to convert these rates to the correct currency we would suggest using the <a href="https://help.codibu.com/blog/kb/woocommerce-multi-currency/">Multi Currency extension</a> and setting up a conversion rate for both the account currency and the store currency.</p>
<h2 id="section-18">Troubleshooting</h2>
<h3 id="section-19">No rates returned/no rates available</h3>
<ul>
<li>Confirm that your API credentials are correct.</li>
<li>Enable development mode, or turn on WP_DEBUG to see debugging information on the cart page. This often reveals the issue.</li>
<li>Check that your products have sizes and weights set – without this, the calculation cannot be performed.</li>
</ul>
<h2 id="section-20">Customize</h2>
<p>If you would like to remove UPS as a shipping option for some shipping classes you can use the <a href="https://help.codibu.com/blog/kb/conditional-shipping-and-payments/">WooCommerce Conditional Shipping and Payments</a> extension.</p>
<p>Or you can use code to do this.</p>
<div class="woo-sc-box note   "><strong>Note:</strong> The following is considered <strong>custom code. </strong>We are happy to give it to you, but we are unable to provide support or help customize it to suit your store. Only use it if you are comfortable with PHP and custom coding and troubleshooting on your own.</div>
<p>You can add the following code to your <code>functions.php</code>. You need to change shipping classes used on the 14th line:</p>
<div id="gist87967944" class="gist">
<div class="gist-file">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container file-box">
<div id="file-ups-remove-shipping-for-specific-classes-php" class="file my-2">
<div class="Box-body p-0 blob-wrapper data type-php  ">
<table class="highlight tab-size js-file-line-container" data-tab-size="8" data-paste-markdown-skip="">
<tbody>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L1" class="blob-num js-line-number" data-line-number="1"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-c">/**</span></td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L2" class="blob-num js-line-number" data-line-number="2"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Check the cart for specific classes, remove UPS Shipping method if they are present</span></td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L3" class="blob-num js-line-number" data-line-number="3"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * </span></td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L4" class="blob-num js-line-number" data-line-number="4"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * REMOVE THE TOP &lt;?php if there is no ?&gt; before (or you have an error after adding this)</span></td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L5" class="blob-num js-line-number" data-line-number="5"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * </span></td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L6" class="blob-num js-line-number" data-line-number="6"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> * Add the code to your theme functions.php file</span></td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L7" class="blob-num js-line-number" data-line-number="7"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-c"> */</span></td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L8" class="blob-num js-line-number" data-line-number="8"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC8" class="blob-code blob-code-inner js-file-line">add_filter( &#8216;woocommerce_package_rates&#8217;, &#8216;unset_ups_shipping_method&#8217; , 10, 2 );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L9" class="blob-num js-line-number" data-line-number="9"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC9" class="blob-code blob-code-inner js-file-line">function unset_ups_shipping_method( $rates, $package ) {</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L10" class="blob-num js-line-number" data-line-number="10"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC10" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L11" class="blob-num js-line-number" data-line-number="11"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC11" class="blob-code blob-code-inner js-file-line">// Setup an array of shipping classes that do not allow UPS Shipping (@todo change this)</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L12" class="blob-num js-line-number" data-line-number="12"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC12" class="blob-code blob-code-inner js-file-line">$shippingclass_array = array( &#8216;no-ups&#8217; );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L13" class="blob-num js-line-number" data-line-number="13"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC13" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L14" class="blob-num js-line-number" data-line-number="14"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC14" class="blob-code blob-code-inner js-file-line">/**</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L15" class="blob-num js-line-number" data-line-number="15"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC15" class="blob-code blob-code-inner js-file-line">* loop through the cart looking for the products in the array above</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L16" class="blob-num js-line-number" data-line-number="16"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC16" class="blob-code blob-code-inner js-file-line">* and unset the Free shipping methods as necessary</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L17" class="blob-num js-line-number" data-line-number="17"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC17" class="blob-code blob-code-inner js-file-line">*/</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L18" class="blob-num js-line-number" data-line-number="18"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC18" class="blob-code blob-code-inner js-file-line">foreach ( WC()-<span class="pl-kos">&gt;</span>cart-<span class="pl-kos">&gt;</span>get_cart() as $cart_item_key =<span class="pl-kos">&gt;</span> $values ) {</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L19" class="blob-num js-line-number" data-line-number="19"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC19" class="blob-code blob-code-inner js-file-line">$shipping_class = get_the_terms( $values[&#8216;product_id&#8217;], &#8216;product_shipping_class&#8217; );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L20" class="blob-num js-line-number" data-line-number="20"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC20" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L21" class="blob-num js-line-number" data-line-number="21"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC21" class="blob-code blob-code-inner js-file-line">if ( isset( $shipping_class[0]-<span class="pl-kos">&gt;</span>slug ) &amp;&amp; in_array( $shipping_class[0]-<span class="pl-kos">&gt;</span>slug, $shippingclass_array ) ) {</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L22" class="blob-num js-line-number" data-line-number="22"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC22" class="blob-code blob-code-inner js-file-line">/**</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L23" class="blob-num js-line-number" data-line-number="23"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC23" class="blob-code blob-code-inner js-file-line">* Unset the shipping methods here</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L24" class="blob-num js-line-number" data-line-number="24"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC24" class="blob-code blob-code-inner js-file-line">*/</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L25" class="blob-num js-line-number" data-line-number="25"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC25" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:01&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L26" class="blob-num js-line-number" data-line-number="26"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC26" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:02&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L27" class="blob-num js-line-number" data-line-number="27"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC27" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:03&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L28" class="blob-num js-line-number" data-line-number="28"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC28" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:04&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L29" class="blob-num js-line-number" data-line-number="29"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC29" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:05&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L30" class="blob-num js-line-number" data-line-number="30"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC30" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:06&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L31" class="blob-num js-line-number" data-line-number="31"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC31" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:07&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L32" class="blob-num js-line-number" data-line-number="32"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC32" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:08&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L33" class="blob-num js-line-number" data-line-number="33"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC33" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:09&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L34" class="blob-num js-line-number" data-line-number="34"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC34" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:10&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L35" class="blob-num js-line-number" data-line-number="35"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC35" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:11&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L36" class="blob-num js-line-number" data-line-number="36"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC36" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:12&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L37" class="blob-num js-line-number" data-line-number="37"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC37" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:13&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L38" class="blob-num js-line-number" data-line-number="38"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC38" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:14&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L39" class="blob-num js-line-number" data-line-number="39"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC39" class="blob-code blob-code-inner js-file-line">unset( $rates[&#8216;ups:15&#8217;] );</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L40" class="blob-num js-line-number" data-line-number="40"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC40" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L41" class="blob-num js-line-number" data-line-number="41"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC41" class="blob-code blob-code-inner js-file-line">// The rates have been removed, no point in carrying on</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L42" class="blob-num js-line-number" data-line-number="42"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC42" class="blob-code blob-code-inner js-file-line">//break;</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L43" class="blob-num js-line-number" data-line-number="43"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC43" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L44" class="blob-num js-line-number" data-line-number="44"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC44" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L45" class="blob-num js-line-number" data-line-number="45"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC45" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L46" class="blob-num js-line-number" data-line-number="46"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC46" class="blob-code blob-code-inner js-file-line">// Return what&#8217;s left of the $rates array</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L47" class="blob-num js-line-number" data-line-number="47"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC47" class="blob-code blob-code-inner js-file-line">return $rates;</td>
</tr>
<tr>
<td id="file-ups-remove-shipping-for-specific-classes-php-L48" class="blob-num js-line-number" data-line-number="48"> </td>
<td id="file-ups-remove-shipping-for-specific-classes-php-LC48" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div><p>The post <a href="https://help.codibu.com/blog/ups-shipping-method/">UPS Shipping Method</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://help.codibu.com/blog/ups-shipping-method/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>USPS Shipping Method</title>
		<link>https://help.codibu.com/blog/usps-shipping-method/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=usps-shipping-method</link>
					<comments>https://help.codibu.com/blog/usps-shipping-method/#respond</comments>
		
		<dc:creator><![CDATA[JN C]]></dc:creator>
		<pubDate>Sun, 08 Nov 2020 15:44:48 +0000</pubDate>
				<guid isPermaLink="false">https://help.codibu.com/kb/usps-shipping-method/</guid>

					<description><![CDATA[<p>USPS Shipping is a premium method that sources shipping rates from the USPS API and works with our free service WooCommerce Shipping, which creates discounted shipping labels right from<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://help.codibu.com/blog/usps-shipping-method/">USPS Shipping Method</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><a href="https://help.codibu.com/blog/kb/usps-shipping-method/" rel="noopener noreferrer">USPS Shipping</a> is a premium method that sources shipping rates from the USPS API and works with our free service <a href="https://help.codibu.com/blog/kb/save-time-money-with-woocommerce-shipping/" rel="noopener noreferrer">WooCommerce Shipping</a>, which creates discounted shipping labels right from your WooCommerce dashboard.</p>
<p>USPS can calculate domestic and international parcel rates. This extension uses 2019 rates.</p>
<div class="woo-sc-box note   ">The API and built-in box packer need your non-virtual products to have weights and dimensions set. More info at: <a href="https://help.codibu.com/blog/kb/adding-shipping-dimensions-to-products/">Adding Shipping Dimensions to Products</a>.</div>
<h2 id="section-1">Requirements</h2>
<ul>
<li>Your store must use <strong>US Dollars</strong> as its currency</li>
<li>Server must have SimpleXML installed. Check with your hosting company if you’re unsure</li>
<li>Base country must be the <strong>United States, Puerto Rico or US Virgin Islands</strong></li>
</ul>
<p>The extension primarily works with measurements in <strong>Inches (in)</strong> and weight in <strong>Pounds (lbs)</strong>, but other units can be converted automatically.</p>
<h2 id="section-2">Installation</h2>
<ol>
<li>Download the extension from your <a href="http://woocommerce.com/my-account/downloads/">WooCommerce dashboard.</a></li>
<li>Go to <strong>Plugins &gt; Add New &gt; Upload</strong> and select the ZIP file you just downloaded.</li>
<li><strong>Install Now</strong>, and then Activate.</li>
</ol>
<h2 id="section-3">API &amp; Debug</h2>
<p><strong>Go to</strong>: <strong>WooCommerce &gt; Settings &gt; Shipping &gt; USPS</strong>.</p>
<ol>
<li><strong>USPS User ID</strong> – You can use our USPS User ID (this is set automatically) or sign up for your own at Webtools account on USPS.com.</li>
<li><strong>Debug Mode </strong>– Enable debug mode to show debugging info on your cart/checkout. This information is shown only to administrators who are logged in.</li>
</ol>
<h2 id="section-4">Setup and Configuration</h2>
<ol>
<li><strong>Go to</strong>: <strong>WooCommerce &gt; Settings &gt; Shipping &gt; Shipping Zones</strong>.</li>
<li><strong>Add </strong>new Shipping Zone or <strong>Edit</strong> an existing zone to add the shipping method.<br />
<a href="https://help.codibu.com/wp-content/uploads/2020/11/usps-add-method.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10771" src="https://help.codibu.com/wp-content/uploads/2020/11/usps-add-method.png" alt="" width="950" height="426" /></a></li>
<li>Select <strong>USPS</strong> from the dropdown, then <strong>Add shipping method</strong>.<br />
<a href="https://help.codibu.com/wp-content/uploads/2020/11/select-usps.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10738" src="https://help.codibu.com/wp-content/uploads/2020/11/select-usps.png" alt="" width="1064" height="660" /></a></li>
<li><strong>Configure</strong> the settings:
<ul>
<li><strong>Method Title </strong>– Name the shipping method. This is visible to customers.</li>
<li><strong>Offer Rates</strong> – Choose whether to offer the customer only the cheapest rate or all returned rate options.</li>
<li><b>Fallback</b> – Enter a fallback shipping cost (optional), if no rates are returned from the API. This allows the customer to check out if USPS does not return matching rates. When using this option, do not use a dollar sign, just enter the amount (ex: 12.50).</li>
<li> <strong>Flat Rates</strong>
<ol>
<li><strong>Flat Rate Boxes and Envelopes</strong> – Enable this option to offer shipping using USPS Flat Rate services. Items are packed into the boxes/envelopes, and the customer is offered a single rate.</li>
<li><strong>Express Flat Rate Title</strong> – Give a custom name to the express flat rate.</li>
<li><strong>Priority Flat Rate Title</strong> – Give a custom name to the priority flat rate.</li>
<li><strong>Additional Fee</strong> – Enter a fee per box excluding tax, such as an amount (2.50) or a percentage (5%). Or leave blank to disable.</li>
</ol>
</li>
<li> <b>API Rates </b>– Check to enable non-flat rates using the USPS API. Default is all services available; or choose what to offer from the available shipping services listed below. You can adjust:
<ol>
<li><strong>Enable API Rates</strong> – This enables non-flat rate services.</li>
<li><strong>Origin Postcode</strong> – Postcode from where you ship. It is sent to the USPS API.</li>
<li><strong>Shipping Rates</strong> – Retail rates are standard costs, Commercial rates are discounted. If you want those rates to match those you get when printing labels with <a href="https://help.codibu.com/blog/kb/save-time-money-with-woocommerce-shipping/" rel="noopener noreferrer">WooCommerce Shipping</a>, set it to “Commercial rates”. Printing with WooCommerce Shipping automatically qualifies you for Commercial rates.</li>
<li><strong>Parcel Packing Method</strong> – See below for more detailed explanation.</li>
</ol>
</li>
</ul>
</li>
</ol>
<div class="woo-sc-box note   "><strong>Note:</strong> The USPS shipping extension is a calculator for all products in the cart and does not exclude products based on shipping classes. To exclude products from using the USPS shipping method, use <a href="https://help.codibu.com/blog/kb/conditional-shipping-and-payments/">WooCommerce Conditional Shipping and Payments</a> extension.</div>
<h2 id="section-5">Available Shipping Services</h2>
<p>These services are included with the USPS Shipping extension:</p>
<p><strong>Domestic</strong></p>
<ul>
<li>First-Class Mail® Large Envelope</li>
<li>First-Class Mail® Postcards</li>
<li>First-Class Mail® Stamped Letter</li>
<li>First-Class Package Service – Retail<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
<li>First-Class<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Postcard Stamped</li>
<li>First-Class<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Large Postcards</li>
<li>First-Class<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Keys and IDs</li>
<li>First-Class<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Package Service</li>
<li>First-Class Mail® Metered Letter</li>
<li>First-Class<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Package Service Hold For Pickup</li>
<li>Priority Mail Express<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Hold for Pickup</li>
<li>Priority Mail Express<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
<li>Priority Mail Express<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Sunday/Holiday</li>
<li>Retail Ground<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
<li>Media Mail®</li>
<li>Library Mail</li>
<li>Priority Mail®</li>
<li>Priority Mail® Keys and IDs</li>
<li>Priority Mail® Hold For Pickup</li>
<li>Priority Mail® Regional Rate Box A (when commercial rates are used)</li>
<li>Priority Mail® Regional Rate Box B (when commercial rates are used)</li>
</ul>
<h4 id="international">International</h4>
<ul>
<li>Priority Mail Express International<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
<li>Priority Mail International®</li>
<li>Global Express Guaranteed® (GXG)</li>
<li>Global Express Guaranteed® Document</li>
<li>Global Express Guaranteed® Non-Document Rectangular</li>
<li>Global Express Guaranteed® Non-Document Non-Rectangular</li>
<li>USPS GXG<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Envelope</li>
<li>First Class Mail® International Letters</li>
<li>First Class Mail® International Large Envelope</li>
<li>International Postcards</li>
</ul>
<p><strong>Flat Rate Shipping Options</strong></p>
<ul>
<li>Priority Mail Flat Rate<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> – Envelopes (Legal, Letter, Gift Card, Padded, Small, Window) and Boxes (Small, Medium 1 and 2, Large, APO/DPO/FPO Large, Large Board Game, Prepaid Forever® Packaging)</li>
<li>Priority Mail Express Flat Rate<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/2122.png" alt="™" class="wp-smiley" style="height: 1em; max-height: 1em;" /> – Envelopes (Envelope, Legal, Padded) and Boxes (Top-Loading, Side-Loading)</li>
<li>Priority Mail International Flat Rate® – Envelopes (Legal, Letter, Gift Card, Padded, Small, Window) and Boxes (Small, Medium 1 and 2, Large, APO/DPO/FPO Large, Large Board Game)</li>
</ul>
<p>To enable any of these options:</p>
<p><strong>Select</strong> the Standard Services option to ‘Retrieve Standard Service rates from the USPS API’.</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/usps-api.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10772" src="https://help.codibu.com/wp-content/uploads/2020/11/usps-api.png" alt="" width="950" height="211" /></a></p>
<p>You also have the option to rename the service and include a negative/positive price adjustment by the default currency or a percentage.</p>
<ul>
<li><strong>Price adjustments ($)</strong> – Add a flat adjustment to the USPS service.</li>
<li><strong>Price adjustments (%) </strong>– Add a percentage adjustment to the USPS service.</li>
</ul>
<h2 id="section-6">Flat Rate Services</h2>
<p>If enabled, the flat rate box option creates a single quote based on USPS Flat Rate Services. To do this, the system uses the box packer (explained below) applying USPS box dimensions. Packed boxes are then combined to offer a single rate (named by your ‘method title’).</p>
<p>Flat Rate Shipping prices come directly from USPS, and you cannot add or modify pricing for this option.</p>
<p>In the case of both Flat Rates and API Rates are used, USPS will return both but will reject one in favor of the other if it is cheaper for the same service.</p>
<h2 id="section-7">Parcel Packing Method</h2>
<p>There are three packing methods with USPS, and each affects the parcels you send to the API.</p>
<h3 id="section-8">Per-Item</h3>
<p>Each item in your cart (non-virtual) is sent to the USPS API. Quotes for all items are combined to calculate the final cost.</p>
<h3 id="section-9">Pack into boxes</h3>
<p>Items are packed into pre-defined boxes and sent to the API. We recommend this option. See <strong>Box Packing</strong> below for more information.</p>
<h3 id="section-10">Weight based</h3>
<p>Regular sized items (&lt; 12 inches) are grouped and quoted for weights only. Large items ( &gt; 12 inches) are quoted individually.</p>
<h2 id="box-packing">Box Packing</h2>
<p>The box packer included with this shipping method lets you group items into packages for which you define height, width, length, weight and max-weight. Packing is mainly <strong>volume based</strong> but also considers item size.</p>
<div class="woo-sc-box note   ">The box packer is volume based. This provides good results in most cases but are never be as accurate as a real person packing a box (see BIN Packing Problem). Therefore, it is important to understand that packing results are as accurate as possible, and any anomalies should be acceptable.</div>
<h3 id="section-12">Setting up box sizes</h3>
<p>When using the ‘Recommended: Pack into boxes with weights and dimensions’ Parcel Packing Method, the Box Sizes table will appear. Click ‘Add Box’ to set up dimensions for your packages.</p>
<p><strong>Name:</strong> This allows you to name your custom packages. This name will show in the Debug if that package is used.</p>
<p><strong>L (in), W (in), H (in):</strong> The first set of dimensions are the outer dimensions of the package. These are the dimensions passed to the API. If you are working with a flat rate box via the API (i.e., Regional Boxes), use the API’s ‘inner dimensions’ for your box’s outer dimensions. Your box must ‘fit’ inside.</p>
<p><strong>Inner L (in), Inner W (in), Inner H (in):</strong> The second set of dimensions are for the inner dimensions of the packaging. This should be the outer dimensions minus the thickness of the package walls. These dimensions are used for packing and items must fit within them (they cannot be the same size as the products, allow for a little extra room). Inner dimensions must be <strong>smaller</strong> than the first set of dimensions (outer dimensions).</p>
<p><strong>Weight of Box (lbs):</strong> This is the weight of the empty box by itself. This weight is added to the total weight of the contents.</p>
<p><strong>Max Weight (lbs):</strong> This is the maximum weight your box can hold. This includes the weight of the box and the contents. Setting this value as <code>0</code> would mean an unlimited box-weight.</p>
<p><strong>Letter:</strong> This checkbox determines whether your package is a letter (envelope) or a box.</p>
<figure id="attachment_160818" class="wp-caption aligncenter" aria-describedby="caption-attachment-160818"><a href="https://help.codibu.com/wp-content/uploads/2020/11/CustomBoxes.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10675" src="https://help.codibu.com/wp-content/uploads/2020/11/CustomBoxes.png" alt="" width="1253" height="317" /></a><br /><figcaption id="caption-attachment-160818" class="wp-caption-text">Example packages</figcaption></figure>
<h3 id="section-13">How the calculation works</h3>
<p>The box packer:</p>
<ol>
<li><strong>Finds</strong> boxes that fit items being packed (uses H x W x D).</li>
<li><strong>Packs</strong> all items into boxes (using volume).</li>
<li><strong>Uses</strong> the smallest box fitting 100% of items *or* uses the highest % packed box, and then passes unpacked items back (and repeats the process)</li>
<li><strong>Packs</strong> unpackable items alone, using item dimensions.</li>
<li><strong>Returns</strong> all packed boxes.</li>
</ol>
<h2 id="section-14">Media Mail®</h2>
<p>To enable Media Mail®, you must select the ‘Retrieve Standard Service rates from the USPS API’ option. You then have two options: a) You can do nothing, which allows any item to use Media Mail®; or b) if only some of your products are eligible for Media Mail®, you need to give each product a <a title="Shipping Class Documentation" href="https://help.codibu.com/blog/kb/product-shipping-classes-2/">shipping class</a> and restrict Media Mail® to use only that class or classes.</p>
<p>After setting up shipping classes, you can restrict settings in your Shipping Zone USPS rate:</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/restrict-media-mail.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10715" src="https://help.codibu.com/wp-content/uploads/2020/11/restrict-media-mail.png" alt="" width="950" height="178" /></a></p>
<h2 id="section-15">Customer Usage</h2>
<p>Customers can get quotes based on the address entered from two places:</p>
<ul>
<li>Cart page – by using the shipping calculator</li>
<li>Checkout page – by filling in shipping and billing forms</li>
</ul>
<div>Rates can be selected by customers.</div>
<h2 id="section-16">Troubleshooting</h2>
<h3 id="section-17">No rates returned/no rates available</h3>
<ul>
<li>Enable debug mode to see debugging info on the cart page. This often reveals the issue. To enable, go to WooCommerce &gt; Settings &gt; Shipping &gt; USPS.</li>
<li>Check that products have sizes and weights set – without this, the calculation cannot be performed.</li>
<li>Go to: WooCommerce &gt; Settings &gt; General and check that your store’s base country is the United States and US Dollars is the currency.</li>
<li>Check that the plugin is linked to USPS API. It uses wp_remote_post, which makes use of fsockopen/CURL.</li>
<li>If API rate are enabled, make sure origin postcode is included.</li>
</ul>
<p>If you need help with adding weights/dimensions, see:</p>
<h3 id="section-19">Stamped Letter service not available</h3>
<p>If packing items individually, please note the minimum size requirements for the contents of a letter envelope:</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/Screen-Shot-2020-07-21-at-11.43.09-AM.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10736" src="https://help.codibu.com/wp-content/uploads/2020/11/Screen-Shot-2020-07-21-at-11.43.09-AM.png" alt="" width="887" height="348" /></a></p>
<p>If the contents of the envelope(the product in the cart) are not within the minimum and maximum dimensions shown above, the Stamped Letter service will not be shown as available.</p>
<h3 id="section-20">“UserName exceeds maximum length of 12 characters” error message</h3>
<p>If you receive this error message when the debug mode is enabled, you need to use a shorter username.</p>
<h2 id="section-21">Customize</h2>
<p class="p1"> </p>
<div class="woo-sc-box note   "><b>Note</b>: This is a <b>Developer level</b> section. If you are unfamiliar with code and resolving potential conflicts, select a <a href="https://woocommerce.com/customizations/"><span class="s2">WooExpert or Developer</span></a> for assistance. We are unable to provide support for customizations under our<span class="Apple-converted-space">  </span><a href="https://help.codibu.com/blog/kb/support-policy/"><span class="s2">Support Policy</span></a>.</div>
<p>&nbsp;</p>
<h3 id="section-22">Filter Flat Rate Services</h3>
<p>To change the USPS package to envelope so dimensions are fixed, add this to your theme’s functions.php file:</p>
<div id="gist87968125" class="gist">
<div class="gist-file">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container file-box">
<div id="file-usps-fixed-package-dimensions-php" class="file my-2">
<div class="Box-body p-0 blob-wrapper data type-php  ">
<table class="highlight tab-size js-file-line-container" data-tab-size="8" data-paste-markdown-skip="">
<tbody>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L1" class="blob-num js-line-number" data-line-number="1"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC1" class="blob-code blob-code-inner js-file-line">/**</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L2" class="blob-num js-line-number" data-line-number="2"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC2" class="blob-code blob-code-inner js-file-line">* USPS 4.0 introduced the ability for envelopes to be flexible you can disable this with this function</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L3" class="blob-num js-line-number" data-line-number="3"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC3" class="blob-code blob-code-inner js-file-line">* Simply set the type to &#8216;envelope&#8217; instead of &#8216;package&#8217; for any of the flat rate services that USPS lists as envelopes</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L4" class="blob-num js-line-number" data-line-number="4"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC4" class="blob-code blob-code-inner js-file-line">*/</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L5" class="blob-num js-line-number" data-line-number="5"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC5" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L6" class="blob-num js-line-number" data-line-number="6"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC6" class="blob-code blob-code-inner js-file-line">add_filter( &#8216;wc_usps_flat_rate_boxes&#8217;, &#8216;custom_usps_flat_rate_boxes&#8217; );</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L7" class="blob-num js-line-number" data-line-number="7"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC7" class="blob-code blob-code-inner js-file-line">function custom_usps_flat_rate_boxes( $flat_rate_boxes ) {</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L8" class="blob-num js-line-number" data-line-number="8"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC8" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L9" class="blob-num js-line-number" data-line-number="9"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC9" class="blob-code blob-code-inner js-file-line">// Priority Mail Express Envelopes</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L10" class="blob-num js-line-number" data-line-number="10"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC10" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;d13&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L11" class="blob-num js-line-number" data-line-number="11"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC11" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;d30&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L12" class="blob-num js-line-number" data-line-number="12"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC12" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;d55&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L13" class="blob-num js-line-number" data-line-number="13"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC13" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;d63&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L14" class="blob-num js-line-number" data-line-number="14"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC14" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;d98&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L15" class="blob-num js-line-number" data-line-number="15"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC15" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L16" class="blob-num js-line-number" data-line-number="16"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC16" class="blob-code blob-code-inner js-file-line">// Priority Mail Envelopes</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L17" class="blob-num js-line-number" data-line-number="17"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC17" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;d16&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L18" class="blob-num js-line-number" data-line-number="18"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC18" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;d29&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L19" class="blob-num js-line-number" data-line-number="19"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC19" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;d38&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L20" class="blob-num js-line-number" data-line-number="20"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC20" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;d40&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L21" class="blob-num js-line-number" data-line-number="21"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC21" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;d42&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L22" class="blob-num js-line-number" data-line-number="22"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC22" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;d44&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L23" class="blob-num js-line-number" data-line-number="23"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC23" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L24" class="blob-num js-line-number" data-line-number="24"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC24" class="blob-code blob-code-inner js-file-line">// International Priority Mail Express</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L25" class="blob-num js-line-number" data-line-number="25"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC25" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;i13&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L26" class="blob-num js-line-number" data-line-number="26"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC26" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;130&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L27" class="blob-num js-line-number" data-line-number="27"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC27" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L28" class="blob-num js-line-number" data-line-number="28"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC28" class="blob-code blob-code-inner js-file-line">// International Priority Mail</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L29" class="blob-num js-line-number" data-line-number="29"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC29" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;i8&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L30" class="blob-num js-line-number" data-line-number="30"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC30" class="blob-code blob-code-inner js-file-line">$flat_rate_boxes[&#8220;i29&#8221;][&#8220;type&#8221;] = &#8216;envelope&#8217;;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L31" class="blob-num js-line-number" data-line-number="31"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC31" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L32" class="blob-num js-line-number" data-line-number="32"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC32" class="blob-code blob-code-inner js-file-line">return $flat_rate_boxes;</td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L33" class="blob-num js-line-number" data-line-number="33"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC33" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-fixed-package-dimensions-php-L34" class="blob-num js-line-number" data-line-number="34"> </td>
<td id="file-usps-fixed-package-dimensions-php-LC34" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
</div>
</div>
<p>To remove all the USPS Priority Flat Rate envelopes, leaving only the Small, Medium, and Large Flat Rate boxes, add this to your theme’s functions.php file:</p>
<div id="gist87968192" class="gist">
<div class="gist-file">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container file-box">
<div id="file-usps-remove-priority-flat-rate-envelopes-php" class="file my-2">
<div class="Box-body p-0 blob-wrapper data type-php  ">
<table class="highlight tab-size js-file-line-container" data-tab-size="8" data-paste-markdown-skip="">
<tbody>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L1" class="blob-num js-line-number" data-line-number="1"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC1" class="blob-code blob-code-inner js-file-line">/**</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L2" class="blob-num js-line-number" data-line-number="2"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC2" class="blob-code blob-code-inner js-file-line">* Remove USPS Flat rate envelopes from the available options</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L3" class="blob-num js-line-number" data-line-number="3"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC3" class="blob-code blob-code-inner js-file-line">* Once added the customer will not see any rates for envelopes</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L4" class="blob-num js-line-number" data-line-number="4"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC4" class="blob-code blob-code-inner js-file-line">* Only Small, Medium, and Large Flat Rate boxes will be used</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L5" class="blob-num js-line-number" data-line-number="5"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC5" class="blob-code blob-code-inner js-file-line">*/</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L6" class="blob-num js-line-number" data-line-number="6"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC6" class="blob-code blob-code-inner js-file-line">add_filter( &#8216;wc_usps_flat_rate_boxes&#8217;, &#8216;custom_usps_flat_rate_boxes&#8217; );</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L7" class="blob-num js-line-number" data-line-number="7"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC7" class="blob-code blob-code-inner js-file-line">function custom_usps_flat_rate_boxes( $flat_rate_boxes ) {</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L8" class="blob-num js-line-number" data-line-number="8"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC8" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L9" class="blob-num js-line-number" data-line-number="9"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC9" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;d29&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L10" class="blob-num js-line-number" data-line-number="10"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC10" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;d30&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L11" class="blob-num js-line-number" data-line-number="11"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC11" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;d63&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L12" class="blob-num js-line-number" data-line-number="12"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC12" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;d16&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L13" class="blob-num js-line-number" data-line-number="13"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC13" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;d38&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L14" class="blob-num js-line-number" data-line-number="14"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC14" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;d40&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L15" class="blob-num js-line-number" data-line-number="15"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC15" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;d42&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L16" class="blob-num js-line-number" data-line-number="16"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC16" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;d44&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L17" class="blob-num js-line-number" data-line-number="17"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC17" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;d13&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L18" class="blob-num js-line-number" data-line-number="18"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC18" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L19" class="blob-num js-line-number" data-line-number="19"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC19" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;i33&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L20" class="blob-num js-line-number" data-line-number="20"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC20" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;i30&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L21" class="blob-num js-line-number" data-line-number="21"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC21" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;i63&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L22" class="blob-num js-line-number" data-line-number="22"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC22" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;i8&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L23" class="blob-num js-line-number" data-line-number="23"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC23" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;i29&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L24" class="blob-num js-line-number" data-line-number="24"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC24" class="blob-code blob-code-inner js-file-line">unset($flat_rate_boxes[&#8220;i13&#8221;]);</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L25" class="blob-num js-line-number" data-line-number="25"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC25" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L26" class="blob-num js-line-number" data-line-number="26"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC26" class="blob-code blob-code-inner js-file-line">return $flat_rate_boxes;</td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L27" class="blob-num js-line-number" data-line-number="27"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC27" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-L28" class="blob-num js-line-number" data-line-number="28"> </td>
<td id="file-usps-remove-priority-flat-rate-envelopes-php-LC28" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
</div>
</div>
<p>The codes for each flat rate box can be found below:</p>
<p><strong>Priority Mail Express</strong><br />
Priority Mail Express Flat Rate Envelope: d13<br />
Priority Mail Express Legal Flat Rate Envelope: d30<br />
Priority Mail Express Padded Flat Rate Envelope: d63</p>
<p><strong>Priority Mail</strong><br />
Priority Mail Flat Rate Envelope: d16<br />
Priority Mail Flat Rate Medium Box (Side Loading): d17<br />
Priority Mail Flat Rate Medium Box (Top Loading): d17b<br />
Priority Mail Flat Rate Large Box: d22<br />
Priority Mail Flat Rate Large Box (Board Game): d22a<br />
Priority Mail Flat Rate Small Box: d28<br />
Priority Mail Padded Flat Rate Envelope: d29<br />
Priority Mail Gift Card Flat Rate Envelope: d38<br />
Priority Mail Window Flat Rate Envelope: d40<br />
Priority Mail Small Flat Rate Envelope: d42<br />
Priority Mail Legal Flat Rate Envelope: d44</p>
<p><strong>International Priority Mail Express</strong><br />
Priority Mail Express Flat Rate Envelope: i13<br />
Priority Mail Express Legal Flat Rate Envelope: i30<br />
Priority Mail Express Padded Flat Rate Envelope: i63</p>
<p><strong>International Priority Mail</strong><br />
Priority Mail Flat Rate Envelope: i8<br />
Priority Mail Padded Flat Rate Envelope: i29<br />
Priority Mail Flat Rate Small Box: i16<br />
Priority Mail Flat Rate Medium Box (Side Loading): i9<br />
Priority Mail Flat Rate Medium Box (Top Loading): i9b<br />
Priority Mail Flat Rate Large Box (Top Loading): i11</p>
<h3 id="section-23">Exclude a country from USPS rates</h3>
<p>If you wish to exclude a country from receiving USPS rates, the easiest way is to use <a href="https://help.codibu.com/blog/kb/setting-up-shipping-zones/">Shipping Zones</a> (WooCommerce 2.6+). However if you wish, you can use the snippet below. Change <strong>US</strong> to the country code you’d like to exclude:</p>
<div id="gist87968259" class="gist">
<div class="gist-file">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container file-box">
<div id="file-usps-exclude-country-from-receiving-rates-php" class="file my-2">
<div class="Box-body p-0 blob-wrapper data type-php  ">
<table class="highlight tab-size js-file-line-container" data-tab-size="8" data-paste-markdown-skip="">
<tbody>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L1" class="blob-num js-line-number" data-line-number="1"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC1" class="blob-code blob-code-inner js-file-line">add_filter( &#8216;woocommerce_package_rates&#8217;, &#8216;wcsupport_no_usps_us&#8217;, 10, 2 );</td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L2" class="blob-num js-line-number" data-line-number="2"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC2" class="blob-code blob-code-inner js-file-line">function wcsupport_no_usps_us( $rates, $package ) {</td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L3" class="blob-num js-line-number" data-line-number="3"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC3" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L4" class="blob-num js-line-number" data-line-number="4"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC4" class="blob-code blob-code-inner js-file-line">if ( WC()-<span class="pl-kos">&gt;</span>customer-<span class="pl-kos">&gt;</span>shipping_country == &#8216;US&#8217; ) {</td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L5" class="blob-num js-line-number" data-line-number="5"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC5" class="blob-code blob-code-inner js-file-line">foreach( $rates as $key =<span class="pl-kos">&gt;</span> $rate ) {</td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L6" class="blob-num js-line-number" data-line-number="6"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC6" class="blob-code blob-code-inner js-file-line">if (strpos($key,&#8217;usps&#8217;) !== false) {</td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L7" class="blob-num js-line-number" data-line-number="7"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC7" class="blob-code blob-code-inner js-file-line">unset( $rates[$key] );</td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L8" class="blob-num js-line-number" data-line-number="8"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC8" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L9" class="blob-num js-line-number" data-line-number="9"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC9" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L10" class="blob-num js-line-number" data-line-number="10"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC10" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L11" class="blob-num js-line-number" data-line-number="11"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC11" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L12" class="blob-num js-line-number" data-line-number="12"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC12" class="blob-code blob-code-inner js-file-line">return $rates;</td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L13" class="blob-num js-line-number" data-line-number="13"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC13" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-usps-exclude-country-from-receiving-rates-php-L14" class="blob-num js-line-number" data-line-number="14"> </td>
<td id="file-usps-exclude-country-from-receiving-rates-php-LC14" class="blob-code blob-code-inner js-file-line">}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>&nbsp;</p>
</div>
</div>
<h2 id="section-24">FAQ</h2>
<h3 id="section-25">Do Shipping Zones work with USPS Shipping?</h3>
<p>Yes!</p>
<h3 id="section-26"><strong>How can I get First Class Mail® International Large Envelope rates to display?</strong></h3>
<p>You need to use the <strong>Recommended</strong> parcel packing method and ensure that the <strong>Letter</strong> checkbox is ticked:</p>
<p><a href="https://help.codibu.com/wp-content/uploads/2020/11/usps-international-first-class-env.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10773" src="https://help.codibu.com/wp-content/uploads/2020/11/usps-international-first-class-env.png" alt="" width="1159" height="265" /></a></p>
<p>Additionally, per USPS, these services are not offered because they can’t be used for shipping merchandise. However, there is a way to override this setting in the extension with the following snippet:</p>
<div id="gist100501100" class="gist">
<div class="gist-file">
<div class="gist-data">
<div class="js-gist-file-update-container js-task-list-container file-box">
<div id="file-woocommerce-usps-letters-and-envelopes-php" class="file my-2">
<div class="Box-body p-0 blob-wrapper data type-php  ">
<table class="highlight tab-size js-file-line-container" data-tab-size="8" data-paste-markdown-skip="">
<tbody>
<tr>
<td id="file-woocommerce-usps-letters-and-envelopes-php-L1" class="blob-num js-line-number" data-line-number="1"> </td>
<td id="file-woocommerce-usps-letters-and-envelopes-php-LC1" class="blob-code blob-code-inner js-file-line">/**</td>
</tr>
<tr>
<td id="file-woocommerce-usps-letters-and-envelopes-php-L2" class="blob-num js-line-number" data-line-number="2"> </td>
<td id="file-woocommerce-usps-letters-and-envelopes-php-LC2" class="blob-code blob-code-inner js-file-line">* Add letters and envelopes to international services.</td>
</tr>
<tr>
<td id="file-woocommerce-usps-letters-and-envelopes-php-L3" class="blob-num js-line-number" data-line-number="3"> </td>
<td id="file-woocommerce-usps-letters-and-envelopes-php-LC3" class="blob-code blob-code-inner js-file-line">*/</td>
</tr>
<tr>
<td id="file-woocommerce-usps-letters-and-envelopes-php-L4" class="blob-num js-line-number" data-line-number="4"> </td>
<td id="file-woocommerce-usps-letters-and-envelopes-php-LC4" class="blob-code blob-code-inner js-file-line">add_filter( &#8216;wc_usps_services&#8217;, function( $services ) {</td>
</tr>
<tr>
<td id="file-woocommerce-usps-letters-and-envelopes-php-L5" class="blob-num js-line-number" data-line-number="5"> </td>
<td id="file-woocommerce-usps-letters-and-envelopes-php-LC5" class="blob-code blob-code-inner js-file-line">$services[&#8216;I_FIRST_CLASS&#8217;][&#8216;services&#8217;][&#8217;13&#8217;] = &#8220;First Class Mail&amp;#0174; International Letters&#8221;;</td>
</tr>
<tr>
<td id="file-woocommerce-usps-letters-and-envelopes-php-L6" class="blob-num js-line-number" data-line-number="6"> </td>
<td id="file-woocommerce-usps-letters-and-envelopes-php-LC6" class="blob-code blob-code-inner js-file-line">$services[&#8216;I_FIRST_CLASS&#8217;][&#8216;services&#8217;][&#8217;14&#8217;] = &#8220;First Class Mail&amp;#0174; International Large Envelope&#8221;;</td>
</tr>
<tr>
<td id="file-woocommerce-usps-letters-and-envelopes-php-L7" class="blob-num js-line-number" data-line-number="7"> </td>
<td id="file-woocommerce-usps-letters-and-envelopes-php-LC7" class="blob-code blob-code-inner js-file-line"> </td>
</tr>
<tr>
<td id="file-woocommerce-usps-letters-and-envelopes-php-L8" class="blob-num js-line-number" data-line-number="8"> </td>
<td id="file-woocommerce-usps-letters-and-envelopes-php-LC8" class="blob-code blob-code-inner js-file-line">return $services;</td>
</tr>
<tr>
<td id="file-woocommerce-usps-letters-and-envelopes-php-L9" class="blob-num js-line-number" data-line-number="9"> </td>
<td id="file-woocommerce-usps-letters-and-envelopes-php-LC9" class="blob-code blob-code-inner js-file-line">} );</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div><p>The post <a href="https://help.codibu.com/blog/usps-shipping-method/">USPS Shipping Method</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://help.codibu.com/blog/usps-shipping-method/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Subscriptions Scheduled Action Errors</title>
		<link>https://help.codibu.com/blog/subscriptions-scheduled-action-errors/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=subscriptions-scheduled-action-errors</link>
					<comments>https://help.codibu.com/blog/subscriptions-scheduled-action-errors/#respond</comments>
		
		<dc:creator><![CDATA[JN C]]></dc:creator>
		<pubDate>Sun, 08 Nov 2020 15:33:19 +0000</pubDate>
				<guid isPermaLink="false">https://help.codibu.com/kb/subscriptions-scheduled-action-errors/</guid>

					<description><![CDATA[<p>WooCommerce Subscriptions uses a library called Action Scheduler in order to process scheduled events, like renewal payments or subscription expirations. If an error occurs when processing a scheduled<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://help.codibu.com/blog/subscriptions-scheduled-action-errors/">Subscriptions Scheduled Action Errors</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>WooCommerce Subscriptions uses a library called Action Scheduler in order to process scheduled events, like renewal payments or subscription expirations. If an error occurs when processing a scheduled subscription payment for WooCommerce Subscriptions, a notice may appear in the admin dashboard to alert store managers to this error.</p>
<p>This guide will explain why this notice is displayed, likely causes of the issue, steps to diagnose the cause, and how to fix the problem or get help.</p>
<h2 id="section-1">Scheduled Action Timeout Notice</h2>
<p>As mentioned in Action Scheduler housekeeping, if an action has been “running” for more than five minutes, it is considered to have timed out and is marked as failed. This is because if an action has been running for that length of time, it is likely not actually running at all. When a subscription-related action fails due to a timeout, a notice is displayed in the admin dashboard.</p>
<figure id="attachment_1435945" class="wp-caption aligncenter" aria-describedby="caption-attachment-1435945"><a href="https://help.codibu.com/wp-content/uploads/2020/11/SA1_error_notice_update.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10718" src="https://help.codibu.com/wp-content/uploads/2020/11/SA1_error_notice_update.png" alt="" width="2900" height="336" /></a><br /><figcaption id="caption-attachment-1435945" class="wp-caption-text">Scheduled Action Error Notice</figcaption></figure>
<h2 id="section-2">Fixing Affected Subscriptions</h2>
<h3 id="section-3">Step 1 – Finding the Affected Subscription</h3>
<p>The notice that appears after an action timeout contains a note with the subscription number and a link to the edit subscription page for that subscription. This can be used to investigate if there are issues with the last renewal payment for that subscription that need to be manually addressed.</p>
<h3 id="section-4">Step 2 – Tracking When the Payment Process Was Affected</h3>
<p>The first step to this is to see if payment was actually affected. This can be done by tracking when the payment process was affected.</p>
<h4 id="tracking-the-renewal-process">Tracking the Renewal Process</h4>
<p>For a renewal order, each stage of the renewal process is documented on the subscription in its notes. To view this process:</p>
<ol>
<li>Go to the <b>WooCommerce &gt; Subscriptions &gt; Edit Subscription</b> screen</li>
<li>View the <b>Subscription notes </b>
<p>&nbsp;</p>
<figure id="attachment_1425154" class="wp-caption aligncenter" aria-describedby="caption-attachment-1425154"><a href="https://help.codibu.com/wp-content/uploads/2020/11/SA2_subscription_notes.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10719" src="https://help.codibu.com/wp-content/uploads/2020/11/SA2_subscription_notes.png" alt="" width="2048" height="996" /></a><br /><figcaption id="caption-attachment-1425154" class="wp-caption-text">WooCommerce Edit Subscription – Notes</figcaption></figure>
</li>
<li>The normal <a href="https://help.codibu.com/blog/kb/subscription-renewal-process/">process for a renewal</a> follows:
<ol>
<li>When a renewal is due, the subscription is moved to an <b>On-hold</b> status</li>
<li>An order is created to record the renewal</li>
<li>If the subscription is on automatic renewals, the order attempts to process payment and may mark complete</li>
<li>Once payment is complete, the subscription is moved to <b>Active</b> status 
<p>&nbsp;</p>
<figure id="attachment_1425155" class="wp-caption aligncenter" aria-describedby="caption-attachment-1425155"><a href="https://help.codibu.com/wp-content/uploads/2020/11/SA3_subscription_notes_renewal.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10720" src="https://help.codibu.com/wp-content/uploads/2020/11/SA3_subscription_notes_renewal.png" alt="" width="598" height="1000" /></a><br /><figcaption id="caption-attachment-1425155" class="wp-caption-text">Subscription Notes – Successful Renewal</figcaption></figure>
</li>
</ol>
</li>
<li>Each step above records the date and time at which it was processed.</li>
</ol>
<p>Comparisons can be made between the payment process and the failed action in order to find out when the process timed out.</p>
<h4 id="failure-before-payment">Failure Before Payment</h4>
<p>If the renewal order was created but the payment was not marked complete, the process may have stalled before payment was processed. This can be indicated if the time of failure of the action, as found above, is close to the time of the creation of the renewal order.</p>
<p>To make sure that the payment was not captured, there are a couple steps to take.</p>
<ol>
<li>Go to the created order, linked to in the <b>Subscription notes</b></li>
<li>Check the <b>Order notes</b> on the order to see if the status changed and the payment was processed
<p>&nbsp;</p>
<figure id="attachment_1425156" class="wp-caption aligncenter" aria-describedby="caption-attachment-1425156"><a href="https://help.codibu.com/wp-content/uploads/2020/11/SA4_order_notes_payment_complete.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10721" src="https://help.codibu.com/wp-content/uploads/2020/11/SA4_order_notes_payment_complete.png" alt="" width="2048" height="607" /></a><br /><figcaption id="caption-attachment-1425156" class="wp-caption-text">Order Notes – Payment Complete</figcaption></figure>
</li>
<li>Log in to the chosen payment gateway’s store account and check if the charge was captured for that order.</li>
</ol>
<p>If there is no charge, then the processed stalled before payment was taken.</p>
<h4 id="failure-after-payment">Failure After Payment</h4>
<p>If payment was captured but the order was not marked <b>Processing</b> or <b>Complete</b> or the subscription was not transitioned to an <b>Active</b> status, then the process stalled after payment. This can be indicated if the time of failure of the action, as found above, occurs after the payment was marked complete.</p>
<h3 id="section-5">Step 3 – Fixing Affected Subscriptions and Orders</h3>
<h4 id="affected-before-payment">Affected Before Payment</h4>
<p>If payment was not captured:</p>
<ol>
<li>On the existing renewal order, change the status to <b>Cancelled</b> and <b>Update</b>.</li>
<li>Set the subscription status to <b>Active</b> and <b>Update</b>.</li>
<li>Choose <b>Process renewal</b> from the subscription option dropdown.</li>
<li>This will then create a new renewal order, which should process as normal.</li>
</ol>
<h4 id="affected-after-payment">Affected After Payment</h4>
<p>If payment was captured but the order and subscription were not updated:</p>
<ol>
<li>If the renewal order was not marked <b>Processing</b> or <b>Complete</b>, change the status to the appropriate status. This will also update the subscription to <b>Active</b>.</li>
<li>If only the subscription was not transitioned, set the subscription status to <b>Active</b>.</li>
</ol>
<h2 id="section-6">Diagnosing the Cause</h2>
<p>It’s impossible to programmatically identify the cause of a timeout. Instead, they always require manual investigated, which is why this notice is displayed. There are a number of possible causes, as outlined below, which should be explored to find the cause of the timeout.</p>
<h3 id="section-7">Subscriptions Version</h3>
<p>These timeouts, and thus the error notices, are expected to be extremely rare occurrences with Subscriptions 2.4.3 or newer.</p>
<p>If this notice appears on a site running a version of Subscriptions less than 2.4.3, the first step is to update the Subscriptions version.</p>
<p>If a site is currently running a Subscriptions version greater than or equal to 2.4.3, the version of Subscriptions <i>at the time of the error</i> should be checked. Even if Subscriptions has since been updated, it is important to note what version was running at the time the notice first appeared.</p>
<p>In order to check the version of Subscriptions running when the error occurred:</p>
<ol>
<li>Review the <a href="https://help.codibu.com/blog/kb/subscriptions-logs/#section-7">WCS Upgrade log</a> and the <a href="https://help.codibu.com/blog/kb/subscriptions-logs/#section-3">Failed Scheduled Actions log</a></li>
<li>Compare the time the error is logged in the Failed Scheduled Actions log to the version running at that time, as found in the WCS Upgrade log</li>
</ol>
<p>If a Subscriptions version less than 2.4.3 was running at the time of the error and Subscriptions has since been updated, the underlying issue has likely been resolved.</p>
<p>If the version of Subscriptions was newer than that at the time of the error, further investigation is needed.</p>
<h3 id="section-8">PHP Time Limit</h3>
<p>The PHP time limit is the amount of time the server will spend on a single process before timing out. A time limit that is too short can cause processes to time out. A common default value is 30 seconds, and many managed hosts provide a longer timeout period.</p>
<p>To find the PHP time limit for your server:</p>
<ol>
<li>Go to <b>WooCommerce &gt; Status</b> to view the system status</li>
<li>Scroll down to the <b>Server environment</b> section</li>
<li>View the <b>PHP time limit </b>
<p>&nbsp;</p>
<figure id="attachment_1425162" class="wp-caption aligncenter" aria-describedby="caption-attachment-1425162"><a href="https://help.codibu.com/wp-content/uploads/2020/11/SA5_php_time_limit.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10722" src="https://help.codibu.com/wp-content/uploads/2020/11/SA5_php_time_limit.png" alt="" width="2048" height="526" /></a><br /><figcaption id="caption-attachment-1425162" class="wp-caption-text">PHP Time Limit</figcaption></figure>
</li>
</ol>
<p>If this limit is below 30 seconds, we recommend increasing it to avoid scheduled action timeouts.</p>
<p>To change this limit, contact your hosting provider and discuss with them the best way to change the time limit if possible.</p>
<h3 id="section-9">Large Number of Timeouts</h3>
<p>This kind of notice and timeout is expected to be a very infrequent occurrence, and certainly not something that occurs repeatedly. In sites where there are dozens of timeouts or more, there is likely a critical underlying problem causing the timeouts that will need to be addressed.</p>
<p>To check the number of timeouts review the <a href="https://help.codibu.com/blog/kb/subscriptions-logs/#section-3">Failed Scheduled Actions log</a>.</p>
<p>If there are many timeouts, please open a support ticket.</p>
<h2 id="section-10">Further Help</h2>
<p>If you would like further assistance, please open a support ticket.</p>
<p>In the support ticket, please include the <a href="https://help.codibu.com/blog/kb/opening-a-subscriptions-support-ticket/#section-6">system status</a>, so we can find your site’s PHP time limit and plugin versions, and the name of your host, so we can investigate their specific server limitations. If in Step 1 you were able to determine the active version of Subscriptions at the time of the error, include this as well. Please also include an <a href="https://help.codibu.com/blog/kb/opening-a-subscriptions-support-ticket/#section-7">admin login</a> so that we can access your site.</p><p>The post <a href="https://help.codibu.com/blog/subscriptions-scheduled-action-errors/">Subscriptions Scheduled Action Errors</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://help.codibu.com/blog/subscriptions-scheduled-action-errors/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Disabling Subscriptions</title>
		<link>https://help.codibu.com/blog/disabling-subscriptions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=disabling-subscriptions</link>
					<comments>https://help.codibu.com/blog/disabling-subscriptions/#respond</comments>
		
		<dc:creator><![CDATA[JN C]]></dc:creator>
		<pubDate>Sun, 08 Nov 2020 15:31:52 +0000</pubDate>
				<guid isPermaLink="false">https://help.codibu.com/kb/disabling-subscriptions/</guid>

					<description><![CDATA[<p>Disabling plugins is a common process in troubleshooting a problem or turning off a functionality. A number of issues can arise from disabling WooCommerce Subscriptions, such as<span class="excerpt-hellip"> […]</span></p>
<p>The post <a href="https://help.codibu.com/blog/disabling-subscriptions/">Disabling Subscriptions</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Disabling plugins is a common process in troubleshooting a problem or turning off a functionality.</p>
<p>A number of issues can arise from disabling <a href="https://help.codibu.com/blog/kb/woocommerce-subscriptions/">WooCommerce Subscriptions</a>, such as for:</p>
<ul>
<li>Any dependent plugins</li>
<li>Renewal payments</li>
<li>Expiration upon the subscription’s end date</li>
<li>Cancellation after the end of the prepaid term is reached</li>
<li>Automatic retry of failed payments</li>
</ul>
<p>Additionally, simply disabling the plugin may not completely stop all the actions associated with it, such as renewal payments.</p>
<h2 id="section-1">Disabling Subscriptions Actions</h2>
<p>If choosing to disable Subscriptions, steps will need to be taken to completely stop all associated actions. Scheduled actions, such as renewal payments, are processed in Subscriptions by a job queue library called Action Scheduler.</p>
<p>If another plugin, such as WooCommerce Memberships, Follow-up Emails, or WooCommerce version 3.5 or greater, is active on the site, then they will also be loading a version of Action Scheduler to process their own scheduled actions. In this case, the scheduled events for Subscriptions will continue to be processed, even if Subscriptions is inactive.</p>
<p>To check if another plugin is loading Action Scheduler:</p>
<ol>
<li>Disable Subscriptions</li>
<li>Visit the admin screen at <code>https://example.com/wp-admin/tools.php?page=action-scheduler</code>, replacing <code>example.com</code> with your site’s URL
<p>&nbsp;</p>
<figure id="attachment_1298523" class="wp-caption aligncenter" aria-describedby="caption-attachment-1298523"><a href="https://help.codibu.com/wp-content/uploads/2020/11/scheduled_actions_page.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-10725" src="https://help.codibu.com/wp-content/uploads/2020/11/scheduled_actions_page.png" alt="" width="2048" height="963" /></a><br /><figcaption id="caption-attachment-1298523" class="wp-caption-text">Scheduled Actions Page</figcaption></figure>
</li>
<li>If the page loads, another plugin is using Action Scheduler</li>
</ol>
<p>If nothing else is loading Action Scheduler, the queue will remain but be inactive. This means that it will still be there and continue to run if Action Scheduler is activated, either by re-activating Subscriptions or another plugin that uses Action Scheduler.</p>
<p>If Action Scheduler is still active and you do not want to disable the other plugins, it is possible to stop Action Scheduler from running. In order to completely stop Action Scheduler from running, download, install, and activate the Action Scheduler Disable Default Runner plugin. This plugin will stop the Action Scheduler queue from running altogether.</p>
<p>This means that all actions for all plugins using Action Scheduler will stop. If you need to continue processing actions for other plugins, please open a support ticket.</p>
<h2 id="section-2">Disabling a Payment Gateway Plugin</h2>
<p>It is also possible to disable a specific payment gateway plugin. If a gateway plugin is disabled while Subscriptions is active, those subscriptions that use that gateway will be converted to use <a href="https://help.codibu.com/blog/kb/subscription-renewal-process/">manual renewals</a>. This means that the subscriptions can be paid for, but the customer will need to log in and pay for the subscription using a different gateway, rather than a payment being automatically processed.</p><p>The post <a href="https://help.codibu.com/blog/disabling-subscriptions/">Disabling Subscriptions</a> first appeared on <a href="https://help.codibu.com">CODIBU</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://help.codibu.com/blog/disabling-subscriptions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
