> ## 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 för egen kanal

> Skapa en egen orderkanal, kopiera mottagnings-URL och signeringsnyckel, ställ in reglagen under Drift och skicka en signerad order från din egen webbutik eller ditt affärssystem.

En egen kanal låter din egen webbutik, ditt affärssystem eller ditt lagersystem skicka ordrar direkt in i Zippendo, när det inte finns någon färdig anslutning för det. Den här sidan går igenom varje kontroll i skapa-fönstret och kanalinställningarna, och hur en utvecklare skickar en order. Genomgången klick för klick är [Anslut orderkanaler](/docs/sv/tutorials/connect-order-channels). Den fullständiga referensen för payload är [Egna kanaler](/docs/sv/order-channels/custom-channels).

Klicka på **Orderkanaler** i sidofältet och sedan på fliken **Katalog**. Kortet **Egen kanal** lyder **Anslut din egen webbutik eller ditt affärssystem**. Dess knapp är **Skapa kanal**.

<Frame caption="Kortet Egen kanal i katalogen">
  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/01-available-integrations-light.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=f5efcb64af48b4adf8ed63fc2131d434" alt="Katalogen för orderkanaler med kortet Egen kanal och knappen Skapa kanal" className="block dark:hidden" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/01-available-integrations-light.png" />

  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/01-available-integrations-dark.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=83b3e352c7ce79afeb9f1e868efff281" alt="Katalogen för orderkanaler med kortet Egen kanal och knappen Skapa kanal" className="hidden dark:block" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/01-available-integrations-dark.png" />
</Frame>

## Skapa kanalen

Klicka på **Skapa kanal**. Fönstret **Skapa egen kanal** öppnas: **En orderkanal för din egen webbutik eller ditt affärssystem.**

<Frame caption="Skapa egen kanal: ange ett Kanalens namn">
  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/02-create-modal-light.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=fb51a7f39271d92a2cdcd3f18ccae504" alt="Fönstret Skapa egen kanal med Kanalens namn ifyllt som My webshop, Skapa kanal och Avbryt" className="block dark:hidden" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/02-create-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/02-create-modal-dark.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=d89e3d62bed16d4ba4e0e0d789a72e2f" alt="Fönstret Skapa egen kanal med Kanalens namn ifyllt som My webshop, Skapa kanal och Avbryt" className="hidden dark:block" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/02-create-modal-dark.png" />
</Frame>

| Fält | Obligatoriskt | Vad du anger |
| - | - | - |
| **Kanalens namn** | Ja | Ett namn som du känner igen, till exempel ”My webshop”. **Skapa kanal** förblir inaktiv tills du anger ett. |
| **Varumärke** | Nej | Visas bara när din organisation har varumärken. **Ordrar från den här kanalen tillhör det här varumärket.** |

Klicka på **Skapa kanal** (den visar **Skapar…**). Du ser **Orderkanalen har skapats**, och Zippendo öppnar den nya kanalens inställningar. Om du ser **Det gick inte att skapa orderkanalen** försöker du igen. **Avbryt** stänger fönstret.

## Ordermottagning

Inställningssidan har kanalens namn som rubrik, med **Din egen integration: skicka ordrar till mottagnings-URL:en eller använd API:et och SDK:erna.** **Visa dokumentationen** öppnar referensen [Egna kanaler](/docs/sv/order-channels/custom-channels).

<Frame caption="Ordermottagning: Mottagnings-URL och Skapa nyckel">
  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/03-order-ingestion-light.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=cecad89319dc7eb7671f31ae106472e3" alt="Kortet Ordermottagning med Mottagnings-URL, Kopiera och Skapa nyckel" className="block dark:hidden" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/03-order-ingestion-light.png" />

  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/03-order-ingestion-dark.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=84c903eba8302aa7e13797dc688f48e9" alt="Kortet Ordermottagning med Mottagnings-URL, Kopiera och Skapa nyckel" className="hidden dark:block" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/03-order-ingestion-dark.png" />
</Frame>

Kortet **Ordermottagning**: **Ditt system skickar signerade ordrar till mottagnings-URL:en nedan. Signera den råa bodyn i varje anrop med HMAC-SHA256 och signeringsnyckeln.**

| Kontroll | Vad den gör |
| - | - |
| **Mottagnings-URL** | Adressen som ditt system skickar ordrar till, på formen `https://api.zippendo.com/webhooks/order-channels/<channel id>`. Kopiera den från din egen kanal. **Kopiera** visar **Har kopierats till urklipp.**, eller **Det gick inte att kopiera till urklipp.** |
| **Skapa nyckel** | Skapar signeringsnyckeln. Visar **Skapar…**, sedan **Signeringsnyckeln har skapats.** eller **Det gick inte att skapa signeringsnyckeln.** |
| **Ersätt nyckel** | Ersätter en befintlig nyckel. Zippendo ber dig bekräfta: ditt system avvisas tills det signerar med den nya nyckeln. |
| **Återkalla** | Stänger av nyckeln. Alla ordrar som ditt system skickar avvisas tills du skapar en ny nyckel. Visar **Signeringsnyckeln har återkallats.** eller **Det gick inte att återkalla signeringsnyckeln.** |
| **Aktiv signeringsnyckel skapad** | Följs av datum och tid då den nuvarande nyckeln skapades. |

