figma guide

Designing saved addresses and address book UI in Figma: checkout, defaults, and handoff

Design address book, saved shipping addresses, and checkout address pickers in Figma with default badges, validation states, and Dev Mode specs for ecommerce delivery flows.

Published
Updated
Jun 21, 2026
Read time
8 min
Level
Beginner

Quick answer

Address UI spans checkout pickers (select saved vs add new), full address forms with validation, and an account address book with default shipping/billing badges. Build AddressCard (selectable radio variant), AddressForm with country-aware fields, and AddressBookList for account management. Model default address logic, billing-same-as-shipping toggle, address verification warnings, and international field visibility per country. Pair with checkout, forms, and modals. Start from the Figma guides hub.


Who this is for

  • Product designers shipping DTC checkout, marketplace delivery, and B2B ordering with multiple ship-to locations.
  • Design system teams standardizing address display across checkout, account settings, and order history.
  • Engineers implementing address APIs, geocoding autocomplete, carrier validation, and default-address persistence.

Address surfaces

SurfaceGoalKey components
Checkout shipping pickerChoose delivery addressAddressCard radio list + Add new
Checkout billing pickerPayment addressSame AddressCard; billing label
Inline address formNew / edit addressAddressForm
Account address bookCRUD + defaultsAddressBookList, AddressBookCard
Order detailRead-only ship-toAddressSummary compact
Modal add addressQuick add from checkoutAddressForm in modal

Verdict: one AddressCard and one AddressForm reused everywhere—checkout picker, account book, and order detail summary should share the same field order and line-break rules.


AddressCard anatomy

PartPurposeSpec tip
Radio / checkboxSelection in checkoutRadio for single-select shipping
Name lineRecipient”Jane Doe”
Street linesAddress body1–2 lines; no truncation in picker
City/state/ZIPLocalized formatUS: “City, ST 12345”
CountryInternationalShow when ≠ store default
PhoneDelivery contactOptional line
Default badgeSaved defaultBadge “Default shipping”
Edit linkAccount contextHidden during checkout radio list optional
AddressCard
├── Variant: context=checkout | account | readonly
├── Variant: state=default | selected | unselected | disabled
├── Property: addressType (shipping | billing)
├── Property: isDefault (boolean)
└── Layers:
    ├── SelectIndicator (radio)
    ├── AddressBlock (name + lines)
    ├── DefaultBadge (optional)
    └── ActionRow (Edit | Delete)

Disabled state when address fails carrier validation—show inline alert on card: “We can’t ship to this address.”


Checkout address picker

PatternWhen to useUX note
Saved list + Add newReturning users with ≥1 addressDefault pre-selected
Form onlyGuest checkoutNo picker—full AddressForm
Collapsed summarySingle saved address”Ship to Jane Doe, 123 Main…” + Change link
Map previewHigh-trust deliveryStatic map placeholder

Flow for returning users:

  1. Show saved AddressCard list with default pre-selected.
  2. Add new address opens inline form or modal—not a separate route mid-checkout.
  3. On save, new address auto-selects and returns to picker.
  4. Continue validates selection before payment step.

Use progress stepper on checkout—address is typically step 2 after cart.


AddressForm fields

FieldRequiredValidation UI
Full nameYesMin length
CountryYesDrives field visibility
Address line 1YesAutocomplete dropdown
Address line 2Optional”Apt, suite, unit”
CityYes
State / provinceCountry-dependentDropdown or text
Postal codeYesFormat per country
PhoneOften requiredE.164 note in Dev Mode
AddressForm
├── Variant: mode=create | edit
├── Property: country (string)
├── Property: showCompany (boolean)
└── Layers:
    ├── FieldGrid (responsive 1–2 col)
    ├── AutocompleteDropdown
    ├── ValidationMessages
    └── SaveButton + CancelLink

Apply form input states on every field. Show field-level errors on blur; block submit until resolved.


Autocomplete and verification

StateTriggerUI
TypingUser enters streetSuggestion dropdown below line 1
Suggestion selectedPick from listAuto-fill city/state/ZIP
Manual entryUser skips suggestions”Enter address manually” link
AmbiguousProvider warningAmber alert: “Confirm apartment number”
UndeliverableCarrier rejectRed alert on save
VerifiedSuccessOptional green check on card

