> ## Documentation Index
> Fetch the complete documentation index at: https://www.zippendo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# API til egen kanal

> Opret en egen ordrekanal, kopier modtagelses-URL'en og signeringsnøglen, indstil Drift-kontakterne, og send en signeret ordre fra din egen webshop eller dit ERP-system.

En egen kanal lader din egen webshop, dit ERP- eller dit lagersystem sende ordrer direkte ind i Zippendo, når der ikke findes en færdig forbindelse til det. Denne side gennemgår alle kontrollerne i oprettelsesvinduet og kanalindstillingerne og viser, hvordan en udvikler sender en ordre. Gennemgangen med klik finder du i [Forbind ordrekanaler](/docs/da/tutorials/connect-order-channels). Den fulde reference til indholdet finder du i [Egne kanaler](/docs/da/order-channels/custom-channels).

Klik på **Ordrekanaler** i sidemenuen og derefter på fanen **Katalog**. Kortet **Egen kanal** siger **Forbind din egen webshop eller dit ERP-system**. Dets knap hedder **Opret kanal**.

<Frame caption="Kortet Egen kanal i kataloget">
  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/01-available-integrations-light.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=2e3da053c77dc210ecbf7ff1ce24db9c" alt="Katalog over ordrekanaler med kortet Egen kanal og knappen Opret kanal" className="block dark:hidden" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/01-available-integrations-light.png" />

  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/01-available-integrations-dark.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=6e0e626208a2e62a1a3428bf6b444b7f" alt="Katalog over ordrekanaler med kortet Egen kanal og knappen Opret kanal" className="hidden dark:block" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/01-available-integrations-dark.png" />
</Frame>

## Opret kanalen

Klik på **Opret kanal**. Vinduet **Opret egen kanal** åbner: **En ordrekanal til din egen webshop eller dit ERP-system.**

<Frame caption="Opret egen kanal: skriv et Kanalnavn">
  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/02-create-modal-light.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=9c9d137757d8d303e6224df8aa07c31b" alt="Vinduet Opret egen kanal med Kanalnavn udfyldt som Min webshop, Opret kanal og Annuller" className="block dark:hidden" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/02-create-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/02-create-modal-dark.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=ba048494c26da852b24b38de7945bddb" alt="Vinduet Opret egen kanal med Kanalnavn udfyldt som Min webshop, Opret kanal og Annuller" className="hidden dark:block" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/02-create-modal-dark.png" />
</Frame>

| Felt | Påkrævet | Det skal du skrive |
| - | - | - |
| **Kanalnavn** | Ja | Et navn, du genkender, f.eks. "Min webshop". **Opret kanal** er inaktiv, indtil du har skrevet et. |
| **Brand** | Nej | Vises kun, når din organisation har brands. **Ordrer fra denne kanal hører til dette brand.** |

Klik på **Opret kanal** (den viser **Opretter…**). Du ser **Ordrekanal oprettet**, og Zippendo åbner den nye kanals indstillinger. Hvis du ser **Kunne ikke oprette ordrekanalen**, så prøv igen. **Annuller** lukker vinduet.

## Ordremodtagelse

Indstillingssiden har kanalens navn som overskrift og **Din egen integration: send ordrer til modtagelses-URL'en, eller brug API'et og SDK'erne.** **Se dokumentation** åbner referencen [Egne kanaler](/docs/da/order-channels/custom-channels).

<Frame caption="Ordremodtagelse: Modtagelses-URL og Generer nøgle">
  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/03-order-ingestion-light.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=f20f666656784292327a1b29aa49b183" alt="Kortet Ordremodtagelse med Modtagelses-URL, Kopier og Generer nøgle" className="block dark:hidden" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/03-order-ingestion-light.png" />

  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/03-order-ingestion-dark.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=8c19e92c0f2b0672d18d9a4a14262c6b" alt="Kortet Ordremodtagelse med Modtagelses-URL, Kopier og Generer nøgle" className="hidden dark:block" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/03-order-ingestion-dark.png" />
</Frame>

Kortet **Ordremodtagelse**: **Dit system sender signerede ordrer til modtagelses-URL'en nedenfor. Signer den rå body i hver forespørgsel med HMAC-SHA256 og signeringsnøglen.**

| Kontrol | Hvad den gør |
| - | - |
| **Modtagelses-URL** | Den adresse, dit system sender ordrer til, på formen `https://api.zippendo.com/webhooks/order-channels/<channel id>`. Kopier den fra din egen kanal. **Kopier** viser **Kopieret til udklipsholderen.** eller **Kunne ikke kopiere til udklipsholderen.** |
| **Generer nøgle** | Opretter signeringsnøglen. Viser **Genererer…** og derefter **Signeringsnøgle genereret.** eller **Kunne ikke generere signeringsnøglen.** |
| **Erstat nøgle** | Erstatter en eksisterende nøgle. Zippendo beder dig bekræfte: dit system afvises, indtil det signerer med den nye nøgle. |
| **Tilbagekald** | Slår nøglen fra. Alle ordrer, dit system sender, afvises, indtil du genererer en ny nøgle. Viser **Signeringsnøgle tilbagekaldt.** eller **Kunne ikke tilbagekalde signeringsnøglen.** |
| **Aktiv signeringsnøgle oprettet** | Efterfulgt af dato og klokkeslæt for, hvornår den nuværende nøgle blev oprettet. |

