> ## 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 eigene Kanäle

> Erstelle einen eigenen Verkaufskanal, kopiere die Empfangs-URL und den Signaturschlüssel, lege die Schalter unter Abläufe fest und sende eine signierte Bestellung aus deinem eigenen Onlineshop oder ERP.

Ein eigener Kanal lässt deinen eigenen Onlineshop, dein ERP oder dein Lagerverwaltungssystem Bestellungen direkt an Zippendo senden, wenn es dafür keine fertige Verbindung gibt. Diese Seite behandelt jedes Bedienelement im Fenster zum Erstellen und in den Einstellungen des Kanals und wie ein Entwickler eine Bestellung sendet. Den Ablauf zum Durchklicken findest du unter [Verkaufskanäle verbinden](/docs/de/tutorials/connect-order-channels). Die vollständige Referenz der Nutzdaten ist [Eigene Kanäle](/docs/de/order-channels/custom-channels).

Klicke in der Seitenleiste auf **Verkaufskanäle** und dann auf den Tab **Katalog**. Die Karte **Eigener Kanal** lautet **Deinen eigenen Onlineshop oder dein ERP-System verbinden**. Ihre Schaltfläche ist **Kanal erstellen**.

<Frame caption="Die Karte Eigener Kanal im Katalog">
  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/01-available-integrations-light.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=83b47a840c29c3707720b2faf606b4e9" alt="Katalog der Verkaufskanäle mit der Karte Eigener Kanal und der Schaltfläche Kanal erstellen" className="block dark:hidden" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/01-available-integrations-light.png" />

  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/01-available-integrations-dark.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=68d3648f0ee8a18786f7bdb55608671f" alt="Katalog der Verkaufskanäle mit der Karte Eigener Kanal und der Schaltfläche Kanal erstellen" className="hidden dark:block" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/01-available-integrations-dark.png" />
</Frame>

## Kanal erstellen

Klicke auf **Kanal erstellen**. Das Fenster **Eigenen Kanal erstellen** öffnet sich: **Ein Verkaufskanal für deinen eigenen Onlineshop oder dein ERP-System.**

<Frame caption="Eigenen Kanal erstellen: Gib einen Kanalname ein">
  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/02-create-modal-light.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=e95920278b95b0dc49f00dc2e1448b31" alt="Fenster Eigenen Kanal erstellen mit dem Kanalname Mein Onlineshop, Kanal erstellen und Abbrechen" className="block dark:hidden" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/02-create-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/02-create-modal-dark.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=f6a0f51055773b6875657d9e97e14a80" alt="Fenster Eigenen Kanal erstellen mit dem Kanalname Mein Onlineshop, Kanal erstellen und Abbrechen" className="hidden dark:block" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/02-create-modal-dark.png" />
</Frame>

| Feld | Erforderlich | Was du eingibst |
| - | - | - |
| **Kanalname** | Ja | Ein Name, den du wiedererkennst, zum Beispiel „Mein Onlineshop“. **Kanal erstellen** bleibt inaktiv, bis du einen eingibst. |
| **Marke** | Nein | Wird nur angezeigt, wenn deine Organisation Marken hat. **Bestellungen aus diesem Kanal gehören zu dieser Marke.** |

Klicke auf **Kanal erstellen** (es zeigt **Wird erstellt…**). Du siehst **Verkaufskanal erstellt**, und Zippendo öffnet die Einstellungen des neuen Kanals. Siehst du **Der Verkaufskanal konnte nicht erstellt werden**, versuch es noch einmal. **Abbrechen** schließt das Fenster.

## Bestellempfang

Die Einstellungsseite trägt als Überschrift den Namen des Kanals und **Deine eigene Integration: Sende Bestellungen an die Empfangs-URL oder nutze die API und die SDKs.** **Dokumentation ansehen** öffnet die Referenz [Eigene Kanäle](/docs/de/order-channels/custom-channels).

<Frame caption="Bestellempfang: die Empfangs-URL und Schlüssel generieren">
  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/03-order-ingestion-light.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=863a8f60a9733dc8f211d5e7cf5f9203" alt="Karte Bestellempfang mit der Empfangs-URL, Kopieren und Schlüssel generieren" className="block dark:hidden" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/03-order-ingestion-light.png" />

  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/03-order-ingestion-dark.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=f6263021ae88554f9273e6ef516c0578" alt="Karte Bestellempfang mit der Empfangs-URL, Kopieren und Schlüssel generieren" className="hidden dark:block" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/03-order-ingestion-dark.png" />
