[**@wocart/storefront v3.1.0**](../../README)

***

[@wocart/storefront](../../README) / [index](../README) / CheckoutDraft

# Interface: CheckoutDraft

Mutable checkout intent before the server accepts an order.

Invariant: `mode: "single"` has exactly one line; `mode: "basket"` has
one or more lines. This is intentionally a domain contract, not a second
copy of merchant checkout-policy validation: the server remains the owner
of required fields, legal pages, prices, stock and delivery rules.

## Properties

### address?

> `readonly` `optional` **address?**: `string`

***

### attribution

> `readonly` **attribution**: [`CheckoutAttribution`](CheckoutAttribution)

***

### couponCode?

> `readonly` `optional` **couponCode?**: `string`

The code the shopper typed, if any; the server decides whether it applies.

***

### customerName

> `readonly` **customerName**: `string`

***

### customFieldResponses

> `readonly` **customFieldResponses**: readonly [`CheckoutFieldAnswer`](CheckoutFieldAnswer)[]

***

### delivery

> `readonly` **delivery**: `object`

#### address?

> `optional` **address?**: `string`

#### communeId

> **communeId**: `string`

#### deliveryType

> **deliveryType**: `"home"` \| `"stop_desk"`

#### wilayaId

> **wilayaId**: `number`

***

### email?

> `readonly` `optional` **email?**: `string`

***

### lines

> `readonly` **lines**: readonly `object`[]

***

### mode

> `readonly` **mode**: `"single"` \| `"basket"`

***

### notes?

> `readonly` `optional` **notes?**: `string`

***

### otpProof

> `readonly` **otpProof**: \{ `kind`: `"verified"`; `phone`: `string`; `token`: `string`; \} \| \{ `kind`: `"bypass"`; `phone`: `string`; `reason`: `string`; `token`: `string`; \}

***

### phone

> `readonly` **phone**: `string`
