# Sell outside the US

URL: /products/offers/sell-outside-the-us · Id: `guide:sell-outside-the-us`

> Say "sell in the UK" and the market opens: local tax duties wake, and your site, docs and messages speak its language.

The first order from abroad is the moment to open that [Market](/business/nouns/market). Entering it wakes the tax and filing duties it carries, such as VAT registration, and translates your [Site](/business/nouns/site) into its language.

Needs: [Open a bank account](/systems/finance/open-a-bank-account)

**Before real money moves**

- Who says yes: You. Your agent shows you the run and waits for your [Approval](/business/nouns/approval).
- You leave the chat: Never: it all happens in the chat.

## What you get
- 1 market open to buyers in the UK (Market)
- 1 site, docs and messages in the market’s language (Site)

## Your agent does
**For agents**

- Guide: `guide:sell-outside-the-us`, status `beta`. Page: [/products/offers/sell-outside-the-us.md](/products/offers/sell-outside-the-us.md).
- Approval: ask the founder first. Show the run, then wait for their Approval; a refusal ends it.
- Leaves the chat: never.
- Needs first: [Open a bank account](/systems/finance/open-a-bank-account).
- Run: call the steps in order, each through the API, SDK, CLI or MCP tab below; a later step passes the `$id` an earlier one returns. Each value marked example is the sample business’s: pass the founder’s own.

| Step | Verb | Inputs (type, required, this guide’s value) | Returns |
| --- | --- | --- | --- |
| 1 | [`Market.enter`](/business/nouns/market/enter) (`verb:Market.enter`) | `startup` Startup (an id), required: the `$id` of the first Startup `Startup.list` returns; `market` Market (an id), required: example `"market_uk"` | `market` Market |

Returns: the last call answers with `market` and its `action`, whose `status` is `done`, `pending` (waiting on an Approval or a Worker), `failed`, `canceled` or `refused`:

```json
{
  "api": "https://api.sb/leaseline.app",
  "market": {
    "$id": "https://api.sb/leaseline.app/markets/market_uk",
    "$type": "Market"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/action_1",
    "operation": "Market.enter",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/action_1"
  }
}
```

Next: offer “Show prices in pounds”, or “Add the EU as well”.

Calls: `Market.enter`

Ask:

```text
Sell in the UK.
A customer in Germany wants to buy.
Charge German customers in euros.
```

API:

```bash
# Look up the Startup: Startup.list
STARTUP=$(curl "https://api.sb/leaseline.app/startups?limit=1" \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" | jq -r '.startups[0]["$id"] | split("/") | last')

# Market.enter
curl -X POST https://api.sb/leaseline.app/markets/market_uk/enter \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"startup":"'"$STARTUP"'"}'
```

SDK:

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

const [startup] = await $.Startup.list({ limit: 1 })
await $.Market.enter({ startup: startup.$id, market: 'market_uk' })
```

CLI:

```bash
STARTUP=$(npx startup-builder do Startup.list --json '{"limit":1}' | jq -r '.startups[0]["$id"] | split("/") | last')
npx startup-builder do Market.enter --json '{"startup":"'"$STARTUP"'","market":"market_uk"}'
```

MCP:

```json
{
  "name": "do",
  "arguments": {
    "code": "const [startup] = await $.Startup.list({ limit: 1 })\nreturn await $.Market.enter({ startup: startup.$id, market: 'market_uk' })"
  }
}
```

## Change it
- Show prices in pounds.
- Add the EU as well.

## Under the hood
- Systems: 
- Nouns: [Market](/business/nouns/market)
- Events: [`Market.entered`](/business/events/Market.entered)