</Frame>

Die Karte **Bestellempfang**: **Dein System sendet signierte Bestellungen an die Empfangs-URL unten. Signiere den unveränderten Body jeder Anfrage mit HMAC-SHA256 und dem Signaturschlüssel.**

| Bedienelement | Was es bewirkt |
| - | - |
| **Empfangs-URL** | Die Adresse, an die dein System Bestellungen sendet, in der Form `https://api.zippendo.com/webhooks/order-channels/<channel id>`. Kopiere sie aus deinem eigenen Kanal. **Kopieren** zeigt **In die Zwischenablage kopiert.** oder **Konnte nicht in die Zwischenablage kopiert werden.** |
| **Schlüssel generieren** | Erstellt den Signaturschlüssel. Zeigt **Wird generiert…** und dann **Signaturschlüssel generiert.** oder **Der Signaturschlüssel konnte nicht generiert werden.** |
| **Schlüssel ersetzen** | Ersetzt einen bestehenden Schlüssel. Zippendo bittet dich um Bestätigung: Dein System wird abgelehnt, bis es mit dem neuen Schlüssel signiert. |
| **Widerrufen** | Schaltet den Schlüssel ab. Jede Bestellung, die dein System sendet, wird abgelehnt, bis du einen neuen Schlüssel generierst. Zeigt **Signaturschlüssel widerrufen.** oder **Der Signaturschlüssel konnte nicht widerrufen werden.** |
| **Aktiver Signaturschlüssel, erstellt am** | Gefolgt von Datum und Uhrzeit, zu der der aktuelle Schlüssel erstellt wurde. |

Der Kanal nimmt Bestellungen erst an, wenn ein Signaturschlüssel existiert. Es gibt keinen separaten Schalter, um den Empfang einzuschalten.

Nach **Schlüssel generieren** oder **Schlüssel ersetzen** wird der Schlüssel einmal angezeigt:

<Frame caption="Kopiere den Signaturschlüssel jetzt. Er wird nur einmal angezeigt">
  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/04-signing-secret-light.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=110f2b75a7799821c284a5dc72276054" alt="Bestellempfang mit dem einmalig angezeigten Signaturschlüssel, Kopieren, Widerrufen und Schlüssel ersetzen" className="block dark:hidden" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/04-signing-secret-light.png" />

  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/04-signing-secret-dark.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=35357ee870989612a7e1c3bbb4855116" alt="Bestellempfang mit dem einmalig angezeigten Signaturschlüssel, Kopieren, Widerrufen und Schlüssel ersetzen" className="hidden dark:block" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/04-signing-secret-dark.png" />
</Frame>

<Warning>
  **Kopiere den Schlüssel jetzt. Er wird nur einmal angezeigt. Wenn du ihn später ersetzt, funktioniert der aktuelle Schlüssel sofort nicht mehr.** Der Schlüssel beginnt mit `zwhs_`. Bewahre ihn in der Konfiguration deines Systems auf.
</Warning>

## Eine Bestellung senden

Sende ein `POST` an die **Empfangs-URL** mit zwei Headern:

| Header | Wert |
| - | - |
| `X-Zippendo-Topic` | `order.created`, `order.updated`, `order.cancelled` oder `ping` |
| `X-Zippendo-Signature` | HMAC-SHA256 des **unveränderten Request-Body**, hexadezimal kodiert, mit dem Signaturschlüssel als Schlüssel |

`order.created` und `order.updated` erstellen oder aktualisieren beide die Bestellung anhand ihrer `externalId`. Der Body von `order.cancelled` ist `{ "externalId": "…" }`. `ping` gibt `200 { "received": true }` zurück, ohne etwas zu ändern.

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

Erforderliche Felder der Nutzdaten: `externalId`, `orderNumber` und `orderLines` (mindestens eine Position mit `name` und `quantity`). Optional: `customerName`, `customerEmail`, `shippingAddress`, `subtotalAmount`, `totalAmount`, `currency`, `notes`, `shippingMethodTitle` und `serviceCode`. Vollständige Feldtabelle: [Eigene Kanäle](/docs/de/order-channels/custom-channels).

