> ## 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 voor eigen verkoopkanalen

> Maak een eigen verkoopkanaal aan, kopieer de ingest-URL en het ondertekeningsgeheim, stel de schakelaars onder Werking in en stuur een ondertekende bestelling vanuit je eigen webshop of ERP.

Met een eigen kanaal kan je eigen webshop, ERP of magazijnsysteem bestellingen rechtstreeks naar Zippendo sturen, wanneer er geen kant-en-klare koppeling voor bestaat. Deze pagina behandelt elke knop in het aanmaakvenster en de kanaalinstellingen, en hoe een ontwikkelaar een bestelling verstuurt. De route klik voor klik is [Verkoopkanalen koppelen](/docs/nl/tutorials/connect-order-channels). De volledige referentie van de payload is [Eigen kanalen](/docs/nl/order-channels/custom-channels).

Klik in de zijbalk op **Verkoopkanalen** en dan op het tabblad **Catalogus**. De kaart **Eigen kanaal** zegt **Koppel je eigen webshop of ERP-systeem**. De knop is **Kanaal aanmaken**.

<Frame caption="De kaart Eigen kanaal in de catalogus">
  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/01-available-integrations-light.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=82c9e8f4f7bd2c7154bbee9d90ffa55f" alt="Catalogus van verkoopkanalen met de kaart Eigen kanaal en de knop Kanaal aanmaken" className="block dark:hidden" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/01-available-integrations-light.png" />

  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/01-available-integrations-dark.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=ee7c027f078263c6b0421dbbc2bee77b" alt="Catalogus van verkoopkanalen met de kaart Eigen kanaal en de knop Kanaal aanmaken" className="hidden dark:block" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/01-available-integrations-dark.png" />
</Frame>

## Het kanaal aanmaken

Klik op **Kanaal aanmaken**. Het venster **Eigen kanaal aanmaken** opent: **Een verkoopkanaal voor je eigen webshop of ERP-systeem.**

<Frame caption="Eigen kanaal aanmaken: vul een Naam van het kanaal in">
  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/02-create-modal-light.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=1ae93a44aa25fa0b8ecfcbda3d0aa6db" alt="Venster Eigen kanaal aanmaken met Naam van het kanaal ingevuld als My webshop, Kanaal aanmaken en Annuleren" className="block dark:hidden" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/02-create-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/02-create-modal-dark.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=f6b28a0d6459cd9c438f1ac407a3b06a" alt="Venster Eigen kanaal aanmaken met Naam van het kanaal ingevuld als My webshop, Kanaal aanmaken en Annuleren" className="hidden dark:block" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/02-create-modal-dark.png" />
</Frame>

| Veld | Verplicht | Wat je invult |
| - | - | - |
| **Naam van het kanaal** | Ja | Een naam die je herkent, bijvoorbeeld "My webshop". **Kanaal aanmaken** blijft inactief totdat je er een invult. |
| **Merk** | Nee | Alleen getoond als je organisatie merken heeft. **Bestellingen uit dit kanaal horen bij dit merk.** |

Klik op **Kanaal aanmaken** (de knop toont **Aanmaken…**). Je ziet **Verkoopkanaal aangemaakt** en Zippendo opent de instellingen van het nieuwe kanaal. Zie je **Kan het verkoopkanaal niet aanmaken**, probeer het dan opnieuw. **Annuleren** sluit het venster.

## Bestellingen ontvangen

De instellingenpagina heeft bovenaan de naam van het kanaal en **Je eigen integratie: stuur bestellingen naar de ingest-URL of gebruik de API en de SDK's.** **Documentatie bekijken** opent de referentie [Eigen kanalen](/docs/nl/order-channels/custom-channels).

<Frame caption="Bestellingen ontvangen: de Ingest-URL en Geheim genereren">
  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/03-order-ingestion-light.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=4ac6aed128af490f8a9167d0d61f5e7f" alt="Kaart Bestellingen ontvangen met de Ingest-URL, Kopiëren en Geheim genereren" className="block dark:hidden" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/03-order-ingestion-light.png" />

  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/03-order-ingestion-dark.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=9a16223a811b17afc57499f7b438db4b" alt="Kaart Bestellingen ontvangen met de Ingest-URL, Kopiëren en Geheim genereren" className="hidden dark:block" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/03-order-ingestion-dark.png" />
