> ## 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.

# Lokala Priser

> Sätt ditt eget fasta pris för varje valuta eller land istället för att låta växelkurser bestämma. Debiterar rundade, marknadsanpassade priser och kör kampanjer per land.

## Vad är Lokala Priser?

Varje produkt har ett baspris i en basvaluta. Lokala Priser låter dig åsidosätta det baspriset med **fasta priser du ställer in per valuta eller per land**. Aktivera det genom att ställa in en `pricing_mode` på produkten, och bifoga sedan en regel per marknad.

Det är en av tre oberoende hävstångar för internationell prissättning, var och en löser ett annat problem:

| Mekanism                                          | Vad det gör                                                    | Numret kunden ser                          |
| :------------------------------------------------ | :------------------------------------------------------------- | :----------------------------------------- |
| **Lokaliserad prissättning**                      | Ett fast pris du ställer in per valuta eller land              | Exakt det belopp du ställer in             |
| [**Adaptiv valuta**](/features/adaptive-currency) | Konverterar automatiskt ditt baspris med aktuella valutakurser | Baspris konverterat till aktuell växelkurs |
| [**Rabattkoder**](/features/discount-codes)       | En procentuell minskning av baspriset                          | Baspris minus rabatten                     |

<Info>
  Lokala Priser och Adaptiv Valuta fungerar tillsammans. När ingen lokal regel matchar faller produkten tillbaka till sitt baspris — debiteras direkt om kunden redan är i din basvaluta, eller konverteras via Adaptiv Valuta om inte.
</Info>

***

## Användningsområden

<CardGroup cols={2}>
  <Card title="Purchasing Power Parity (PPP)" icon="earth-asia" href="/features/purchasing-power-parity">
    Ta ut mindre på priskänsliga marknader utan att rabattera din hemmamarknad. En `by_country` regel låter en \$20 basprodukt säljas för **₹999 i Indien** — anpassad till lokal köpkraft, inte en rak FX-konvertering. Det rekommenderade, inhemska sättet att köra PPP.
  </Card>

  <Card title="Charm Pricing" icon="tag">
    En live FX-konvertering av \$19.99 landar på ett obekvämt nummer som €18.43. En `by_currency` regel ställer in det rena, psykologiskt anpassade priset kunder förväntar sig — **€9.99**, **¥1000**, **₹499** — exakt som skrivet.
  </Card>

  <Card title="Reversible Market-Entry Promotions" icon="rocket">
    Lanserar i ett nytt land? Lägg till en `by_country` regel med ett introduktionspris, sedan **arkivera det** när kampanjen slutar för att falla tillbaka till bas/adaptiv prissättning. Regler är arkiverade, aldrig raderade, så du håller en ren uppdatering av vad som var live och när.
  </Card>

  <Card title="Competitive Price-Matching" icon="bullseye">
    Fäst en enda marknad för att matcha en lokal konkurrent. En `by_country` regel för **£9.00 i Storbritannien** håller det exakta priset oavsett hur GBP/USD-kursen rör sig.
  </Card>
</CardGroup>

***

## Kärnkoncept

* **Prissättningslägen** — En produkt är i exakt ett läge åt gången, inställt av sin `pricing_mode`:
  * `by_currency`: ett pris per valuta, oavsett land. Alla som betalar i EUR ser €9.99.
  * `by_country`: ett pris specifikt för ett land (₹999 i Indien), även när flera länder delar en valuta.
