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

# Kundblocklista

> Blockera en kund för att stoppa framtida kassor, avsluta deras aktiva prenumerationer och göra deras Customer Portal skrivskyddad. Hantera blocklistan från Settings eller API:et.

<Info>
  Customer Blocklist hindrar en känd bedragare från att handla av dig igen. En blockerad kund kan inte betala, förlorar sina aktiva prenumerationer och kan visa men inte ändra något i [Customer Portal](/features/customer-portal). Hantera den från **Settings → Blocklist** eller via Blocklist API.
</Info>

<Frame caption="The Blocklist tab under Settings">
  <img src="https://mintcdn.com/dodopayments/c1t35qHSH45TR4GO/images/blocklist/blocklist-settings.png?fit=max&auto=format&n=c1t35qHSH45TR4GO&q=85&s=771eb4a5654fbd22e6a5110cfb1a2e9d" alt="Inställningssida för blocklistan som visar det totala antalet blockerade kunder, en tabell med blockerade poster med kolumnerna identifierare, blockerad av och blockerad den, samt en knapp för att lägga till i blocklistan" style={{ maxHeight: '500px', width: 'auto' }} width="2358" height="1554" data-path="images/blocklist/blocklist-settings.png" />
</Frame>

## Vad händer när du blockerar en kund

| Område                        | Effekt                                                                                                                                                                                                                                                                |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Checkout**                  | Alla betalningsförsök från den blockerade e-postadressen nekas: payment links, checkout sessions och payments eller subscriptions som skapas via API:et.                                                                                                              |
| **Aktiva prenumerationer**    | Prenumerationer med statusen `pending`, `active`, `on_hold` eller `paused` avslutas med orsaken `cancelled_by_merchant`. Den vanliga webhooken `subscription.cancelled` utlöses för varje prenumeration.                                                              |
| **Förnyelser och nya försök** | Automatiska förnyelser och [payment retries](/features/recovery/payment-retries) hoppar över en blockerad kund, så ingen ytterligare debitering görs även om en avslutning fortfarande väntar.                                                                        |
| **Manuellt nytt försök**      | Ett [manual retry](/features/recovery/manual-retry) av en blockerad kunds betalning nekas.                                                                                                                                                                            |
| **Customer Portal**           | Kunden kan fortfarande logga in och visa fakturor, prenumerationer och licensnycklar, men kan inte avsluta, pausa eller återuppta en prenumeration, ändra plan eller uppdatera en betalningsmetod. Det är fortfarande tillåtet att ta bort en sparad betalningsmetod. |

<Note>
  Blockering återbetalar inte tidigare betalningar och påverkar inte öppna tvister. Utfärda eventuella återbetalningar separat från sidan [Refunds](/features/transactions/refunds).
</Note>

## Så matchar blockeringen kunder

Du kan blockera efter **customer ID** eller **email**. Oavsett vilket baseras blockeringen på kundens e-postadress, inte på kundposten:

* **Alla poster med den e-postadressen omfattas.** Checkout kan skapa en ny kundpost för en återkommande e-postadress, så en blockering av ett enda customer ID skulle kunna kringgås. Det går inte att kringgå en blockering av e-postadressen.
* **Alias omfattas.** E-postadresser jämförs med gemener och med `+alias` borttaget, så `buyer+promo@example.com` och `Buyer@example.com` räknas som samma kund. Punkter i adressen behålls som de är.
* **Begränsad till ditt företag.** En blockering gäller endast ditt företag. Samma e-postadress kan fortfarande handla från andra företag på Dodo Payments.
* **E-postadressen måste tillhöra en befintlig kund.** Du kan inte blockera en e-postadress som aldrig har genomfört en checkout hos dig, och en kundpost utan e-postadress kan inte blockeras.

## Blockera en kund

