HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In
GitHubNuGetDev CommunityDoc feedback


You should avoid casting back and forth between concrete Order classes such as OrderGroup and OrderForm, and abstraction interfaces such as IOrderGroup and IOrderForm. For example, it is recommended to use only one API from the time you load a cart or purchase order until you save it. While this is not always possible, doing it whenever possible helps avoid hidden problems when casting.

## Order objects

The object model for the Optimizely Commerce order system is below.  For more information, see [Order manipulation](🔗).

### Commerce 13



### Commerce 12



### Commerce 10 and 11



## Order manipulation

The diagram below represents how to create, edit, and delete orders. For more information, see [Order manipulation](🔗).



## Order processing

The diagram below represents how to process different actions for orders. For more information, see [Order processing](🔗).



## Order calculations

The diagram below represents how to work with calculating totals for orders. See [Calculating orders](🔗).