Stormodtagerpostnumre i formularer

Hvad stormodtagerpostnumre er, hvordan API'et viser dem i /postnumre, på adresser og i autocomplete, og hvordan din formular håndterer dem.

3 min Niveau: Begynder ✓ Kode testet

Nogle store virksomheder og myndigheder har deres eget postnummer. Post til dem sorteres direkte til modtageren i stedet for til et postdistrikt. Det kaldes et stormodtagerpostnummer, f.eks. 1092 København K for Danske Bank på Holmens Kanal 2. Det står på fakturaer og breve fra den slags organisationer, og derfor dukker det op i B2B-formularer, fakturaadresser og CRM-data.

Et stormodtagerpostnummer peger på en organisations postmodtagelse. Bygningen har stadig sit almindelige, geografiske postnummer: Holmens Kanal 2 ligger i 1060 København K.

Hvad API'et returnerer

API'et følger DAWA:

StedHvad du får
GET /postnumreKun geografiske postnumre, som i DAWA
GET /postnumre?stormodtagere=trueOgså stormodtagerpostnumrene
GET /postnumre/{nr}Virker for alle postnumre, også stormodtagernumre
stormodtager på et postnummertrue for et stormodtagerpostnummer, ellers false
stormodtageradresser på et postnummerDe adgangsadresser, der modtager post på nummeret, som [{href, id}]. null for geografiske postnumre
stormodtagerpostnummer på /adgangsadresser{href, nr, navn} for en indgang med et stormodtagerpostnummer, ellers null
stormodtagerpostnr og stormodtagerpostnrnavn i autocompleteUdfyldt på forslag til en adresse med et stormodtagerpostnummer
Autocomplete med stormodtagerpostnumre=trueSådan en adresse foreslås to gange: med det geografiske postnummer og med stormodtagerpostnummeret

Tjek et postnummer

GET /postnumre/{nr} svarer 200 for et kendt postnummer og fortæller, om det er et stormodtagerpostnummer:

Shell#postnr-curl
curl -s "https://api.danadresse.dk/postnumre/1092" \
  -H "X-Api-Key: $DANADRESSE_API_KEY"
JSON#postnr-svar
{
  "href": "https://api.danadresse.dk/postnumre/1092",
  "nr": "1092",
  "navn": "København K",
  "stormodtageradresser": [
    {
      "href": "https://api.danadresse.dk/adgangsadresser/0a3f507a-8f2e-32b8-e044-0003ba298018",
      "id": "0a3f507a-8f2e-32b8-e044-0003ba298018"
    },
    {
      "href": "https://api.danadresse.dk/adgangsadresser/0a3f507a-8f34-32b8-e044-0003ba298018",
      "id": "0a3f507a-8f34-32b8-e044-0003ba298018"
    }
  ],
  "stormodtager": true,
  "kommuner": [
    {
      "href": "https://api.danadresse.dk/kommuner/0101",
      "kode": "0101",
      "navn": "København"
    }
  ]
}

Et 404 betyder, at nummeret ikke er et postnummer i registret. Det er typisk en tastefejl eller et nedlagt nummer.

Sådan håndterer du det i formularen

Formularens formål afgør, hvad du gør:

FormularAnbefaling
Leveringsadresse til pakker, besøg, montageKræv en fysisk adresse med det geografiske postnummer. Brug autocomplete og datavask. Et stormodtagerpostnummer er ikke en leveringsadresse
Faktura- eller postadresse for virksomhederAccepter et stormodtagerpostnummer. Det er et gyldigt postnummer til breve
Import af CRM-dataMarker rækker med ukendt postnummer til manuel kontrol i stedet for at slette dem. Rækker med et stormodtagerpostnummer er gyldige postadresser

Her er en lille kontrol i Node, som skelner mellem "geografisk", "stormodtager", "ukendt" og "ugyldigt format":

JavaScript#postnr-node
async function tjekPostnr(nr) {
  if (!/^\d{4}$/.test(nr))
    return { status: "ugyldigt", tekst: "Postnummeret skal være fire cifre" };
  const res = await fetch(`https://api.danadresse.dk/postnumre/${nr}`, {
    headers: { "X-Api-Key": process.env.DANADRESSE_API_KEY },
    signal: AbortSignal.timeout(5000),
  });
  if (res.status === 404)
    return { status: "ukendt", tekst: `${nr} er ikke et kendt postnummer` };
  if (!res.ok)
    return {
      status: "kunne ikke tjekke",
      tekst: "Kunne ikke tjekke postnummeret lige nu",
    };
  const p = await res.json();
  if (p.stormodtager) {
    return {
      status: "stormodtager",
      tekst: `${p.nr} ${p.navn} er et firmapostnummer. Brug det til post, ikke til levering.`,
    };
  }
  return { status: "geografisk", tekst: `${p.nr} ${p.navn}` };
}

for (const nr of ["2900", "1092", "9999", "29OO"]) {
  console.log(nr, JSON.stringify(await tjekPostnr(nr)));
}

Hent eventuelt hele listen med GET /postnumre?stormodtagere=true én gang i døgnet og tjek lokalt i stedet for at kalde API'et ved hvert tastetryk. Feltet stormodtager fortæller, hvilke numre der kun er til post. Se Postnumre og kommuner til dropdowns.

Gem det rå input

Når du accepterer et postnummer, API'et ikke kender, så gem det præcis som kunden skrev det, og marker rækken, f.eks. med postnr_valideret = false. Så kan I finde rækkerne igen, hvis I senere vil kontrollere dem. Et stormodtagerpostnummer på en fakturaadresse gemmer du som det er. Overskriv det ikke med det geografiske postnummer fra datavask.

Kanttilfælde

  • Datavask bruger det geografiske postnummer. "Holmens Kanal 2, 1092 København K" giver kategori C, fordi postnummeret afviger fra bygningens (forskelle.postnr). Kandidaten er den rigtige bygning med 1060. Feltet anvendtstormodtagerpostnummer er null.
  • Autocomplete finder bygningen. Forslaget viser det geografiske postnummer og har stormodtagerpostnummeret i data.stormodtagerpostnr. Vil du tilbyde begge varianter, så tilføj stormodtagerpostnumre=true.
  • Postnumre med foranstillet nul. Alle geografiske postnumre har fire cifre fra 1000 og op. Numre under 1000, som 0800 Høje Taastrup og 0999 København C, er stormodtagerpostnumre. API'et returnerer altid postnumre med fire cifre, så gem dem som tekst, så nullet ikke forsvinder.
  • Kommune ud fra postnummer. kommuner på et stormodtagerpostnummer er kommunerne for dets stormodtageradresser. Skal du kende kommunen for en bestemt kunde, så brug adressen.

Næste skridt

Relaterede guides

Markdown-kilde Fejl i guiden? Skriv til os API-reference (Swagger)

Prøv det med en gratis nøgle

2 000 kald/måned på gratisplanen. Intet kreditkort.

Opret konto →