<Tabs>
  <Tab title="From Settings">
    <Steps>
      <Step title="Open the Blocklist">
        Gå till **Settings → Blocklist** i din dashboard.
      </Step>

      <Step title="Add to Blocklist">
        Klicka på **Add to Blocklist** och ange sedan kundens e-postadress eller customer ID. Lägg till en anledning så att ditt team senare kan se varför blockeringen lades till.
      </Step>

      <Step title="Confirm">
        Bekräfta blockeringen. Kundens aktiva prenumerationer avslutas omedelbart och posten visas i tabellen **Blocked entries**.
      </Step>
    </Steps>
  </Tab>

  <Tab title="From the customer's page">
    <Steps>
      <Step title="Open the customer">
        Gå till **Sales → Customers** och öppna kunden du vill blockera.
      </Step>

      <Step title="Block the customer">
        Klicka på **Block Customer**. När blockeringen har aktiverats visas märket **Blocked** bredvid kundens namn.
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Hantera blockerade kunder

Sidan **Blocklist** visar alla aktiva blockeringar:

* **Total Customers Blocked**: Hur många kunder som för närvarande är blockerade.
* **Blocked entries**: En rad per blockering, med den **Identifier** du angav (e-postadress eller customer ID), **Blocked By** (teammedlemmen som lade till blockeringen) och **Blocked On**.
* **Search Identifier** och **Filters**: Hitta en post efter e-postadress eller customer ID, eller filtrera efter vem som blockerade den och när.
* **Action**: Hantera posten, inklusive att häva blockeringen av kunden.

### Den blockerade kundens sida

<Frame caption="A blocked customer's details page">
  <img src="https://mintcdn.com/dodopayments/c1t35qHSH45TR4GO/images/blocklist/blocked-customer-details.png?fit=max&auto=format&n=c1t35qHSH45TR4GO&q=85&s=83e1225a8e71c003d2bf660f0eea9c08" alt="Sidan Customer Information för en blockerad kund som visar märket Blocked, en knapp för att häva blockeringen av kunden, en Activity Log med en anteckning och händelsen Added to blocklist samt en panel med Reference IDs och kundens customer ID" style={{ maxHeight: '500px', width: 'auto' }} width="2366" height="1554" data-path="images/blocklist/blocked-customer-details.png" />
</Frame>

Öppna en blockerad kund från **Sales → Customers** eller från sidan Blocklist för att se:

* Märket **Blocked** bredvid kundens namn och en knapp för **Unblock Customer**.
* **Activity Log**: När kunden lades till i blocklistan, orsaken och eventuella anteckningar som ditt team har lagt till sedan dess. Klicka på **Add Note** för att dokumentera ny information, till exempel resultatet av ett chargeback. Anteckningar kan redigeras senare.
* **Reference IDs**: Det customer ID som är kopplat till blockeringen och som kan kopieras.

## Häva blockeringen av en kund

Klicka på **Unblock Customer** på kundens sida eller använd åtgärdsmenyn på sidan Blocklist.

* Checkout- och Customer Portal-ändringar återställs omedelbart.
* **Avslutade prenumerationer återaktiveras inte.** Kunden måste köpa igen.
* Posten behålls som en granskningspost tillsammans med sina anteckningar, men visas inte längre i den aktiva listan.
* Du kan blockera samma kund igen senare. Då skapas en ny post.

## Vad kunden ser

En blockerad kund får aldrig veta att hen har blockerats.

* **I checkout** misslyckas betalningen med ett generiskt nekande: "This payment cannot be processed." API:et returnerar HTTP `403` med felkoden `PAYMENT_NOT_PERMITTED`, som inte anger någon orsak. Den verkliga orsaken skrivs endast till Dodo Payments loggar.
* **I Customer Portal** är allt synligt, men alla åtgärder är inaktiverade. En blockerad skrivåtgärd returnerar `PORTAL_ACTION_NOT_PERMITTED` med meddelandet "This action is not available." Portalprofilen innehåller `read_only: true` så att en anpassad portalintegration kan inaktivera sina egna kontroller. Portalen visar aldrig blocklistposten eller dess anteckningar.

<Warning>
  Om du renderar checkout- eller portal errors i din egen produkt ska du behålla detta beteende. Visa ett generiskt meddelande för `PAYMENT_NOT_PERMITTED` och `PORTAL_ACTION_NOT_PERMITTED`. Om blockeringen avslöjas får en bedragare veta att hen ska försöka med en annan e-postadress.
