Troubleshooting guide

Zen Cart Checkout Not Working — Diagnosis Guide

📅 Updated May 2025
⏱ 11 min read
🛒 Zen Cart 1.5.x – 2.1.x
Start here — what symptom are you seeing?

Checkout failures have different causes depending on exactly where things break. Use the symptom cards below to jump to the right fix, rather than working through everything sequentially.

🛒
Stuck at the cart
Customers can add items but can't proceed to checkout
Jump to fix →
Session keeps expiring
Cart empties itself or customers get logged out mid-checkout
Jump to fix →
📧
No confirmation email
Orders complete but no email arrives for customer or admin
Jump to fix →
📋
Order not recorded
Payment taken but no order appears in Zen Cart admin
Jump to fix →
📍
Address / shipping step fails
Error on the address or shipping selection step
Jump to fix →
💳
Payment step error
Error or blank page when reaching the payment screen
Jump to fix →
All sections
  1. Customers stuck at the cart / can't proceed to checkout
  2. Session expiry — cart empties or customer gets logged out
  3. Confirmation emails not sending
  4. Payment taken but order not recorded in admin
  5. Address or shipping step fails
  6. Payment step error or blank page
  7. Enabling Zen Cart checkout debug logging

1. Customers stuck at the cart / can't proceed to checkout

If clicking "Proceed to Checkout" does nothing, redirects back to the cart, or throws an error, the most common causes are:

SSL not properly configured

Zen Cart routes customers from the cart (HTTP) to checkout (HTTPS) by default. If your SSL isn't configured correctly in configure.php, this transition fails. Check that both HTTP_SERVER and HTTPS_SERVER in /includes/configure.php are set to https://. See our SSL guide for full instructions.

A shipping module is broken or misconfigured

Zen Cart won't proceed to checkout if it can't calculate shipping. If your only shipping module has a configuration error (invalid API key, wrong rates table format, etc.), the checkout button appears to do nothing.

No payment module is enabled

Zen Cart requires at least one payment module to be active. Go to admin → Modules → Payment and verify a module is installed and set to status "True".

2. Session expiry — cart empties or customer gets logged out

If customers find their cart empty when they return, or get logged out during checkout, this is a PHP session handling problem.

PHP session directory not writable

Zen Cart stores session data in a directory on your server. If PHP can't write to that directory, sessions fail silently.

Check your PHP session save path:

<?php
echo session_save_path();
?>

Then verify that directory is writable by your web server user (typically www-data or nobody). Contact your host if you can't change directory permissions.

Session cookie domain mismatch

If your store is accessible on both www.yourstore.com and yourstore.com, sessions set on one domain may not be sent on the other. Ensure your configure.php HTTP_SERVER and HTTPS_SERVER consistently use one version (always www, or never www), and add a redirect so only one version is active.

Very short session timeout on shared hosting

Some shared hosts set extremely short PHP session timeouts (as low as 5 minutes). Add this to your .htaccess to increase it:

php_value session.gc_maxlifetime 3600
php_value session.cookie_lifetime 3600

3. Confirmation emails not sending

If orders complete successfully but no email arrives for the customer or admin, the issue is almost always in Zen Cart's email configuration.

Check Zen Cart email settings

Send a test email

Admin → Tools → Send Email → send a test to yourself. If this works but order emails don't, the problem is specific to the order completion trigger rather than email sending generally.

Check the store email address

Admin → Configuration → My Store → Store Owner Email Address. This must be a real, deliverable email address. An invalid address here can cause all outbound mail to fail.

Note

If you're on shared hosting, consider using a transactional email service (SendGrid, Mailgun, Postmark) and the Zen Cart SMTP settings to point to it. Shared host mail servers are frequently blacklisted and email often ends up in spam.

4. Payment taken but order not recorded in admin

This is one of the most urgent checkout failures — customers are charged but you have no record of their order. Almost always caused by a broken IPN or payment notification callback.

In all cases: log into your payment processor and check whether payments are completing there. If they are, the problem is the callback from the processor back to your store — not the payment itself.

⚠ Urgent

If customers are being charged but orders aren't recording, stop taking new orders until this is fixed. Contact each affected customer directly using the payment processor's records, and fulfil their orders manually while you diagnose the issue.

5. Address or shipping step fails

If the checkout fails specifically on the address entry or shipping selection step:

6. Payment step error or blank page

If the store reaches the payment step but then shows an error or blank page:

Enabling Zen Cart checkout debug logging

Zen Cart can log detailed information about checkout failures. To enable it, add this to /includes/configure.php:

define('DEBUG_AUTOLOAD', true);

Logs will appear in /logs/. Look for files named myDEBUG-*.log and open the most recent one around the time of a failed checkout. The log will show exactly which function failed and why.

Remove this line from configure.php once you've collected the information you need — debug logging can expose sensitive data.

Checkout still broken?

Send us your debug log and a description of what happens — we'll diagnose it and give you a fix, free.

Get a free diagnosis