# Quote methods: accept, decline, expire

URL: /code/sdk/quote/verbs · Id: `page:code/sdk/quote/verbs`

> The Quote Verbs accept, decline, expire as typed SDK methods, with inputs, result, refusals and an example.

Reference for [Quote](/business/nouns/quote), one group of [Quote methods](/code/sdk/quote).

### Quote.accept
Accept takes a sent Quote before it expires, turning one-time lines into an Order and recurring lines into a Subscription. [Verb page](/business/nouns/quote/accept?interface=sdk).

```ts
interface QuoteVerbs {
  accept(input: QuoteAcceptInput, options?: SB.CallOptions): SB.Call<QuoteAcceptOutput>
}
```

Emits [`Quote.accepted`](/business/events/Quote.accepted).

**Inputs**

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `quote` | [Quote](/business/nouns/quote) | Yes | The sent Quote. |
| `party` | [Party](/business/nouns/party) | Yes | The Contact or Organization accepting, who becomes the Customer. |

**Returns**

| Output | Type | Required | Description |
| --- | --- | --- | --- |
| `order` | [Order](/business/nouns/order) | No | The Order for the one-time lines, when the Quote has any. |
| `subscription` | [Subscription](/business/nouns/subscription) | No | The Subscription for the recurring lines, at each line’s quantity and term. |
| `quote` | [Quote](/business/nouns/quote) | Yes | The Quote, now accepted. |

**Refuses when**

| Check | Error | Fix | Then call |
| --- | --- | --- | --- |
| The key is valid, but its scopes do not allow this operation. | [`forbidden`](/code/api/errors/forbidden) | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |

**Example**

```ts
import { $ } from 'startup-builder'

const { order, subscription, quote } = await $.Quote.accept({ quote: 'qt_GZnH5OK100', party: 'party_hmQWaPrAyZ' })
```

### Quote.decline
Decline records the buyer’s refusal of a sent Quote, with the reason in their words. [Verb page](/business/nouns/quote/decline?interface=sdk).

```ts
interface QuoteVerbs {
  decline(input: QuoteDeclineInput, options?: SB.CallOptions): SB.Call<Quote>
}
```

Emits [`Quote.declined`](/business/events/Quote.declined).

**Inputs**

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `quote` | [Quote](/business/nouns/quote) | Yes | The sent Quote. |
| `reason` | `text` | No | Why the buyer declined, kept verbatim. |

**Returns**

| Output | Type | Required | Description |
| --- | --- | --- | --- |
| `quote` | [Quote](/business/nouns/quote) | Yes | The declined Quote. |

**Refuses when**

| Check | Error | Fix | Then call |
| --- | --- | --- | --- |
| The key is valid, but its scopes do not allow this operation. | [`forbidden`](/code/api/errors/forbidden) | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |

**Example**

```ts
import { $ } from 'startup-builder'

const quote = await $.Quote.decline({ quote: 'qt_GZnH5OK100' })
```

### Quote.expire
Expire closes a sent Quote that reached its validUntil date unaccepted; it never converts afterward. [Verb page](/business/nouns/quote/expire?interface=sdk).

```ts
interface QuoteVerbs {
  expire(input: QuoteExpireInput, options?: SB.CallOptions): SB.Call<Quote>
}
```

Emits [`Quote.expired`](/business/events/Quote.expired).

**Inputs**

| Input | Type | Required | Description |
| --- | --- | --- | --- |
| `quote` | [Quote](/business/nouns/quote) | Yes | The Quote past its date. |

**Returns**

| Output | Type | Required | Description |
| --- | --- | --- | --- |
| `quote` | [Quote](/business/nouns/quote) | Yes | The expired Quote. |

**Refuses when**

| Check | Error | Fix | Then call |
| --- | --- | --- | --- |
| The key is valid, but its scopes do not allow this operation. | [`forbidden`](/code/api/errors/forbidden) | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |

**Example**

```ts
import { $ } from 'startup-builder'

const quote = await $.Quote.expire({ quote: 'qt_GZnH5OK100' })
```