After uncommenting some debug lines, I found that interchange is actually processing the order twice. Vend::Order:debug: Vend::order do_order: path= Vend::Order:debug: Vend::order do_order: path= The question is why and where?