| Status | Bedeutung |
| - | - |
| `200` | Angenommen und verarbeitet |
| `400` | Fehlendes oder unbekanntes Topic, Nutzdaten, die die Validierung nicht bestanden haben, oder **Kanal aktiviert** ist aus |
| `401` | Signaturprüfung fehlgeschlagen: falscher Schlüssel, fehlender Header oder noch kein Schlüssel generiert |
| `404` | Unbekannter Kanal |
| `429` | Zu viele Bestellungen auf einmal. Versuch es nach der Wartezeit `Retry-After` erneut |
| `5xx` | Die Verarbeitung ist fehlgeschlagen. Versuch es erneut: Dieselbe Bestellung noch einmal zu senden ist sicher |

Du bevorzugst Anfrage und Antwort? Erstelle Bestellungen mit `POST /orgs/{orgId}/orders`, übergib `orderChannelId` und nutze ein [API-Token](/docs/de/how-to/create-an-api-token). Eine zweite Bestellung mit derselben `externalId` im selben Kanal gibt `409 ORDER_EXISTS` zurück.

Um Sendungsnummern und Statusänderungen zurückzubekommen, abonniere die [Webhooks](/docs/de/how-to/webhooks) deiner Organisation (`shipment.dispatched`, `tracking.updated`). Ein eigener Kanal hat keinen eigenen Rückruf für die Sendungsverfolgung und keinen Bildschirm zur Zuordnung von Versandarten.

Eine Bestellung, die du sendest, erscheint unter **Bestellungen**. Ihr Status kann **Fehler** sein, wenn Zippendo die Bestellung importiert hat, aber keine versandfertige Sendung erstellen konnte, zum Beispiel weil keine Versandregel gepasst hat oder die Adresse unvollständig ist. Die Bestellung gehört trotzdem zum Kanal.

<Frame caption="Eine von deinem System gesendete Bestellung auf der Seite Bestellungen">
  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/08-ingested-order-light.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=b8010211bf86c03e0e6b861774eb1086" alt="Liste der Bestellungen mit einer Bestellung, die über einen eigenen Kanal eingegangen ist" className="block dark:hidden" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/08-ingested-order-light.png" />

  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/08-ingested-order-dark.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=c73c10bed4b06e6c4060fe2d68f5f70b" alt="Liste der Bestellungen mit einer Bestellung, die über einen eigenen Kanal eingegangen ist" className="hidden dark:block" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/08-ingested-order-dark.png" />
</Frame>

## Abläufe

<Frame caption="Abläufe: Kanal aktiviert, Sendungen automatisch versenden und Standard-Absenderadresse">
  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/05-operations-light.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=f74b9588ed71d22a95c6edb905215c3a" alt="Karte Abläufe mit eingeschaltetem Kanal aktiviert, Sendungen automatisch versenden, Standard-Absenderadresse, Letzte Bestellung und Änderungen speichern" className="block dark:hidden" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/05-operations-light.png" />

  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/05-operations-dark.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=e1228fd6fa03767ccbee59509b545fa2" alt="Karte Abläufe mit eingeschaltetem Kanal aktiviert, Sendungen automatisch versenden, Standard-Absenderadresse, Letzte Bestellung und Änderungen speichern" className="hidden dark:block" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/05-operations-dark.png" />
</Frame>

| Einstellung | Gespeichert | Was sie bewirkt |
| - | - | - |
| **Kanal aktiviert** | Sofort | Schaltet den Kanal ein oder aus. **Ist er ausgeschaltet, lehnt Zippendo jede Bestellung an diesen Kanal ab.** |
| **Sendungen automatisch versenden** | Mit **Änderungen speichern** | Versendet die Sendung automatisch an den Versanddienstleister, sobald eine eingehende Bestellung zu einer Versandregel passt. Standardmäßig aus. |
| **Marke** | Sofort | **Bestellungen aus diesem Kanal gehören zu dieser Marke.** Die Liste erscheint nur, wenn deine Organisation Marken hat. |
| **Standard-Absenderadresse** | Mit **Änderungen speichern** | Der Absender für Sendungen, wenn keine Versandregel zur Bestellung passt. Ist noch keine gespeichert, steht in der Liste **Noch keine Adressen**. |
| **Letzte Bestellung** | Nur lesbar | Wann der Kanal zuletzt eine Bestellung empfangen hat, oder **Nie**. |