Kanalen accepterer først ordrer, når der findes en signeringsnøgle. Der er ingen separat kontakt til at slå modtagelse til.

Efter **Generer nøgle** eller **Erstat nøgle** vises nøglen én gang:

<Frame caption="Kopier signeringsnøglen nu. Den vises kun én gang">
  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/04-signing-secret-light.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=423e2144441addda3468ef8d0c456d33" alt="Ordremodtagelse med engangssigneringsnøglen, Kopier, Tilbagekald og Erstat nøgle" className="block dark:hidden" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/04-signing-secret-light.png" />

  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/04-signing-secret-dark.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=da8702801644ce32588e26dc76eb6ecc" alt="Ordremodtagelse med engangssigneringsnøglen, Kopier, Tilbagekald og Erstat nøgle" className="hidden dark:block" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/04-signing-secret-dark.png" />
</Frame>

<Warning>
  **Kopier nøglen nu. Den vises kun én gang. Hvis du erstatter den senere, holder den nuværende nøgle op med at virke med det samme.** Nøglen begynder med `zwhs_`. Gem den i dit systems konfiguration.
</Warning>

## Send en ordre

Send en `POST` til **Modtagelses-URL** med to headers:

| Header | Værdi |
| - | - |
| `X-Zippendo-Topic` | `order.created`, `order.updated`, `order.cancelled` eller `ping` |
| `X-Zippendo-Signature` | HMAC-SHA256 af **den rå anmodningsbody**, hex-kodet, med signeringsnøglen som nøgle |

`order.created` og `order.updated` opretter eller opdaterer begge ordren ud fra dens `externalId`. Bodyen i `order.cancelled` er `{ "externalId": "…" }`. `ping` returnerer `200 { "received": true }` uden at ændre noget.

```javascript theme={null}
import crypto from "node:crypto"

const body = JSON.stringify(order)
const signature = crypto.createHmac("sha256", process.env.ZIPPENDO_WEBHOOK_SECRET)
  .update(body)
  .digest("hex")

await fetch(webhookUrl, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-Zippendo-Topic": "order.created",
    "X-Zippendo-Signature": signature
  },
  body
})
```

Påkrævede felter i indholdet: `externalId`, `orderNumber` og `orderLines` (mindst én linje med `name` og `quantity`). Valgfrie: `customerName`, `customerEmail`, `shippingAddress`, `subtotalAmount`, `totalAmount`, `currency`, `notes`, `shippingMethodTitle` og `serviceCode`. Den fulde felttabel: [Egne kanaler](/docs/da/order-channels/custom-channels).

| Status | Betydning |
| - | - |
| `200` | Accepteret og behandlet |
| `400` | Manglende eller ukendt topic, indhold der ikke bestod valideringen, eller **Kanal aktiveret** er slået fra |
| `401` | Signaturtjekket mislykkedes: forkert nøgle, manglende header eller ingen nøgle genereret endnu |
| `404` | Ukendt kanal |
| `429` | For mange ordrer på én gang. Prøv igen efter forsinkelsen i `Retry-After` |
| `5xx` | Behandlingen mislykkedes. Prøv igen: det er sikkert at sende den samme ordre igen |

Foretrækker du anmodning og svar? Opret ordrer med `POST /orgs/{orgId}/orders` med `orderChannelId` og et [API-token](/docs/da/how-to/create-an-api-token). En anden ordre med samme `externalId` på samme kanal returnerer `409 ORDER_EXISTS`.

For at få trackingnumre og statusændringer tilbage skal du abonnere på din organisations [webhooks](/docs/da/how-to/webhooks) (`shipment.dispatched`, `tracking.updated`). En egen kanal har ikke sit eget trackingkald og ingen skærm til kortlægning af leveringsmetoder.

En ordre, du sender, vises under **Ordrer**. Dens status kan være **Fejl**, når Zippendo har importeret ordren, men ikke kunne oprette en forsendelse, der er klar til at blive sendt, f.eks. fordi ingen forsendelsesregel passede, eller adressen er ufuldstændig. Ordren hører stadig til kanalen.

<Frame caption="En ordre sendt af dit system på siden Ordrer">
  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/08-ingested-order-light.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=a4aa18dd01982078648d9ce4fee6959e" alt="Ordreliste med en ordre, der kom ind gennem en egen kanal" className="block dark:hidden" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/08-ingested-order-light.png" />

  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/08-ingested-order-dark.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=f81a06a1813f6563496469b65e2734fe" alt="Ordreliste med en ordre, der kom ind gennem en egen kanal" className="hidden dark:block" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/08-ingested-order-dark.png" />
</Frame>

## Drift