Prototype autocomplete with 3 static suggestions—note “Powered by Google / Smarty” in Dev Mode for licensing. Do not design custom autocomplete styling that fights provider dropdown z-index.


Billing same as shipping

ControlPlacementStates
BillingSameAsShippingToggleBelow shipping pickerOn (default) / Off
Billing pickerWhen toggle offSame AddressCard list
Billing formWhen off + no savedAddressForm with billing label
BillingSameAsShippingToggle
├── Variant: state=on | off
└── Layers:
    ├── Checkbox or Switch
    └── Label ("Billing address same as shipping")

When toggle turns off, scroll billing section into view—users often miss it below the fold. On mobile, consider accordion expand animation.


Account address book

ElementPurposeSpec
AddressBookCardSaved address tileEdit + Delete actions
Default shippingOne per userBadge + “Set as default” link
Default billingIndependentSeparate badge
Empty stateNo addressesEmpty state + Add CTA
Delete confirmPrevent accidentsModal if default
AddressBookCard
├── Variant: layout=list | grid
├── Property: isDefaultShipping (boolean)
├── Property: isDefaultBilling (boolean)
└── Layers:
    ├── AddressBlock
    ├── BadgeRow
    └── ActionMenu (Edit | Set default | Delete)

Place address book under Account → Addresses in sidebar nav. Limit list with pagination if B2B accounts exceed ~10 addresses.


International field rules

Country patternShow state?Postal formatNotes
USYes (dropdown)ZIP 5 or 9State required
CanadaYes (province)A1A 1A1Bilingual labels optional
UKNo county requiredPostcodeSingle line city
EU mixedVariesVariesCountry picker first

Document per-country visibility in a field matrix table on the Figma page—engineers map to config, not screenshots alone.

Hide irrelevant fields rather than showing disabled inputs—cleaner mobile forms and fewer validation errors.


Order detail AddressSummary

Read-only compact block on order history detail:

LineContent
Label”Shipped to” or “Delivery address”
BodySame line order as AddressCard
Map linkOptional “View on map” external

Do not redesign address formatting on order detail—support teams compare screen to packing slip.


Responsive behavior

BreakpointCheckout pickerAddress form
MobileFull-width cards; sticky ContinueSingle column all fields
Tablet2-column card grid in account2-column city/state
DesktopList left, map preview right optional2-column field grid

On mobile checkout, cap visible saved addresses at 3 with Show all addresses expand—long lists push payment below fold.


Handoff checklist

ItemDev Mode annotation
Default address APISingle default per type
Guest vs logged-inSave address checkbox on guest form
Autocomplete providerGoogle / Mapbox / Smarty
Field visibility configPer-country JSON
Phone formatRequired for carrier SMS
PO box restrictionsError copy for carriers that block
Military / APPO addressesSeparate validation rules
Delete default addressPromote another or force pick
Analyticsselect_address, add_address, edit_address
AccessibilityRadio group label; field autocomplete attrs

Use Dev Mode checklist and link AddressForm field names to backend schema.


Common mistakes

MistakeWhy it hurtsFix
Different address layout per screenSupport confusionOne AddressBlock component
State field for all countriesInvalid submissionsCountry-first field rules
No default badgeWrong repeat shipmentsDefault shipping + billing badges
Edit opens new page mid-checkoutAbandonmentModal or inline expand
Truncated street in pickerWrong address selected2-line street minimum
Billing hidden without toggleCard AVS failuresExplicit billing section

  1. Define country support list and required fields per region with PM/ops.
  2. Build AddressForm with country-driven visibility variants.
  3. Create AddressCard for checkout radio picker and account book.
  4. Add checkout flow saved list + Add new + billing toggle.
  5. Design account address book with default badges and delete confirm.
  6. Add AddressSummary to order detail read-only.
  7. Prototype autocomplete, validation errors, and billing toggle off.
  8. Spec carrier undeliverable and PO box error copy with ops.

FAQ

Address book vs checkout-only save?

Both—guest checkout offers “Save for next time” after account creation; logged-in users manage full book in account.

Company / B2B address fields?

Add optional Company name and Department on AddressForm with showCompany=true variant—common for B2B checkout.

Pickup point / locker delivery?

Separate DeliveryMethodCard before address picker—when pickup selected, hide AddressForm and show location search UI.

Address used on active subscription?

Block delete with modal: “This address is used for your subscription—update subscription first.”


Next steps

Share on X

§ Keep reading

Related guides.