> Shopify Plus: > Only stores on the [Shopify Plus](https://www.shopify.com/plus) plan can use apps with B2B features. Merchants often need to create draft orders for company approval when selling business-to-business (B2B). After [creating a company](/docs/apps/build/b2b/start-building), you can use the GraphQL Admin API to [create draft orders](/docs/api/admin-graphql/latest/mutations/draftOrderCreate) for a purchasing entity. A purchasing entity is a combination of the company, company contact, and company location. ## What you'll learn In this tutorial, you'll learn how to do the following tasks: - [Calculate a draft order for a purchasing entity](#step-1-calculate-a-draft-order-for-a-purchasing-entity) - [Create a draft order for a purchasing entity](#step-2-create-a-draft-order-for-a-purchasing-entity) - [Send an invoice for a draft order](#step-3-send-an-invoice-for-a-draft-order) - [Mark a draft order as complete](#step-4-mark-a-draft-order-as-complete) ## Requirements - Your app has the `write_products` [access scope](/docs/api/usage/access-scopes). Learn how to [configure your access scopes using Shopify CLI](/docs/apps/build/cli-for-apps/app-configuration). - You've added [products](/docs/api/admin-graphql/latest/objects/product) to your development store. - You've [created a company](/docs/apps/build/b2b/start-building). ## Step 1: Calculate a draft order for a purchasing entity Before creating a draft order for a purchasing entity, you can preview information such as total taxes and prices using the [`draftOrderCalculate`](/docs/api/admin-graphql/latest/mutations/draftOrderCalculate) mutation:

## Step 2: Create a draft order for a purchasing entity When you're satisfied with the calculated draft order, you can create the draft order by passing the same input from your [calculated draft order](#step-1-calculate-a-draft-order-for-a-purchasing-entity) to the [`draftOrderCreate`](/docs/api/admin-graphql/latest/mutations/draftordercreate) mutation:

## Step 3: Send an invoice for a draft order Sending an invoice for a B2B draft order is identical to sending an invoice for a consumer draft order. After creating a draft order, you can pass the draft order ID to the [`draftOrderInvoiceSend`](/docs/api/admin-graphql/latest/mutations/draftOrderInvoiceSend) mutation to send the invoice to the company contact:

## Step 4: Mark a draft order as complete Marking a B2B draft order as complete is identical to marking a consumer draft order as complete. After creating a draft order, you can pass the draft order ID to the [`draftOrderComplete`](/docs/api/admin-graphql/latest/mutations/draftOrderComplete) mutation to mark the draft order as complete and create a corresponding order:

## Next steps - Learn how to [create a B2B checkout UI](/docs/apps/build/b2b/create-checkout-ui) with the GraphQL Admin API.