</Frame>

De kaart **Bestellingen ontvangen**: **Je systeem stuurt ondertekende bestellingen naar de ingest-URL hieronder. Onderteken de onbewerkte body van elk verzoek met HMAC-SHA256 en het ondertekeningsgeheim.**

| Knop | Wat het doet |
| - | - |
| **Ingest-URL** | Het adres waarnaar je systeem bestellingen stuurt, in de vorm `https://api.zippendo.com/webhooks/order-channels/<channel id>`. Kopieer het van je eigen kanaal. **Kopiëren** toont **Gekopieerd naar het klembord.**, of **Kan niet naar het klembord kopiëren.** |
| **Geheim genereren** | Maakt het ondertekeningsgeheim aan. Toont **Genereren…**, daarna **Ondertekeningsgeheim gegenereerd.** of **Kan het ondertekeningsgeheim niet genereren.** |
| **Geheim vervangen** | Vervangt een bestaand geheim. Zippendo vraagt je te bevestigen: je systeem wordt geweigerd totdat het met het nieuwe geheim ondertekent. |
| **Intrekken** | Schakelt het geheim uit. Elke bestelling die je systeem verstuurt wordt geweigerd totdat je een nieuw geheim genereert. Toont **Ondertekeningsgeheim ingetrokken.** of **Kan het ondertekeningsgeheim niet intrekken.** |
| **Actief ondertekeningsgeheim aangemaakt op** | Gevolgd door de datum en tijd waarop het huidige geheim is aangemaakt. |

Het kanaal accepteert pas bestellingen zodra er een ondertekeningsgeheim bestaat. Er is geen aparte schakelaar om het ontvangen van bestellingen aan te zetten.

Na **Geheim genereren** of **Geheim vervangen** wordt het geheim één keer getoond:

<Frame caption="Kopieer het ondertekeningsgeheim nu. Het wordt maar één keer getoond">
  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/04-signing-secret-light.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=212231739ed05a9b1bccdb1936b77a0c" alt="Bestellingen ontvangen met het eenmalige ondertekeningsgeheim, Kopiëren, Intrekken en Geheim vervangen" className="block dark:hidden" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/04-signing-secret-light.png" />

  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/04-signing-secret-dark.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=5353c5ce2c1b2a45140fe310e5b6cefe" alt="Bestellingen ontvangen met het eenmalige ondertekeningsgeheim, Kopiëren, Intrekken en Geheim vervangen" className="hidden dark:block" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/04-signing-secret-dark.png" />
</Frame>

<Warning>
  **Kopieer het geheim nu. Het wordt maar één keer getoond. Als je het later vervangt, werkt het huidige geheim meteen niet meer.** Het geheim begint met `zwhs_`. Bewaar het in de configuratie van je systeem.
</Warning>

## Een bestelling versturen

Doe een `POST` naar de **Ingest-URL** met twee headers:

| Header | Waarde |
| - | - |
| `X-Zippendo-Topic` | `order.created`, `order.updated`, `order.cancelled` of `ping` |
| `X-Zippendo-Signature` | HMAC-SHA256 van de **onbewerkte body van het verzoek**, hexadecimaal gecodeerd, met het ondertekeningsgeheim als sleutel |

`order.created` en `order.updated` maken de bestelling allebei aan of werken hem bij op basis van zijn `externalId`. De body van `order.cancelled` is `{ "externalId": "…" }`. `ping` geeft `200 { "received": true }` terug zonder iets te wijzigen.

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

Verplichte velden in de payload: `externalId`, `orderNumber` en `orderLines` (minstens één regel met `name` en `quantity`). Optioneel: `customerName`, `customerEmail`, `shippingAddress`, `subtotalAmount`, `totalAmount`, `currency`, `notes`, `shippingMethodTitle` en `serviceCode`. Volledige veldentabel: [Eigen kanalen](/docs/nl/order-channels/custom-channels).