* **Fasta belopp, i den minsta enheten** — En regelns `amount` är ett heltal i valutans minsta enhet, samma som överallt annars i API:et: `99900` är ₹999.00, `999` är €9.99. Det är ett pris du sätter, aldrig ett omräknat värde.
* **När ingen regel matchar** — Produkten bibehåller sitt befintliga beteende: kunder i din basvaluta betalar baspriset direkt; alla andra får det konverterat via [Adaptiv Valuta](/features/adaptive-currency).
* **Avgifter är inkluderade när en regel matchar** — Kunden betalar **exakt** det belopp du ställer in. [Adaptiv Valuta](/features/adaptive-currency#choose-who-bears-the-fee) FX-avgiften absorberas av dig (behandlas som avgifter inkluderade för den transaktionen) snarare än läggas på, så ditt uppgivna lokala pris alltid är det pris som debiteras.

***

## Installera i Dashboard

<Steps>
  <Step title="Open the product form">
    Gå till **Produkter** i ditt Handlardashboard och skapa en produkt (eller öppna en befintlig för att redigera). Ställ in bas**Pris** och valuta som vanligt.
  </Step>

  <Step title="Enable Localized Pricing and choose a mode">
    I **Prissättnings**sektionen, kryssa i **Lokala Priser**, välj sedan **Per Land** eller **Per Valuta**.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/hpHKp5MybOFgIhM2/images/localized-pricing/pricing-section.png?fit=max&auto=format&n=hpHKp5MybOFgIhM2&q=85&s=933fc68155db9639d36d624c0f84dfee" alt="Localized Pricing enabled on the product form with By Country selected" style={{ maxHeight: '450px', width: 'auto' }} width="850" height="580" data-path="images/localized-pricing/pricing-section.png" />
    </Frame>
  </Step>

  <Step title="Add a price for each market">
    Klicka på **Lägg till Land Pris** eller **Lägg till Valuta Pris**, fyll i panelen **Lokala priser**, och klicka på **Lägg till**. Varje marknad du lägger till visas i överskrivningstabellen, där du kan redigera eller ta bort det senare.

    <Tabs>
      <Tab title="By Country">
        Välj ett land, välj valutan och ange beloppet (till exempel ₹999 för Indien), klicka sedan på **Lägg till**.

        <Frame>
          <img src="https://mintcdn.com/dodopayments/hpHKp5MybOFgIhM2/images/localized-pricing/add-country-override.png?fit=max&auto=format&n=hpHKp5MybOFgIhM2&q=85&s=62ae6975abd9c023655126a02fab611d" alt="Adding a 999 INR override for India" style={{ maxHeight: '360px', width: 'auto' }} width="1052" height="660" data-path="images/localized-pricing/add-country-override.png" />
        </Frame>

        Landet visas nu i tabellen **Land överskridningar**, där du kan redigera eller ta bort det.

        <Frame>
          <img src="https://mintcdn.com/dodopayments/hpHKp5MybOFgIhM2/images/localized-pricing/country-overrides-table.png?fit=max&auto=format&n=hpHKp5MybOFgIhM2&q=85&s=1ef8ef7f6368448896015febccd11b58" alt="Country overrides table showing India at 999 INR" style={{ maxHeight: '360px', width: 'auto' }} width="526" height="430" data-path="images/localized-pricing/country-overrides-table.png" />
        </Frame>
      </Tab>

      <Tab title="By Currency">
        Välj en valuta och ange beloppet (till exempel €9.99 för EUR), klicka sedan på **Lägg till**.

        <Frame>
          <img src="https://mintcdn.com/dodopayments/hpHKp5MybOFgIhM2/images/localized-pricing/add-currency-override.png?fit=max&auto=format&n=hpHKp5MybOFgIhM2&q=85&s=8f4b14e3c0ba37b2162cc45fc7b199eb" alt="Adding a 9.99 EUR override" style={{ maxHeight: '360px', width: 'auto' }} width="1052" height="640" data-path="images/localized-pricing/add-currency-override.png" />
        </Frame>

        Valutan visas nu i tabellen **Valuta översikter**, där du kan redigera eller ta bort det.

        <Frame>
          <img src="https://mintcdn.com/dodopayments/hpHKp5MybOFgIhM2/images/localized-pricing/currency-overrides-table.png?fit=max&auto=format&n=hpHKp5MybOFgIhM2&q=85&s=ed713ac592444f1685f2fa75de2e8b3f" alt="Currency overrides table showing EUR at 9.99" style={{ maxHeight: '360px', width: 'auto' }} width="1052" height="860" data-path="images/localized-pricing/currency-overrides-table.png" />
        </Frame>
      </Tab>
    </Tabs>
  </Step>

  <Step title="Save the product">
    Spara med **Lägg till produkt**. Lokala priser gäller framtida kassor omedelbart.

    <Check>
      Kör ett testköp med ett faktureringsland som har en regel, och bekräfta att det lokaliserade beloppet visas.
    </Check>
  </Step>
</Steps>

***

## Hantera via API

Lokala Priser är fullt tillgängliga via API. Ställ först in produktens prissättningsläge, sedan bifogar du regler.

### Ställ in prissättningsläget

Ställ in `pricing_mode` när du skapar produkten (eller uppdaterar en befintlig). `null` betyder bas-endast, det befintliga beteendet.

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

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

  const product = await client.products.update('pdt_premium_plan', {
    pricing_mode: 'by_country',
  });
  ```

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

  client = DodoPayments(
      bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"),
      environment="test_mode",
  )

  product = client.products.update(
      "pdt_premium_plan",
      pricing_mode="by_country",
  )
  ```

  ```go theme={null} theme={null}
  package main

  import (
  	"context"
  	"os"

  	"github.com/dodopayments/dodopayments-go"
  	"github.com/dodopayments/dodopayments-go/option"
  )

  func main() {
  	client := dodopayments.NewClient(
  		option.WithBearerToken(os.Getenv("DODO_PAYMENTS_API_KEY")),
  	)

  	_, err := client.Products.Update(
  		context.TODO(),
  		"pdt_premium_plan",
  		dodopayments.ProductUpdateParams{
  			PricingMode: dodopayments.F(dodopayments.PricingModeByCountry),
  		},
  	)
  	if err != nil {
  		panic(err)
  	}
  }
  ```
</CodeGroup>

### Lägg till ett lokaliserat pris

Bifoga en regel till produkten. I `by_country` läge är `country_code` obligatorisk; i `by_currency` läge måste den utelämnas.

<CodeGroup>
  ```typescript theme={null} theme={null}
  // ₹999.00 for customers in India
  const localizedPrice = await client.products.localizedPrices.create('pdt_premium_plan', {
    currency: 'INR',
    country_code: 'IN',
    amount: 99900,
  });
  ```

  ```python theme={null} theme={null}
  # ₹999.00 for customers in India
  localized_price = client.products.localized_prices.create(
      "pdt_premium_plan",
      currency="INR",
      country_code="IN",
      amount=99900,
  )
  ```

  ```go theme={null} theme={null}
  // ₹999.00 for customers in India
  localizedPrice, err := client.Products.LocalizedPrices.New(
  	context.TODO(),
  	"pdt_premium_plan",
  	dodopayments.ProductLocalizedPriceNewParams{
  		Currency:    dodopayments.F(dodopayments.CurrencyInr),
  		CountryCode: dodopayments.F(dodopayments.CountryCodeIn),
  		Amount:      dodopayments.F(int64(99900)),
  	},
  )
  ```
</CodeGroup>

För en `by_currency` produkt, utelämna `country_code`. Till exempel, ett platt `€9.99` för alla som betalar i EUR (`currency: 'EUR'`, `amount: 999`).

### Lista, uppdatera och arkivera

Du kan endast uppdatera en regels `amount`; valuta och land är fasta när de skapats. Arkivering är en idempotent mjuk-radering, så regeln slutar att matcha men stannar i din historik.

<CodeGroup>
  ```typescript theme={null} theme={null}
  // List all active rules on a product
  const rules = await client.products.localizedPrices.list('pdt_premium_plan');

  // Change the amount (e.g. end a promo)
  await client.products.localizedPrices.update('lcp_india_price', {
    product_id: 'pdt_premium_plan',
    amount: 119900,
  });

  // Archive a rule
  await client.products.localizedPrices.archive('lcp_india_price', {
    product_id: 'pdt_premium_plan',
  });
  ```

  ```python theme={null} theme={null}
  # List all active rules on a product
  rules = client.products.localized_prices.list("pdt_premium_plan")

  # Change the amount (e.g. end a promo)
  client.products.localized_prices.update(
      "lcp_india_price",
      product_id="pdt_premium_plan",
      amount=119900,
  )

  # Archive a rule
  client.products.localized_prices.archive(
      "lcp_india_price",
      product_id="pdt_premium_plan",
  )
  ```

  ```go theme={null} theme={null}
  // List all active rules on a product
  rules, err := client.Products.LocalizedPrices.List(context.TODO(), "pdt_premium_plan")

  // Change the amount (e.g. end a promo)
  _, err = client.Products.LocalizedPrices.Update(
  	context.TODO(),
  	"pdt_premium_plan",
  	"lcp_india_price",
  	dodopayments.ProductLocalizedPriceUpdateParams{
  		Amount: dodopayments.F(int64(119900)),
  	},
  )

  // Archive a rule
  err = client.Products.LocalizedPrices.Archive(
  	context.TODO(),
  	"pdt_premium_plan",
  	"lcp_india_price",
  )
  ```
</CodeGroup>

<Card title="API Reference" icon="code" href="/api-reference/products/post-products-localized-prices">
  Se de fullständiga Produkt Lokala Priser endpunkterna: skapa, lista, hämta, uppdatera och arkivera.
</Card>

***

## Hur det tillämpas vid Kassa

Lokala priser löses per varurad, och endast för produkter som har en `pricing_mode` satt. Dodo Payments läser två signaler från förfrågan: kundens **faktureringsland** samt en valfri **`billing_currency`** (när den utelämnas härleds en valuta från faktureringslandet).

* **Per Land**: söker efter en regel som matchar faktureringslandet. Om en sådan finns debiteras kunden regelns belopp i regelns valuta.
* **Per Valuta**: söker efter en regel som matchar kundens valuta (`billing_currency`, eller valutan härledd från deras land). Om en sådan finns debiteras kunden regelns belopp i den valutan.
* **Ingen match, eller ingen `pricing_mode`**: baspriset gäller, debiteras direkt när kundens valuta motsvarar basvalutan, annars konverteras via [Adaptiv Valuta](/features/adaptive-currency).

Varje varurad löses på egen hand, så du kan lokalisera en produkt och lämna andra på basprissättning inom samma kassa. Om någon rad matchar en lokaliserad regel, tvingas hela transaktionen till avgifter inklusive (se [Kärnkoncept](#core-concepts)).

***

## Viktiga Beteenden

| Beteende                            | Detalj                                                                                                                                                                                                                                                  |
| :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Före skatt-belopp**               | Ett lokaliserat belopp är priset *före* skatt. För produkterna med exkluderad skatt adderas skatt på toppen vid kassan, så det lokaliserade beloppet är inte den slutliga totalsumman. Se [Skatt-Inkluderande Priser](/features/tax-inclusive-pricing). |
| **Inte för Betala Vad Du Vill**     | Lokaliserade regler gäller aldrig för [Betala Vad Du Vill](/features/pay-what-you-want) produkter, där kunden väljer beloppet.                                                                                                                          |
| **Per valuta skiljer sig från bas** | En `by_currency` regel måste använda en annan valuta än produktens basvaluta.                                                                                                                                                                           |
| **En regel per marknad**            | En produkt kan ha högst en aktiv regel per valuta (per-valuta) eller per land (per-land).                                                                                                                                                               |
| **Alla produkttyper**               | Gäller för engångs-, abonnemangs- och användningsbaserade produkter.                                                                                                                                                                                    |

<Info>
  Ändringar av lokaliserade regler ger inte ut sina egna webhooks. Det lösta beloppet visas på den resulterande betalningen eller prenumerationen precis som vilket annat pris som helst.
</Info>

***

## Bästa Praxis

* **Behåll ett vettigt baspris.** Det är fallback för varje marknad utan regel, konverterad genom Adaptiv Valuta.
* **Runda till lokala charmpriser.** Hela poängen med ett fast belopp är ett rent nummer som ₹999, €9.99 eller ¥1000, inte ett FX-resultat.
* **Välj rätt läge för jobbet.** Använd `by_country` för köpkraftsprissättning; använd `by_currency` när ett pris per valutazon räcker.
* **Arkivera, återskapa inte, för kampanjer.** Genom att arkivera en regel återgår marknaden till bas/adaptiv samtidigt som historiken bevaras; återskapa eller sätt om priserna senare vid behov.
* **Håll koll på skattrad innan du annonserar en totalsumma.** För produkter med exkluderad skatt betalar kunden det lokaliserade beloppet *plus* skatt, så ange inte det som slutpriset i annonser.

***

## Relaterade

<CardGroup cols={2}>
  <Card title="Purchasing Power Parity" icon="money-bill-trend-up" href="/features/purchasing-power-parity">
    Inhemsk lokaliserad prissättning kontra platsbaserade rabattkoder för PPP.
  </Card>

  <Card title="Adaptive Currency" icon="money-bill-transfer" href="/features/adaptive-currency">
    Automatisk FX-konvertering och avgiftshantering lokaliserad prissättning bygger på.
  </Card>

  <Card title="Tax-Inclusive Pricing" icon="receipt" href="/features/tax-inclusive-pricing">
    Kontrollera om dina priser inkluderar skatt.
  </Card>

  <Card title="Pay What You Want" icon="hand-holding-dollar" href="/features/pay-what-you-want">
    Låt kunderna välja beloppet. Lokaliserade regler gäller inte där.
  </Card>
</CardGroup>
