---
title: "Create address"
method: POST
path: "/user/addresses"
tags: ["user-addresses"]
---

# Create address

`POST /user/addresses`

Create and persist a shipping or billing address for the authenticated user.

Use this endpoint when the user confirms a new address in checkout or account settings.

Common ways to call this endpoint:

1. Assisted flow: find address -> retrieve details -> create saved address.
2. Manual flow: user enters address fields directly, then create.

Request guidance:

- type must be shipping or billing.
- country should be an ISO 3166-1 alpha-2 country code (for example, GB).
- Set loqateId and isValidated when the address came from the lookup endpoints.
- Set isPrimary to true when this should become the default address for that type.

Behavior notes:

- Returns 201 with the newly saved address record.
- A user can store up to 10 addresses in total; additional creates return 400.
- If isPrimary is true, existing primary addresses of the same type are replaced.
- After creation, call GET /user/addresses to refresh the full address list in UI.

## Request body

- object
  - `label` string, nullable — A recognisable label for the address, e.g. "Home", "Work"
  - `type` 'shipping' | 'billing', required — Type of address, 'shipping' or 'billing'
  - `line1` string, required — First line of the formatted address
  - `line2` string, nullable — Second line of the formatted address
  - `city` string, required — City or town
  - `state` string, required — State or province name
  - `postalCode` string, required — Postal or ZIP code
  - `country` string, required — ISO 3166-1 alpha-2 country code
  - `loqateId` string, nullable — The LoqateID of the address, if applicable
  - `isValidated` boolean, nullable — Whether the address has been validated using Loqate
  - `isPrimary` boolean, nullable — Whether the address is the primary address for this type

## Response `201`

Address created

- Address — Information representing a user's address. A user address can be either a shipping or billing address.
  - `label` string, nullable — A recognisable label for the address, e.g. "Home", "Work"
  - `type` 'shipping' | 'billing', required — Type of address, 'shipping' or 'billing'
  - `line1` string, required — First line of the formatted address
  - `line2` string, nullable — Second line of the formatted address
  - `city` string, required — City or town
  - `state` string, required — State or province name
  - `postalCode` string, required — Postal or ZIP code
  - `country` string, required — ISO 3166-1 alpha-2 country code
  - `loqateId` string, nullable — The LoqateID of the address, if applicable
  - `isValidated` boolean, nullable — Whether the address has been validated using Loqate
  - `isPrimary` boolean, nullable — Whether the address is the primary address for this type
  - `id` string, required — Unique identifier for the address
  - `createdAt` string, nullable — Timestamp when the address was created
  - `updatedAt` string, nullable — Timestamp when the address was last updated

## Other responses

- `400` — Bad request

---

[API](https://skmtc.net/managem/apis/managem-api.md) · [All operations](https://skmtc.net/managem/apis/managem-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/managem/managem-api/versions/5ed45d6a9e2f/schema)