</Warning>

## Använda API:et

Med Blocklist API kan du blockera från dina egna verktyg, till exempel när ett chargeback kommer in. Det kräver din hemliga [API key](/api-reference/introduction). Alla nycklar kan lista poster och läsa anteckningar. En nyckel med aktiverad **write access** kan blockera, häva blockeringar och hantera anteckningar. Dashboarden använder samma uppdelning för teamroller: rollen **Viewer** kan läsa listan och rollen **Editor** kan göra ändringar.

| Method   | Endpoint                                          | Purpose                                                  |
| -------- | ------------------------------------------------- | -------------------------------------------------------- |
| `GET`    | `/blocklist/customers`                            | Lista blockerade kunder med filter och ett `total` antal |
| `POST`   | `/blocklist/customers`                            | Blockera en kund efter customer ID eller e-postadress    |
| `GET`    | `/blocklist/customers/{entry_id}`                 | Hämta en post tillsammans med dess anteckningar          |
| `DELETE` | `/blocklist/customers/{entry_id}`                 | Häva blockeringen av en kund                             |
| `POST`   | `/blocklist/customers/{entry_id}/notes`           | Lägga till en anteckning                                 |
| `PATCH`  | `/blocklist/customers/{entry_id}/notes/{note_id}` | Uppdatera en anteckning                                  |

### Blockera en kund

Skicka antingen `customer_id` eller `email` på toppnivå i body. `reason` är valfritt och visas på postens sida.

<CodeGroup>
  ```typescript Node.js theme={null}
  import DodoPayments from 'dodopayments';

  const client = new DodoPayments({
    bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  });

  // Block by customer ID
  const entry = await client.blocklist.customers.create({
    customer_id: 'cus_0NmichXWP8JYBB9Dw1Unj',
    reason: 'Chargeback on pay_0NmichXuYoNoapmr',
  });

  // Or block by email
  const byEmail = await client.blocklist.customers.create({
    email: 'buyer@example.com',
    reason: 'Repeated refund abuse',
  });

  console.log(entry.id, entry.cancelled_subscription_ids);
  ```

  ```python Python theme={null}
  import os
  from dodopayments import DodoPayments

  client = DodoPayments(bearer_token=os.environ["DODO_PAYMENTS_API_KEY"])

  # Block by customer ID
  entry = client.blocklist.customers.create(
      customer_id="cus_0NmichXWP8JYBB9Dw1Unj",
      reason="Chargeback on pay_0NmichXuYoNoapmr",
  )

  # Or block by email
  by_email = client.blocklist.customers.create(
      email="buyer@example.com",
      reason="Repeated refund abuse",
  )

  print(entry.id, entry.cancelled_subscription_ids)
  ```

  ```bash cURL theme={null}
  curl -X POST https://live.dodopayments.com/blocklist/customers \
    -H "Authorization: Bearer $DODO_PAYMENTS_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "customer_id": "cus_0NmichXWP8JYBB9Dw1Unj",
      "reason": "Chargeback on pay_0NmichXuYoNoapmr"
    }'
  ```
</CodeGroup>

```json Response theme={null}
{
  "id": "bcu_7Hq2mV9kRt4LxYw3Pz",
  "customer_id": "cus_0NmichXWP8JYBB9Dw1Unj",
  "customer_name": "wow guy",
  "customer_email": "wowguy@example.com",
  "identifier": "cus_0NmichXWP8JYBB9Dw1Unj",
  "reason": "Chargeback on pay_0NmichXuYoNoapmr",
  "source": "api",
  "blocked_by_email": null,
  "created_at": "2026-09-02T12:09:41Z",
  "unblocked_at": null,
  "cancelled_subscription_ids": ["sub_3Fk8pW2nQs6MzXc1"],
  "subscriptions_swept": true
}
```