Kanalen tar bara emot ordrar när det finns en signeringsnyckel. Det finns inget separat reglage för att slå på ordermottagning.

Efter **Skapa nyckel** eller **Ersätt nyckel** visas nyckeln en enda gång:

<Frame caption="Kopiera signeringsnyckeln nu. Den visas bara en gång">
  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/04-signing-secret-light.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=a2ec1ad3f3026913434e428317cfa761" alt="Ordermottagning med engångsnyckeln för signering, Kopiera, Återkalla och Ersätt nyckel" className="block dark:hidden" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/04-signing-secret-light.png" />

  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/04-signing-secret-dark.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=19557e652a3aa77ab1b69e1d17163436" alt="Ordermottagning med engångsnyckeln för signering, Kopiera, Återkalla och Ersätt nyckel" className="hidden dark:block" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/04-signing-secret-dark.png" />
</Frame>

<Warning>
  **Kopiera nyckeln nu. Den visas bara en gång. Om du ersätter den senare slutar den nuvarande nyckeln att fungera direkt.** Nyckeln börjar med `zwhs_`. Spara den i ditt systems konfiguration.
</Warning>

## Skicka en order

Skicka en `POST` till **Mottagnings-URL** med två headers:

| Header | Värde |
| - | - |
| `X-Zippendo-Topic` | `order.created`, `order.updated`, `order.cancelled` eller `ping` |
| `X-Zippendo-Signature` | HMAC-SHA256 av **den råa request-bodyn**, hex-kodad, med signeringsnyckeln som nyckel |

`order.created` och `order.updated` skapar eller uppdaterar båda ordern utifrån dess `externalId`. Bodyn för `order.cancelled` är `{ "externalId": "…" }`. `ping` returnerar `200 { "received": true }` utan att ändra något.

```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
})
```

Obligatoriska payload-fält: `externalId`, `orderNumber` och `orderLines` (minst en rad med `name` och `quantity`). Valfria: `customerName`, `customerEmail`, `shippingAddress`, `subtotalAmount`, `totalAmount`, `currency`, `notes`, `shippingMethodTitle` och `serviceCode`. Fullständig fälttabell: [Egna kanaler](/docs/sv/order-channels/custom-channels).

| Status | Betydelse |
| - | - |
| `200` | Godkänd och bearbetad |
| `400` | Saknat eller okänt topic, en payload som inte klarade valideringen, eller **Kanalen är aktiverad** är av |
| `401` | Signaturkontrollen misslyckades: fel nyckel, saknad header eller ingen nyckel skapad än |
| `404` | Okänd kanal |
| `429` | För många ordrar på en gång. Försök igen efter fördröjningen i `Retry-After` |
| `5xx` | Bearbetningen misslyckades. Försök igen: det är säkert att skicka samma order på nytt |

Föredrar du förfrågan och svar? Skapa ordrar med `POST /orgs/{orgId}/orders`, med `orderChannelId`, och en [API-token](/docs/sv/how-to/create-an-api-token). En andra order med samma `externalId` på samma kanal returnerar `409 ORDER_EXISTS`.

Om du vill få tillbaka spårningsnummer och statusändringar prenumererar du på din organisations [webhooks](/docs/sv/how-to/webhooks) (`shipment.dispatched`, `tracking.updated`). En egen kanal har ingen egen spårningscallback och ingen skärm för mappning av leveranssätt.

En order som du skickar visas under **Ordrar**. Dess status kan vara **Fel** när Zippendo importerade ordern men inte kunde skapa en försändelse som är redo att skickas, till exempel för att ingen fraktregel matchade eller adressen är ofullständig. Ordern tillhör fortfarande kanalen.

<Frame caption="En order som skickats av ditt system på sidan Ordrar">
  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/08-ingested-order-light.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=78ccb8238347e67775ca642bf783bf2d" alt="Orderlistan med en order som kom in via en egen kanal" className="block dark:hidden" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/08-ingested-order-light.png" />

  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/08-ingested-order-dark.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=42137040df8ade915454c6eace54c7ea" alt="Orderlistan med en order som kom in via en egen kanal" className="hidden dark:block" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/08-ingested-order-dark.png" />
</Frame>

## Drift

