On WooCommerce 3.0 and later, never read order fields as direct object properties. Use the getter methods like get_billing_first_name(), and get_data() or get_meta() when you need the full payload or custom meta. Code copied from pre-3.0 tutorials will break on current installs.

Context: Stack Overflow #39401393 (accepted answer, 413 votes): the asker built a WC_Order from an order id and tried to read order details directly off the object. The accepted answer (413 votes) documents the WooCommerce 3.0 breaking change: order properties can no longer be accessed directly and will throw errors. All data now goes through getter and setter methods on WC_Order and the new WC_Order_Item classes, with get_data(), get_meta_data(), and get_meta() from the WC_Data base class for bulk and meta access.