<Frame caption="Drift: Kanal aktiveret, Send forsendelser automatisk og Standard afsenderadresse">
  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/05-operations-light.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=f903a596e0663d6eedd88ebe28471b2b" alt="Kortet Drift med Kanal aktiveret slået til, Send forsendelser automatisk, Standard afsenderadresse, Seneste ordre modtaget og Gem ændringer" className="block dark:hidden" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/05-operations-light.png" />

  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/05-operations-dark.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=b6d487f874e687d21c26f4e407205eb4" alt="Kortet Drift med Kanal aktiveret slået til, Send forsendelser automatisk, Standard afsenderadresse, Seneste ordre modtaget og Gem ændringer" className="hidden dark:block" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/05-operations-dark.png" />
</Frame>

| Indstilling | Gemmes | Hvad den gør |
| - | - | - |
| **Kanal aktiveret** | Med det samme | Slår kanalen til eller fra. **Når den er slået fra, afviser Zippendo alle ordrer, der sendes til denne kanal.** |
| **Send forsendelser automatisk** | Med **Gem ændringer** | Sender forsendelsen til transportøren automatisk, når en indkommende ordre passer til en forsendelsesregel. Slået fra som standard. |
| **Brand** | Med det samme | **Ordrer fra denne kanal hører til dette brand.** Listen vises kun, når din organisation har brands. |
| **Standard afsenderadresse** | Med **Gem ændringer** | Afsenderen til forsendelser, når ingen forsendelsesregel passer til ordren. Når der endnu ikke er gemt nogen, står der **Ingen adresser endnu** på listen. |
| **Seneste ordre modtaget** | Skrivebeskyttet | Hvornår kanalen senest modtog en ordre, eller **Aldrig**. |

**Gem ændringer** (**Gemmer…**) gemmer **Send forsendelser automatisk** og **Standard afsenderadresse**. Du ser **Ordrekanal opdateret** eller **Kunne ikke opdatere ordrekanalen**.

## Slå en kanal fra

Slå **Kanal aktiveret** fra. På fanen **Forbundet** står der så **Deaktiveret** i kanalens række på kortet **Egen kanal**. Egne kanaler bliver altid på fanen **Forbundet** og bliver aldrig til overskydende kanaler.

<Frame caption="En egen kanal, der er slået fra">
  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/06-disabled-card-light.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=0f0db24e4e2bc82ded9144981e333d13" alt="Siden Ordrekanaler med en egen kanal markeret Deaktiveret" className="block dark:hidden" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/06-disabled-card-light.png" />

  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/06-disabled-card-dark.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=4c4022db337184d1de02b9335b7816fc" alt="Siden Ordrekanaler med en egen kanal markeret Deaktiveret" className="hidden dark:block" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/06-disabled-card-dark.png" />
</Frame>

Overskydende Shopify- eller WooCommerce-kanaler, markeret **Ingen aktiv forbindelse** og **Afbrudt**, er noget andet. Se [Indstillinger for ordrekanaler](/docs/da/how-to/order-channel-settings).

## Slet

Under **Farezone** finder du **Slet kanal**: **Slet kanalen. Din integration kan ikke længere sende ordrer til den.**

<Frame caption="Slet kanal under Farezone">
  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/07-danger-zone-light.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=675bc1c80c978a77f1b7a1abe391943e" alt="Farezone med Slet kanal og knappen Slet" className="block dark:hidden" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/07-danger-zone-light.png" />

  <img src="https://mintcdn.com/zippendo/GPjf2yoQNvbU9O8b/images/da/how-to/custom-channel-api/07-danger-zone-dark.png?fit=max&auto=format&n=GPjf2yoQNvbU9O8b&q=85&s=7c3d2e6b07fb8c4fc6fdca24b6dfb055" alt="Farezone med Slet kanal og knappen Slet" className="hidden dark:block" width="2880" height="1800" data-path="images/da/how-to/custom-channel-api/07-danger-zone-dark.png" />
</Frame>

Klik på **Slet** og bekræft: **Slet denne kanal? Dens modtagelses-URL stopper med at acceptere ordrer med det samme.** Du ser **Ordrekanal slettet** eller **Kunne ikke slette ordrekanalen**.

## Relateret

<CardGroup cols={2}>
  <Card title="Forbind ordrekanaler" icon="store" href="/docs/da/tutorials/connect-order-channels">
    Opret kanalen fra kataloget, og åbn derefter Ordrer.
  </Card>

  <Card title="Reference til egne kanaler" icon="webhook" href="/docs/da/order-channels/custom-channels">
    Fuldt indhold, annullering, ping og REST-eksempler.
  </Card>

  <Card title="Indstillinger for ordrekanaler" icon="settings-2" href="/docs/da/how-to/order-channel-settings">
    Siden Ordrekanaler, brands og overskydende kanaler.
  </Card>

  <Card title="Opret et API-token" icon="key" href="/docs/da/how-to/create-an-api-token">
    Et token til POST /orgs/\{orgId}/orders i stedet for signerede push.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.