<Frame caption="Drift: Kanalen är aktiverad, Skicka försändelser automatiskt och Standardavsändaradress">
  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/05-operations-light.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=446e34d9c7a45979fd56d853963942ef" alt="Kortet Drift med Kanalen är aktiverad påslaget, Skicka försändelser automatiskt, Standardavsändaradress, Senast mottagna order och Spara ändringar" className="block dark:hidden" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/05-operations-light.png" />

  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/05-operations-dark.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=843a1a100274b00cd058daea34cde6d5" alt="Kortet Drift med Kanalen är aktiverad påslaget, Skicka försändelser automatiskt, Standardavsändaradress, Senast mottagna order och Spara ändringar" className="hidden dark:block" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/05-operations-dark.png" />
</Frame>

| Inställning | Sparas | Vad den gör |
| - | - | - |
| **Kanalen är aktiverad** | Direkt | Slår på eller av kanalen. **När den är avstängd avvisar Zippendo alla ordrar som skickas till kanalen.** |
| **Skicka försändelser automatiskt** | Med **Spara ändringar** | Skickar försändelsen till transportören automatiskt när en inkommande order matchar en fraktregel. Av som standard. |
| **Varumärke** | Direkt | **Ordrar från den här kanalen tillhör det här varumärket.** Listan visas bara när din organisation har varumärken. |
| **Standardavsändaradress** | Med **Spara ändringar** | Avsändaren för försändelser när ingen fraktregel matchar ordern. Om ingen är sparad än står det **Inga adresser än** i listan. |
| **Senast mottagna order** | Skrivskyddad | När kanalen senast tog emot en order, eller **Aldrig**. |

**Spara ändringar** (**Sparar…**) sparar **Skicka försändelser automatiskt** och **Standardavsändaradress**. Du ser **Orderkanalen har uppdaterats**, eller **Det gick inte att uppdatera orderkanalen**.

## Stäng av en kanal

Stäng av **Kanalen är aktiverad**. På fliken **Ansluten** står det då **Inaktiverad** på kanalens rad i kortet **Egen kanal**. Egna kanaler ligger alltid kvar på fliken **Ansluten** och blir aldrig kvarlämnade kanaler.

<Frame caption="En egen kanal som är avstängd">
  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/06-disabled-card-light.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=bb98d8a63878c70b13be1446b5fc8735" alt="Sidan Orderkanaler med en egen kanal markerad som Inaktiverad" className="block dark:hidden" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/06-disabled-card-light.png" />

  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/06-disabled-card-dark.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=e125c1d576869804f29d97cc82588896" alt="Sidan Orderkanaler med en egen kanal markerad som Inaktiverad" className="hidden dark:block" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/06-disabled-card-dark.png" />
</Frame>

Kvarlämnade Shopify- eller WooCommerce-kanaler, markerade **Ingen aktiv anslutning** och **Frånkopplad**, är något annat. Se [Inställningar för orderkanaler](/docs/sv/how-to/order-channel-settings).

## Radera

Under **Farozon** hittar du **Radera kanal**: **Radera den här egna kanalen. Din integration kan inte längre skicka ordrar till den.**

<Frame caption="Radera kanal under Farozon">
  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/07-danger-zone-light.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=d5377ca05c77613491751a4fafbaf50b" alt="Farozonen med Radera kanal och knappen Radera" className="block dark:hidden" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/07-danger-zone-light.png" />

  <img src="https://mintcdn.com/zippendo/Y83hb_L3fBMeOMtV/images/sv/how-to/custom-channel-api/07-danger-zone-dark.png?fit=max&auto=format&n=Y83hb_L3fBMeOMtV&q=85&s=07a8ca113dc8bb12ed9a8c0912d13265" alt="Farozonen med Radera kanal och knappen Radera" className="hidden dark:block" width="2880" height="1800" data-path="images/sv/how-to/custom-channel-api/07-danger-zone-dark.png" />
</Frame>

Klicka på **Radera** och bekräfta: **Radera den här egna kanalen? Dess mottagnings-URL slutar ta emot ordrar direkt.** Du ser **Orderkanalen har raderats**, eller **Det gick inte att radera orderkanalen**.

## Relaterat

<CardGroup cols={2}>
  <Card title="Anslut orderkanaler" icon="store" href="/docs/sv/tutorials/connect-order-channels">
    Skapa kanalen från katalogen och öppna sedan Ordrar.
  </Card>

  <Card title="Referens för egna kanaler" icon="webhook" href="/docs/sv/order-channels/custom-channels">
    Fullständig payload, avbryt, ping och REST-exempel.
  </Card>

  <Card title="Inställningar för orderkanaler" icon="settings-2" href="/docs/sv/how-to/order-channel-settings">
    Sidan Orderkanaler, varumärken och kvarlämnade kanaler.
  </Card>

  <Card title="Skapa en API-token" icon="key" href="/docs/sv/how-to/create-an-api-token">
    En token för POST /orgs/\{orgId}/orders i stället för signerade push-anrop.
  </Card>
</CardGroup>


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