**Änderungen speichern** (**Wird gespeichert…**) speichert **Sendungen automatisch versenden** und **Standard-Absenderadresse**. Du siehst **Verkaufskanal aktualisiert** oder **Der Verkaufskanal konnte nicht aktualisiert werden**.

## Einen Kanal ausschalten

Schalte **Kanal aktiviert** aus. Auf dem Tab **Verbunden** steht in der Zeile des Kanals in der Karte **Eigener Kanal** dann **Deaktiviert**. Eigene Kanäle bleiben immer auf dem Tab **Verbunden** und werden nie zu übrig gebliebenen Kanälen.

<Frame caption="Ein eigener Kanal, der ausgeschaltet ist">
  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/06-disabled-card-light.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=6d8f0b4951b395ace2ac996ab374b642" alt="Seite Verkaufskanäle mit einem als Deaktiviert markierten eigenen Kanal" className="block dark:hidden" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/06-disabled-card-light.png" />

  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/06-disabled-card-dark.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=7573cbeb3483d58e625a2a77e37d6e8b" alt="Seite Verkaufskanäle mit einem als Deaktiviert markierten eigenen Kanal" className="hidden dark:block" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/06-disabled-card-dark.png" />
</Frame>

Übrig gebliebene Shopify- oder WooCommerce-Kanäle, markiert mit **Keine aktive Verbindung** und **Getrennt**, sind etwas anderes. Siehe [Einstellungen für Verkaufskanäle](/docs/de/how-to/order-channel-settings).

## Löschen

Unter **Gefahrenbereich** findest du **Kanal löschen**: **Diesen eigenen Kanal löschen. Deine Integration kann dann keine Bestellungen mehr an ihn senden.**

<Frame caption="Kanal löschen unter Gefahrenbereich">
  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/07-danger-zone-light.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=bea7d7095264acc7c05f4bcbb029edf3" alt="Gefahrenbereich mit Kanal löschen und der Schaltfläche Löschen" className="block dark:hidden" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/07-danger-zone-light.png" />

  <img src="https://mintcdn.com/zippendo/7ZizAiJJmVj5RHev/images/de/how-to/custom-channel-api/07-danger-zone-dark.png?fit=max&auto=format&n=7ZizAiJJmVj5RHev&q=85&s=a6399a883b0f52f56b5a10eacbc7b541" alt="Gefahrenbereich mit Kanal löschen und der Schaltfläche Löschen" className="hidden dark:block" width="2880" height="1800" data-path="images/de/how-to/custom-channel-api/07-danger-zone-dark.png" />
</Frame>

Klicke auf **Löschen** und bestätige: **Diesen eigenen Kanal löschen? Seine Empfangs-URL nimmt ab sofort keine Bestellungen mehr an.** Du siehst **Verkaufskanal gelöscht** oder **Der Verkaufskanal konnte nicht gelöscht werden**.

## Verwandte Themen

<CardGroup cols={2}>
  <Card title="Verkaufskanäle verbinden" icon="store" href="/docs/de/tutorials/connect-order-channels">
    Erstelle den Kanal aus dem Katalog und öffne dann Bestellungen.
  </Card>

  <Card title="Referenz zu eigenen Kanälen" icon="webhook" href="/docs/de/order-channels/custom-channels">
    Vollständige Nutzdaten, Stornierung, Ping und REST-Beispiele.
  </Card>

  <Card title="Einstellungen für Verkaufskanäle" icon="settings-2" href="/docs/de/how-to/order-channel-settings">
    Die Seite Verkaufskanäle, Marken und übrig gebliebene Kanäle.
  </Card>

  <Card title="API-Token erstellen" icon="key" href="/docs/de/how-to/create-an-api-token">
    Ein Token für POST /orgs/\{orgId}/orders statt signierter Pushes.
  </Card>
</CardGroup>


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