| Status | Betekenis |
| - | - |
| `200` | Geaccepteerd en verwerkt |
| `400` | Ontbrekende of onbekende topic, een payload die de validatie niet doorstond, of **Kanaal ingeschakeld** staat uit |
| `401` | Handtekeningcontrole mislukt: onjuist geheim, ontbrekende header, of er is nog geen geheim gegenereerd |
| `404` | Onbekend kanaal |
| `429` | Te veel bestellingen tegelijk. Probeer opnieuw na de vertraging van `Retry-After` |
| `5xx` | Verwerking mislukt. Probeer opnieuw: dezelfde bestelling nog eens versturen is veilig |

Liever verzoek en antwoord? Maak bestellingen aan met `POST /orgs/{orgId}/orders`, met `orderChannelId`, en een [API-token](/docs/nl/how-to/create-an-api-token). Een tweede bestelling met dezelfde `externalId` op hetzelfde kanaal geeft `409 ORDER_EXISTS` terug.

Om trackingnummers en statuswijzigingen terug te krijgen abonneer je je op de [webhooks](/docs/nl/how-to/webhooks) van je organisatie (`shipment.dispatched`, `tracking.updated`). Een eigen kanaal heeft geen eigen track & trace-callback en geen scherm voor het koppelen van verzendmethoden.

Een bestelling die je verstuurt verschijnt onder **Bestellingen**. De status kan **Fout** zijn wanneer Zippendo de bestelling heeft geïmporteerd maar geen zending kon aanmaken die klaar is om te verzenden, bijvoorbeeld omdat er geen verzendregel overeenkwam of het adres onvolledig is. De bestelling hoort nog steeds bij het kanaal.

<Frame caption="Een bestelling die je systeem heeft verstuurd op de pagina Bestellingen">
  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/08-ingested-order-light.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=6f398ac8eb5af216c4424f47443d2646" alt="Lijst Bestellingen met een bestelling die via een eigen kanaal is binnengekomen" className="block dark:hidden" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/08-ingested-order-light.png" />

  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/08-ingested-order-dark.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=d877bb9179324054e3fe3f68f11532df" alt="Lijst Bestellingen met een bestelling die via een eigen kanaal is binnengekomen" className="hidden dark:block" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/08-ingested-order-dark.png" />
</Frame>

## Werking

<Frame caption="Werking: Kanaal ingeschakeld, Zendingen automatisch verzenden en Standaard afzenderadres">
  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/05-operations-light.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=3560cb88cceee5ed9108fa8f06e8f5b8" alt="Kaart Werking met Kanaal ingeschakeld aan, Zendingen automatisch verzenden, Standaard afzenderadres, Laatste bestelling ontvangen en Wijzigingen opslaan" className="block dark:hidden" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/05-operations-light.png" />

  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/05-operations-dark.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=d30d530ea7e234c6a885b2a60b31a323" alt="Kaart Werking met Kanaal ingeschakeld aan, Zendingen automatisch verzenden, Standaard afzenderadres, Laatste bestelling ontvangen en Wijzigingen opslaan" className="hidden dark:block" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/05-operations-dark.png" />
</Frame>

| Instelling | Opgeslagen | Wat het doet |
| - | - | - |
| **Kanaal ingeschakeld** | Direct | Schakelt het kanaal in of uit. **Staat dit uit, dan weigert Zippendo elke bestelling voor dit kanaal.** |
| **Zendingen automatisch verzenden** | Met **Wijzigingen opslaan** | Verzendt de zending automatisch naar de vervoerder wanneer een binnenkomende bestelling overeenkomt met een verzendregel. Standaard uit. |
| **Merk** | Direct | **Bestellingen uit dit kanaal horen bij dit merk.** De lijst verschijnt alleen als je organisatie merken heeft. |
| **Standaard afzenderadres** | Met **Wijzigingen opslaan** | De afzender voor zendingen wanneer geen verzendregel overeenkomt met de bestelling. Is er nog geen opgeslagen, dan staat in de lijst **Nog geen adressen**. |
| **Laatste bestelling ontvangen** | Alleen lezen | Wanneer het kanaal voor het laatst een bestelling ontving, of **Nooit**. |

