I have a strange problem with my Magento 1.6.2 shop. We have several payment options in use. The usual SagePay and PayPal options are working fine, and exactly as expected. The Cheque and Bank Transfer payment options are not, and it is causing disruption to the workflow.

When an order in placed online, it has a status of "Processing". All orders with a status of "Processing" are downloaded via our 3rd party software and entered into Sage200.

Once they are dealt with at our premises, the order is marked as "Shipped" and the order status becomes "Complete" in Magento. Normally...

What seems to be happening with Cheque and Bank Transfer paid orders, is they are marked as Shipped as normal, but they go back to "Processing" Status, which means they are then downloaded to our Sage200 system again!!

Does anyone know why this might be happening please?


The workflow in Magento normally is:

Order placed -> Order Invoiced -> Order Shipped -> Order Completed

When an order goes back to processing after it has been shipped happens only if there is no invoice created for that order (or the status of the invoice isn't Paid). The best way is to change the status for the Cheque and Bank transfer payment options to for example Pending Payment, this way the orders are not shipped before the payment has been received. When you create the invoice (when you received the payment) the order goes into processing and will continue to complete when you ship the items.

  • I do believe this is exactly the solution to my problem - thanks very much! :-) – robgt Apr 25 '13 at 8:14
  • I want to add one more flow between order shipped and order complete for order delivered and shoot the email template accordigly. – 55840 Feb 8 at 14:14

First off - it sounds like it's doing more than just changing status; it's changing state, too.

When an order is in completed state, it cannot be moved to another status because, by default, there are no other statuses associated with the completed state. So something is forcefully changing state as well.

So, my guess here is that whatever payment method plugin you're using for Bank Transfer is receiving an update from the payment provider. eChecks, transfers can take many days to process, and perhaps the orders are only clearing some days later, causing them to slip back into Processing.

The recommended behavior here is to set your payment module to default orders of this nature to be input with a Pending status - awaiting bank clearance. After the check is cleared, the order is moved to Processing once and for all, and gets export to Sage200.

There are some methods of debugging this:

  • Create a simple module to Mage::log when order statuses changes to a file for later review
  • Do an audit of the order status comment history - all status changes are listed here and may include the time at which they changed - see if there's a correlation. For instance: "all orders of this type change back to Processing after at least X days"
  • Contact your payment provider to discuss how long bank transfers/echecks take to clear and what other ecommerce sites do to handle this issue
  • Thanks for the post. Our Bank transfer (and Cheque) payment options are manually administered, there are no automated checks in place for this to know if payment has been made, so I believe Vladimirs answer resolves the issue for me. Your efforts are appreciated though! Thanks :-) – robgt Apr 25 '13 at 8:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.