I believe the order object holds the currency and all contained line items must have the same currency.

Here's a line from the current_order helper method:

    Spree::Order.includes(:adjustments).find_by(id: session[:order_id], currency: current_currency)