**Wijzigingen opslaan** (**Opslaan…**) slaat **Zendingen automatisch verzenden** en **Standaard afzenderadres** op. Je ziet **Verkoopkanaal bijgewerkt**, of **Kan het verkoopkanaal niet bijwerken**.

## Een kanaal uitschakelen

Zet **Kanaal ingeschakeld** uit. Op het tabblad **Gekoppeld** zegt de rij van het kanaal in de kaart **Eigen kanaal** dan **Uitgeschakeld**. Eigen kanalen blijven altijd op het tabblad **Gekoppeld** staan en worden nooit overgebleven kanalen.

<Frame caption="Een eigen kanaal dat is uitgeschakeld">
  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/06-disabled-card-light.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=dee7618047462dd8a771ec5a17bc1afd" alt="Pagina Verkoopkanalen met een eigen kanaal dat als Uitgeschakeld is gemarkeerd" className="block dark:hidden" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/06-disabled-card-light.png" />

  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/06-disabled-card-dark.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=3e15b74477b79d2f4d24fccd1c0c425a" alt="Pagina Verkoopkanalen met een eigen kanaal dat als Uitgeschakeld is gemarkeerd" className="hidden dark:block" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/06-disabled-card-dark.png" />
</Frame>

Overgebleven Shopify- of WooCommerce-kanalen, gemarkeerd met **Geen actieve koppeling** en **Ontkoppeld**, zijn iets anders. Zie [Instellingen van verkoopkanalen](/docs/nl/how-to/order-channel-settings).

## Verwijderen

Zoek onder **Gevarenzone** **Kanaal verwijderen**: **Verwijder dit eigen kanaal. Je integratie kan er dan geen bestellingen meer naartoe sturen.**

<Frame caption="Kanaal verwijderen onder Gevarenzone">
  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/07-danger-zone-light.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=f5153b5d21eacf3c6801f6da850c10a5" alt="Gevarenzone met Kanaal verwijderen en de knop Verwijderen" className="block dark:hidden" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/07-danger-zone-light.png" />

  <img src="https://mintcdn.com/zippendo/rHO_KsHyFOKxfIiU/images/nl/how-to/custom-channel-api/07-danger-zone-dark.png?fit=max&auto=format&n=rHO_KsHyFOKxfIiU&q=85&s=5a3ce03670488ef67561882f44b8e173" alt="Gevarenzone met Kanaal verwijderen en de knop Verwijderen" className="hidden dark:block" width="2880" height="1800" data-path="images/nl/how-to/custom-channel-api/07-danger-zone-dark.png" />
</Frame>

Klik op **Verwijderen** en bevestig: **Dit eigen kanaal verwijderen? De ingest-URL accepteert meteen geen bestellingen meer.** Je ziet **Verkoopkanaal verwijderd**, of **Kan het verkoopkanaal niet verwijderen**.

## Gerelateerd

<CardGroup cols={2}>
  <Card title="Verkoopkanalen koppelen" icon="store" href="/docs/nl/tutorials/connect-order-channels">
    Maak het kanaal aan vanuit de catalogus en open daarna Bestellingen.
  </Card>

  <Card title="Referentie van eigen kanalen" icon="webhook" href="/docs/nl/order-channels/custom-channels">
    Volledige payload, annuleren, ping en REST-voorbeelden.
  </Card>

  <Card title="Instellingen van verkoopkanalen" icon="settings-2" href="/docs/nl/how-to/order-channel-settings">
    De pagina Verkoopkanalen, merken en overgebleven kanalen.
  </Card>

  <Card title="Een API-token aanmaken" icon="key" href="/docs/nl/how-to/create-an-api-token">
    Een token voor POST /orgs/\{orgId}/orders in plaats van ondertekende pushes.
  </Card>
</CardGroup>


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