{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-developer-resources/ingrid-api/guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["json-schema"]},"type":"markdown"},"seo":{"title":"Working with addresses","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":["openapi"],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"working-with-addresses","__idx":0},"children":["Working with addresses"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Addresses are the starting point for every delivery integration. Before Ingrid"," ","can return delivery options, it needs to know where the customer is. This guide"," ","explains the address model, the server-driven form system, and how the address"," ","endpoints fit into your checkout."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-address-model","__idx":1},"children":["The address model"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Ingrid API uses two address models: a base ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Address"]}," for physical locations"," ","and a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DeliveryAddress"]}," that extends it with delivery-specific fields."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"address","__idx":2},"children":["Address"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The base model for any physical location — warehouses, pickup points, or"," ","anywhere you need to represent a place."]},{"$$mdtype":"Tag","name":"JsonSchema","attributes":{"schema":{"$ref":"../@latest/openapi.yaml#/components/schemas/Address"},"options":{},"schemaResolved":{"openapi":"3.1.0","components":{"schemas":{"__root":{"$ref":"#/components/schemas/Address"},"AddressType":{"type":"string","enum":["unknown","residential","commercial"]},"Address":{"type":"object","required":["countryCode","postalCode"],"properties":{"countryCode":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","examples":["SE"]},"postalCode":{"type":"string","description":"Postal code.\nFormatting and validation rules are conditional and based on the country code.","examples":["12345"]},"administrativeArea":{"type":"string","description":"Required for countries:\n##### North America\n*   **US** (United States) - *State*\n*   **CA** (Canada) - *Province/Territory*\n*   **MX** (Mexico) - *State (Estado)*\n\n##### South America\n*   **BR** (Brazil) - *State (Estado)* \n*   **AR** (Argentina) - *Province*\n\n##### Asia Pacific\n*   **AU** (Australia) - *State/Territory*\n*   **CN** (China) - *Province*\n*   **JP** (Japan) - *Prefecture* \n*   **MY** (Malaysia) - *State*\n*   **KR** (South Korea) - *Province/City-Province*\n*   **ID** (Indonesia) - *Province*\n*   **TH** (Thailand) - *Province (Changwat)*\n\n##### Europe\n*   **IT** (Italy) - *Province* (2-letter abbreviation like MI, RM)\n*   **ES** (Spain) - *Province* \n*   **IE** (Ireland) - *County*"},"subAdministrativeArea":{"type":"string","description":"Usually the District, Suburb, or Neighborhood.\nTypically not required unless explicitly specified in our documentation."},"locality":{"type":"string","description":"The primary locality of the address.\nUsually the City, Town, Village, or Municipality.","examples":["San Francisco","Stockholm"]},"subLocality":{"type":"string","description":"The neighborhood, suburb, or district within the locality.\nTypically not required unless explicitly specified in our documentation.\n\nCritical for:\n- Japan (chome/district names)\n- UK (London districts like \"Soho\" or \"Brixton\")\n- Latin America (colonia)"},"addressLines":{"type":"array","items":{"type":"string"},"description":"An ordered array of street address lines.\nIndex 0: Primary street info (Street name + Number, or Block number).\nIndex 1+: Secondary info (Apartment, Suite, Floor, Building Name).","examples":[["Gatan 1","1602"],["123 Market Street","Floor 2, Apt 4B"],["Sveavägen 1"]]},"type":{"$ref":"#/components/schemas/AddressType"}},"description":"Represents a physical location in a global context.\nDesigned to be generic enough for international addressing standards\n\nValidation is conditional and based on the country code."}}}},"schemaResolvedErrors":[]},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["countryCode"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["postalCode"]}," are always required. Other fields are"," ","conditionally required depending on the country — see the"," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer-resources/ingrid-api/guides/country-reference"},"children":["country reference"]}," for details."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"deliveryaddress","__idx":3},"children":["DeliveryAddress"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Extends ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Address"]}," with fields specific to delivering a package to a person."," ","Used for the customer's destination in delivery options and order creation."]},{"$$mdtype":"Tag","name":"JsonSchema","attributes":{"schema":{"$ref":"../@latest/openapi.yaml#/components/schemas/DeliveryAddress"},"options":{},"schemaResolved":{"openapi":"3.1.0","components":{"schemas":{"__root":{"$ref":"#/components/schemas/DeliveryAddress"},"AddressType":{"type":"string","enum":["unknown","residential","commercial"]},"DeliveryAddress":{"type":"object","required":["countryCode","postalCode"],"properties":{"countryCode":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166-1 alpha-2 country code.","examples":["SE"]},"postalCode":{"type":"string","description":"Postal code.\nFormatting and validation rules are conditional and based on the country code.","examples":["12345"]},"administrativeArea":{"type":"string","description":"Required for countries:\n##### North America\n*   **US** (United States) - *State*\n*   **CA** (Canada) - *Province/Territory*\n*   **MX** (Mexico) - *State (Estado)*\n\n##### South America\n*   **BR** (Brazil) - *State (Estado)* \n*   **AR** (Argentina) - *Province*\n\n##### Asia Pacific\n*   **AU** (Australia) - *State/Territory*\n*   **CN** (China) - *Province*\n*   **JP** (Japan) - *Prefecture* \n*   **MY** (Malaysia) - *State*\n*   **KR** (South Korea) - *Province/City-Province*\n*   **ID** (Indonesia) - *Province*\n*   **TH** (Thailand) - *Province (Changwat)*\n\n##### Europe\n*   **IT** (Italy) - *Province* (2-letter abbreviation like MI, RM)\n*   **ES** (Spain) - *Province* \n*   **IE** (Ireland) - *County*"},"subAdministrativeArea":{"type":"string","description":"Usually the District, Suburb, or Neighborhood.\nTypically not required unless explicitly specified in our documentation."},"locality":{"type":"string","description":"The primary locality of the address.\nUsually the City, Town, Village, or Municipality.","examples":["San Francisco","Stockholm"]},"subLocality":{"type":"string","description":"The neighborhood, suburb, or district within the locality.\nTypically not required unless explicitly specified in our documentation.\n\nCritical for:\n- Japan (chome/district names)\n- UK (London districts like \"Soho\" or \"Brixton\")\n- Latin America (colonia)"},"addressLines":{"type":"array","items":{"type":"string"},"description":"An ordered array of street address lines.\nIndex 0: Primary street info (Street name + Number, or Block number).\nIndex 1+: Secondary info (Apartment, Suite, Floor, Building Name).","examples":[["Gatan 1","1602"],["123 Market Street","Floor 2, Apt 4B"],["Sveavägen 1"]]},"type":{"$ref":"#/components/schemas/AddressType"},"instructions":{"type":"string","description":"Additional instructions for the delivery.","examples":["Portkod 4499. Våning 5."]},"recipientName":{"type":"string","description":"The name of the recipient formatted as expected in the country it's being delivered to.","examples":["John J.Doe"]}}}}}},"schemaResolvedErrors":[]},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"where-each-model-is-used","__idx":4},"children":["Where each model is used"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Context"},"children":["Context"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Model"},"children":["Model"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Example"},"children":["Example"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Customer destination"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DeliveryAddress"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/delivery/options"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/delivery/orders"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Warehouse / store origin"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Address"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fulfillmentGroups[].origins[].address"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Pickup location"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Address"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Returned in delivery options and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/delivery/locations"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"server-driven-forms","__idx":5},"children":["Server-driven forms"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Instead of hardcoding which address fields to show for each country, you can"," ","call the address form endpoint and let the API tell your client what to render."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /v1/delivery/address/form?countryCode=SE\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The response includes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Field definitions"]}," — which fields exist, their labels, validation rules,"," ","keyboard hints, and whether they are required"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Layout"]}," — a grid describing the visual order to render fields"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Pre-filled values"]}," — if you also pass ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["postalCode"]},", the API can"," ","pre-fill the city and region"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This means your checkout automatically supports new countries without code"," ","changes. The API knows that Sweden needs five fields while the United States"," ","needs six (including state). Your client just renders what it's told."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer-resources/ingrid-api/guides/address-form"},"children":["address form guide"]}," for a step-by-step integration."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-minimum-viable-integration","__idx":6},"children":["The minimum viable integration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You only need two fields to get delivery options: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["countryCode"]}," and"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["postalCode"]},". Everything else improves the experience but is not required to"," ","get started."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","data-title":"Request","header":{"title":"Request","controls":{"copy":{}}},"source":"curl -X POST https://api.ingrid.com/v1/delivery/options \\\n  -H \"Authorization: Bearer <YOUR_API_KEY>\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"purchaseCountry\": \"SE\",\n    \"purchaseCurrency\": \"SEK\",\n    \"externalRef\": \"cart-abc-123\",\n    \"destination\": {\n      \"countryCode\": \"SE\",\n      \"postalCode\": \"11453\"\n    },\n    \"fulfillmentGroups\": [\n      {\n        \"items\": [\n          {\n            \"quantity\": 1,\n            \"weight\": { \"value\": 500, \"unit\": \"g\" },\n            \"dimensions\": { \"length\": 30, \"width\": 20, \"height\": 10, \"unit\": \"cm\" }\n          }\n        ]\n      }\n    ]\n  }'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Collect the full street address later — before order creation — and the customer"," ","still gets delivery options as soon as they enter their postal code."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-full-address-flow","__idx":7},"children":["The full address flow"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The complete address flow has four stages. Each stage is optional except"," ","fetching delivery options. Use as many as your checkout needs."]},{"$$mdtype":"Tag","name":"Mermaid","attributes":{"data-language":"mermaid","diagramSource":"sequenceDiagram\n    participant C as Checkout\n    participant I as Ingrid API\n\n    Note over C,I: Stage 1: Render the form\n    C->>I: GET /address/form?countryCode=SE\n    I-->>C: Field definitions, layout, validation rules\n\n    Note over C,I: Stage 2: Autocomplete (optional)\n    C->>I: GET /address/search?countryCode=SE&query=Svea\n    I-->>C: Predictions\n    C->>I: GET /address/details/{id}\n    I-->>C: Full DeliveryAddress\n\n    Note over C,I: Stage 3: Validate (recommended)\n    C->>I: POST /address/validate\n    I-->>C: valid / suspect / invalid + candidate\n\n    Note over C,I: Stage 4: Fetch delivery options\n    C->>I: POST /delivery/options\n    I-->>C: Delivery groups, categories, services\n","diagramHtml":"<div class=\"mermaid\" data-processed=\"true\"><svg id=\"mermaid-1770292299581\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"max-width: 702px;\" viewBox=\"-50 -10 702 919\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><g><rect x=\"452\" y=\"833\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"I\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"527\" y=\"865.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"527\" dy=\"0\">Ingrid API</tspan></text></g><g><rect x=\"0\" y=\"833\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"C\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"75\" y=\"865.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"75\" dy=\"0\">Checkout</tspan></text></g><g><line id=\"actor1\" x1=\"527\" y1=\"65\" x2=\"527\" y2=\"833\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"I\"></line><g id=\"root-1\"><rect x=\"452\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"I\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"527\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"527\" dy=\"0\">Ingrid API</tspan></text></g></g><g><line id=\"actor0\" x1=\"75\" y1=\"65\" x2=\"75\" y2=\"833\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"C\"></line><g id=\"root-0\"><rect x=\"0\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"C\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"75\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400;\"><tspan x=\"75\" dy=\"0\">Checkout</tspan></text></g></g><style>#mermaid-1770292299581{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-1770292299581 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-1770292299581 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-1770292299581 .error-icon{fill:#552222;}#mermaid-1770292299581 .error-text{fill:#552222;stroke:#552222;}#mermaid-1770292299581 .edge-thickness-normal{stroke-width:1px;}#mermaid-1770292299581 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1770292299581 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1770292299581 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-1770292299581 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1770292299581 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1770292299581 .marker{fill:#333333;stroke:#333333;}#mermaid-1770292299581 .marker.cross{stroke:#333333;}#mermaid-1770292299581 svg{font-family:\"trebuchet ms\",verdana,arial,sans-serif;font-size:16px;}#mermaid-1770292299581 p{margin:0;}#mermaid-1770292299581 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1770292299581 text.actor&gt;tspan{fill:black;stroke:none;}#mermaid-1770292299581 .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-1770292299581 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-1770292299581 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-1770292299581 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-1770292299581 #arrowhead path{fill:#333;stroke:#333;}#mermaid-1770292299581 .sequenceNumber{fill:white;}#mermaid-1770292299581 #sequencenumber{fill:#333;}#mermaid-1770292299581 #crosshead path{fill:#333;stroke:#333;}#mermaid-1770292299581 .messageText{fill:#333;stroke:none;}#mermaid-1770292299581 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1770292299581 .labelText,#mermaid-1770292299581 .labelText&gt;tspan{fill:black;stroke:none;}#mermaid-1770292299581 .loopText,#mermaid-1770292299581 .loopText&gt;tspan{fill:black;stroke:none;}#mermaid-1770292299581 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-1770292299581 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-1770292299581 .noteText,#mermaid-1770292299581 .noteText&gt;tspan{fill:black;stroke:none;}#mermaid-1770292299581 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-1770292299581 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-1770292299581 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-1770292299581 .actorPopupMenu{position:absolute;}#mermaid-1770292299581 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-1770292299581 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1770292299581 .actor-man circle,#mermaid-1770292299581 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-1770292299581 :root{--mermaid-font-family:\"trebuchet ms\",verdana,arial,sans-serif;}</style><g></g><defs><symbol id=\"computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><g><rect x=\"50\" y=\"75\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"502\" height=\"42\" class=\"note\"></rect><text x=\"301\" y=\"80\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"301\">Stage 1: Render the form</tspan></text></g><g><rect x=\"50\" y=\"235\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"502\" height=\"42\" class=\"note\"></rect><text x=\"301\" y=\"240\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"301\">Stage 2: Autocomplete (optional)</tspan></text></g><g><rect x=\"50\" y=\"503\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"502\" height=\"42\" class=\"note\"></rect><text x=\"301\" y=\"508\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"301\">Stage 3: Validate (recommended)</tspan></text></g><g><rect x=\"50\" y=\"663\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"502\" height=\"42\" class=\"note\"></rect><text x=\"301\" y=\"668\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\"><tspan x=\"301\">Stage 4: Fetch delivery options</tspan></text></g><text x=\"300\" y=\"132\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">GET /address/form?countryCode=SE</text><line x1=\"76\" y1=\"171\" x2=\"523\" y2=\"171\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"303\" y=\"186\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Field definitions, layout, validation rules</text><line x1=\"526\" y1=\"225\" x2=\"79\" y2=\"225\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"300\" y=\"292\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">GET /address/search?countryCode=SE&amp;query=Svea</text><line x1=\"76\" y1=\"331\" x2=\"523\" y2=\"331\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"303\" y=\"346\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Predictions</text><line x1=\"526\" y1=\"385\" x2=\"79\" y2=\"385\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"300\" y=\"400\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">GET /address/details/{id}</text><line x1=\"76\" y1=\"439\" x2=\"523\" y2=\"439\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"303\" y=\"454\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Full DeliveryAddress</text><line x1=\"526\" y1=\"493\" x2=\"79\" y2=\"493\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"300\" y=\"560\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">POST /address/validate</text><line x1=\"76\" y1=\"599\" x2=\"523\" y2=\"599\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"303\" y=\"614\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">valid / suspect / invalid + candidate</text><line x1=\"526\" y1=\"653\" x2=\"79\" y2=\"653\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line><text x=\"300\" y=\"720\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">POST /delivery/options</text><line x1=\"76\" y1=\"759\" x2=\"523\" y2=\"759\" class=\"messageLine0\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"fill: none;\"></line><text x=\"303\" y=\"774\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-size: 16px; font-weight: 400;\">Delivery groups, categories, services</text><line x1=\"526\" y1=\"813\" x2=\"79\" y2=\"813\" class=\"messageLine1\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#arrowhead)\" style=\"stroke-dasharray: 3, 3; fill: none;\"></line></svg></div>"},"children":["sequenceDiagram\n    participant C as Checkout\n    participant I as Ingrid API\n\n    Note over C,I: Stage 1: Render the form\n    C->>I: GET /address/form?countryCode=SE\n    I-->>C: Field definitions, layout, validation rules\n\n    Note over C,I: Stage 2: Autocomplete (optional)\n    C->>I: GET /address/search?countryCode=SE&query=Svea\n    I-->>C: Predictions\n    C->>I: GET /address/details/{id}\n    I-->>C: Full DeliveryAddress\n\n    Note over C,I: Stage 3: Validate (recommended)\n    C->>I: POST /address/validate\n    I-->>C: valid / suspect / invalid + candidate\n\n    Note over C,I: Stage 4: Fetch delivery options\n    C->>I: POST /delivery/options\n    I-->>C: Delivery groups, categories, services\n"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Stage"},"children":["Stage"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Endpoint"},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Purpose"},"children":["Purpose"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Required?"},"children":["Required?"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Render form"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/delivery/address/form"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Get localized field definitions and layout"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No — you can build your own form"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Autocomplete"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/delivery/address/search"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Type-ahead address suggestions"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No — improves UX"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Validate"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/delivery/address/validate"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Verify and standardize the address"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No — recommended before order creation"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Delivery options"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/delivery/options"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Get available delivery services"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Yes"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related-guides","__idx":8},"children":["Related guides"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer-resources/ingrid-api/guides/address-form"},"children":["Rendering the address form"]}," — server-driven form integration"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer-resources/ingrid-api/guides/address-autocomplete"},"children":["Address autocomplete"]}," — type-ahead search with expand/resolve"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer-resources/ingrid-api/guides/address-validation"},"children":["Address validation"]}," — verify and standardize addresses"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer-resources/ingrid-api/guides/country-reference"},"children":["Country reference"]}," — country-specific field requirements and formatting"]}]}]},"headings":[{"value":"Working with addresses","id":"working-with-addresses","depth":1},{"value":"The address model","id":"the-address-model","depth":2},{"value":"Address","id":"address","depth":3},{"value":"DeliveryAddress","id":"deliveryaddress","depth":3},{"value":"Where each model is used","id":"where-each-model-is-used","depth":3},{"value":"Server-driven forms","id":"server-driven-forms","depth":2},{"value":"The minimum viable integration","id":"the-minimum-viable-integration","depth":2},{"value":"The full address flow","id":"the-full-address-flow","depth":2},{"value":"Related guides","id":"related-guides","depth":2}],"frontmatter":{"title":"Working with Addresses","description":"How addresses work in the Ingrid Delivery API and how they connect to delivery options and order creation","seo":{"title":"Working with addresses"}},"lastModified":"2026-02-24T19:14:57.409Z","pagePropGetterError":{"message":"","name":""}},"slug":"/developer-resources/ingrid-api/guides/addresses","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}