This guide describes how to integrate Affirm into the WooCommerce eCommerce so you can provide Affirm as a payment option to your customers. After integrating Affirm, your WooCommerce site will:
- Offer Affirm as payment option on the checkout page
- Process Affirm charges in your order management system
- Display Affirm promotional messaging)
Before you begin
Before beginning integration, you should review:
- Affirm transaction flow
- Your current checkout process to understand how Affirm will affect operations and customer experience
- Settlement reports to know how to reconcile transactions with the deposits into your bank account
You should have received an email inviting you to create an Affirm account. Click here for information about accessing your account.
Develop and test the Affirm integration in your development environment connected to our sandbox. To use our sandbox, retrieve your sandbox API keys at https://sandbox.affirm.com/dashboard/#/apikeys for use during integration.
After development and testing, you'll need to update your integration to use your live API keys, which you can find at https://affirm.com/dashboard/#/apikeys.
1. Download the extension here
2. Visit WooCommerce for instructions on how to install and configure Affirm
When configuring Affirm, ensure that Affirm Sandbox is checked for development and testing. Return here to complete the integration.
Processing orders (authorize, void, refund, and partial refund) in WooCommerce updates the order status in the Affirm dashboard. While you can process orders in the dashboard, we strongly recommend using WooCommerce to keep order status synced with Affirm. For more information on processing orders in WooCommerce, refer to their documentation.
After completing your integration, do a thorough testing of both your front-end and order management functions in our sandbox to ensure that everything works as expected. Click here for our recommended test plan. However, you'll need to tailor your testing plan to your specific systems, processes, and integration.
Coordinate testing with Affirm
Before deploying the Affirm integration to your production site, Affirm will need to test it in your development or staging environment connected to our live environment. Contact your Integration Consultant or firstname.lastname@example.org to coordinate this test.
Connect to the live Affirm environment
1. Retrieve your live API keys at https://affirm.com/dashboard/#/apikeys
2. Enter the Public API Key and Private API Key you just retrieved from the Affirm merchant dashboard
3. Uncheck the Affirm Sandbox box
Launch to production
After you've connected to our live environment and we've tested your integration, you're ready to deploy to your production environment and offer Affirm as a payment option to your customers.
1. How do I enable Modal Checkout flow instead of redirecting the customer to Affirm?
The Modal Checkout configuration option is available in the latest version of Affirm WooCommerce plugin. Please refer Checkout Mode settings for as per documentation.
Why am I seeing Affirm canceled orders in *WooCommerce > Orders?
WooCommerce creates orders when a customer goes to the Affirm checkout application. If the customer abandons the Affirm checkout at any point or is denied a loan, then WooCommerce automatically moves the associated orders to a Canceled status. If the customer completes the Affirm application and confirms their loan, they go to the order confirmation page, and the associated orders move to a Pending payment or Processing status depending on the Transaction Mode setting in WooCommerce > Settings > Checkout > Affirm.
2. Why is my site crashing as soon as I activate the Affirm plugin?
This may happen due to various reasons, such as PHP code syntax, compatibility, or memory limit exhaustion issues. To troubleshoot the issue:
Enable error debug log (on your test site)
1. Open the wp-config.php file of your WordPress install
2. Search for define('WP_DEBUG', false);
3. Change false to true
4. Save the file
5. Refresh your website to see the message causing the error
6. Make the necessary changes by modifying the code per the error message (refer to the file name and line number in the error message)
7. To write these logs to a log file, add define( 'WP_DEBUG_LOG', true ); in the wp-config.php file (all the debug logs will then be written to /wp-content/debug.log)
Check file and folder permissions for complete installation
1. Verify files are 664 or 644
2. Verify folders are 775 or 755
3. Verify wp-config.php is 660, 600, or 644
Check memory limits
If you still see an empty page or get an error about either memory limits or exhausted memory, you'll need to allocate more memory for the application.
To deactivate the Affirm plugin to revert your site back to the previous state:
- If you can access your login to WordPress (yoursite.com/wp-admin), go to the plugins and deactivate the Affirm plugin
- If you can't access your login to WordPress, access your website via FTP and go to /wp-content/themes/ and rename the Affirm plugin folder to Affirm_something (This deactivates the Affirm plugin and allows you to access both admin and frontend)
3. Where can I find Affirm related logs?
API logs related to Affirm are located at Wordpress Admin > WooCommerce > Status > Logs > woocommerce-gateway-affirm...
4. How can I update Affirm plugin to the latest version?
5. Why can't I get promotional messaging to display on the product pages?
This issue usually occurs if you are using or extending custom product templates. To fix this issue, you would need to manually add some code to the WooCommerce files:
1. Go to Wordpress Admin > Appearance > Editor and select YourSiteTheme/woocommerce/single-product/price.php
2. If this file does not exist, copy it from this path MAIN_DIR/wp-content/plugins/woocommerce/templates/single-product/price.php. Add this file, price.php, under YourSiteTheme/woocommerce/single-product/ directory
YourSiteTheme/woocommerce/single-product/price.php, and add the following code right below the paragraph tag with the
<?php $price = $product->get_price() ? $product->get_price() : 0; ?> <p id="learn-more" class="affirm-as-low-as" data-page-type="product" data-amount="<?php echo floatval( $price * 100 ) ?>"> </p>
4. Save the changes
Updated about 23 hours ago