| Field                        | Description                                                                                                                                       |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `identifier`                 | Det customer ID eller den e-postadress du skickade.                                                                                               |
| `source`                     | Var blockeringen kom från: `blocklist_page`, `customer_page`, `payment_page`, `dispute_page` eller `api`. En API-nyckel registrerar alltid `api`. |
| `blocked_by_email`           | Dashboard-användaren som lade till blockeringen. `null` för en API-nyckel.                                                                        |
| `cancelled_subscription_ids` | Prenumerationer som detta anrop avslutade.                                                                                                        |
| `remaining_subscription_ids` | Prenumerationer som fortfarande är aktiva eftersom en avslutning misslyckades eller anropet nådde gränsen på 25 avslutningar.                     |
| `subscriptions_swept`        | `false` när aktiva prenumerationer återstår. Upprepa anropet tills det är `true`. Själva blockeringen gäller redan.                               |

<Note>
  Att blockera en kund som redan är blockerad returnerar HTTP `409` med `CUSTOMER_ALREADY_BLOCKED`, såvida prenumerationer fortfarande väntar på att avslutas. I så fall fortsätter anropet avslutningen i stället.
</Note>

### Kontrollera om en kund är blockerad

[Get Customer Detail](/api-reference/customers/get-customers-1) returnerar två extra fält: `blocked_at`, tidpunkten då den aktiva blockeringen lades till (`null` när kunden inte är blockerad), och `blocklist_entry_id`, posten bakom den. Endpointen [List Customers](/api-reference/customers/get-customers) lämnar båda tomma.

### Häva blockeringen av en kund

<CodeGroup>
  ```typescript Node.js theme={null}
  await client.blocklist.customers.delete('bcu_7Hq2mV9kRt4LxYw3Pz');
  ```

  ```python Python theme={null}
  client.blocklist.customers.delete("bcu_7Hq2mV9kRt4LxYw3Pz")
  ```

  ```bash cURL theme={null}
  curl -X DELETE https://live.dodopayments.com/blocklist/customers/bcu_7Hq2mV9kRt4LxYw3Pz \
    -H "Authorization: Bearer $DODO_PAYMENTS_API_KEY"
  ```
</CodeGroup>

Endpointen returnerar HTTP `204` vid lyckat resultat. Att häva blockeringen återställer checkout och portalskrivningar, men återaktiverar ingen prenumeration.

## Bästa praxis

* **Dokumentera orsaken.** En kort anledning till blockeringen, tillsammans med anteckningar om sådant som händer senare, ger ditt supportteam hela bilden utan att dashboarden behöver lämnas.
* **Blockera efter ett chargeback.** Öppna kunden från tvisten eller betalningen och blockera kunden där, eller automatisera det från webhooken `dispute.opened` med `POST /blocklist/customers`. Se [Disputes](/features/transactions/disputes).
* **Kontrollera `subscriptions_swept`.** När du blockerar via API:et ska du upprepa anropet tills svaret rapporterar `true`, så att ingen aktiv prenumeration lämnas kvar.
* **Återbetala separat.** En blockering stoppar endast framtida köp. Om du är skyldig kunden pengar ska du återbetala betalningen som vanligt.
* **Granska listan.** Häv blockeringen för kunder vars problem har lösts. Att häva en blockering sker omedelbart och historiken behålls.

## Relaterat

<CardGroup cols={2}>
  <Card title="Customer Management" icon="user-group" href="/features/customers">
    Hitta en kund, öppna detaljsidan och hantera kundens prenumerationer.
  </Card>

  <Card title="Customer Portal" icon="id-card" href="/features/customer-portal">
    Vad en blockerad kund kan och inte kan göra i portalen.
  </Card>

  <Card title="Disputes" icon="circle-exclamation" href="/features/transactions/disputes">
    Svara på chargebacks och avgör när en blockering är motiverad.
  </Card>

  <Card title="Error Codes" icon="triangle-exclamation" href="/api-reference/error-codes">
    Vad `PAYMENT_NOT_PERMITTED` och `PORTAL_ACTION_NOT_PERMITTED` betyder.
  </Card>
</CardGroup>
