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

# Định Giá Địa Phương

> Thiết lập giá cố định cho mỗi loại tiền tệ hoặc quốc gia thay vì để tỷ giá quyết định. Tạo mức giá tròn, phù hợp với thị trường và thực hiện khuyến mãi riêng cho từng quốc gia.

## Định Giá Địa Phương Là Gì?

Mỗi sản phẩm có một giá cơ bản trong một loại tiền tệ cơ bản. Định Giá Địa Phương cho phép bạn ghi đè mức giá đó với **giá cố định bạn thiết lập theo loại tiền tệ hoặc quốc gia**. Bạn có thể bật tính năng này bằng cách đặt một `pricing_mode` trên sản phẩm, sau đó đính kèm một quy tắc cho từng thị trường.

Đây là một trong ba công cụ độc lập cho định giá quốc tế, mỗi cái giải quyết một vấn đề khác nhau:

| Cơ chế                                               | Chức năng                                                      | Số tiền khách hàng thấy                            |
| :--------------------------------------------------- | :------------------------------------------------------------- | :------------------------------------------------- |
| **Giá địa phương hoá**                               | Một mức giá cố định mà bạn đặt theo từng tiền tệ hoặc quốc gia | Chính xác số tiền bạn đặt                          |
| [**Tiền tệ thích ứng**](/features/adaptive-currency) | Tự động chuyển đổi giá cơ sở của bạn theo tỷ giá FX trực tiếp  | Giá cơ sở chuyển đổi theo tỷ giá hối đoái hiện tại |
| [**Mã giảm giá**](/features/discount-codes)          | Giảm phần trăm giá cơ sở                                       | Giá cơ sở trừ đi chiết khấu                        |

<Info>
  Định Giá Địa Phương và Tiền tệ Thích ứng hoạt động cùng nhau. Khi không có quy tắc nào địa phương khớp, sản phẩm quay trở về giá cơ bản của nó — tính trực tiếp nếu khách hàng đã sử dụng loại tiền cơ bản của bạn, hoặc được chuyển đổi qua Tiền tệ Thích ứng nếu không phải.
</Info>

***

## Các Trường Hợp Sử Dụng

<CardGroup cols={2}>
  <Card title="Purchasing Power Parity (PPP)" icon="earth-asia" href="/features/purchasing-power-parity">
    Tính phí ít hơn ở các thị trường nhạy cảm với giá mà không giảm giá thị trường nhà của bạn. Một quy tắc `by_country` cho phép một sản phẩm cơ bản \$20 bán với giá **₹999 ở Ấn Độ** — điều chỉnh theo sức mua địa phương, không phải chuyển đổi FX thuần túy. Cách thực hiện PPP được khuyến nghị, gốc.
  </Card>

  <Card title="Charm Pricing" icon="tag">
    Một chuyển đổi FX trực tiếp của \$19.99 tạo ra một số không đẹp mắt như €18.43. Một quy tắc `by_currency` thiết lập giá sạch, tâm lý mà khách hàng mong đợi — **€9.99**, **¥1000**, **₹499** — chính xác như được nhập.
  </Card>

  <Card title="Reversible Market-Entry Promotions" icon="rocket">
    Khởi động ở một quốc gia mới? Thêm quy tắc `by_country` với giá giới thiệu, sau đó **lưu trữ nó** khi khuyến mãi kết thúc để trở về định giá cơ bản/thích ứng. Các quy tắc được lưu trữ, không bao giờ xóa, do đó bạn giữ được hồ sơ sạch về những gì đã hoạt động và khi nào.
  </Card>

  <Card title="Competitive Price-Matching" icon="bullseye">
    Gắn một thị trường duy nhất để khớp với đối thủ địa phương. Một quy tắc `by_country` cho **£9.00 tại Vương Quốc Anh** giữ chính xác giá đó cho dù tỷ giá GBP/USD di chuyển ra sao.
  </Card>
</CardGroup>

***

## Các Khái Niệm Cốt Lõi

* **Chế độ định giá** — Sản phẩm nằm trong chính xác một chế độ tại một thời điểm, được thiết lập bởi `pricing_mode` của nó:
  * `by_currency`: một giá mỗi loại tiền tệ, bất kể quốc gia. Mọi người trả bằng EUR sẽ thấy €9.99.
  * `by_country`: giá cụ thể cho một quốc gia (₹999 ở Ấn Độ), ngay cả khi một số quốc gia sử dụng chung một loại tiền tệ.
* **Giá cố định, trong đơn vị nhỏ nhất** — `amount` của một quy tắc là một số nguyên trong đơn vị nhỏ nhất của tiền tệ, giống như mọi nơi khác trong API: `99900` là ₹999.00, `999` là €9.99. Đó là giá bạn thiết lập, không bao giờ là giá chuyển đổi.
* **Khi không có quy tắc nào khớp** — Sản phẩm giữ hành vi hiện có: khách hàng sử dụng loại tiền cơ bản của bạn trả giá cơ bản trực tiếp; mọi người khác thì được chuyển đổi qua [Tiền tệ Thích ứng](/features/adaptive-currency).
* **Phí được bao gồm khi một quy tắc khớp** — Khách hàng trả **chính xác** số tiền bạn thiết lập. Phí FX [Tiền tệ Thích ứng](/features/adaptive-currency#choose-who-bears-the-fee) được bạn chi trả (được coi là đã bao gồm phí cho giao dịch đó) hơn là thêm vào trên giá, do đó giá địa phương bạn nêu luôn là giá được tính.

***

## Cài Đặt trên Bảng Điều Khiển

<Steps>
  <Step title="Open the product form">
    Trong Bảng Điều Khiển Người Bán của bạn, đi đến **Sản phẩm** và tạo một sản phẩm (hoặc mở sản phẩm hiện có để chỉnh sửa). Đặt **Giá** cơ bản và loại tiền tệ như thông thường.
  </Step>

  <Step title="Enable Localized Pricing and choose a mode">
    Trong phần **Định giá**, tích vào **Định giá Địa phương**, sau đó chọn **Theo Quốc gia** hoặc **Theo Tiền tệ**.

    <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="Định giá Địa phương kích hoạt trên mẫu sản phẩm với tùy chọn Theo Quốc gia" 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">
    Nhấn vào **Thêm Giá Quốc Gia** hoặc **Thêm Giá Tiền tệ**, điền vào bảng điều khiển **Định giá Địa phương**, và nhấn **Thêm**. Mỗi thị trường bạn thêm sẽ xuất hiện trong bảng ghi đè, nơi bạn có thể chỉnh sửa hoặc xóa sau này.

    <Tabs>
      <Tab title="By Country">
        Chọn một quốc gia, chọn loại tiền tệ, và nhập số tiền (ví dụ ₹999 cho Ấn Độ), sau đó nhấn **Thêm**.

        <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="Thêm một ghi đè 999 INR cho Ấn Độ" style={{ maxHeight: '360px', width: 'auto' }} width="1052" height="660" data-path="images/localized-pricing/add-country-override.png" />
        </Frame>

        Quốc gia hiện đã xuất hiện trong bảng **Ghi Đè Quốc Gia**, nơi bạn có thể chỉnh sửa hoặc xóa nó.

        <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="Bảng ghi đè Quốc Gia hiển thị Ấn Độ ở mức 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">
        Chọn một loại tiền tệ và nhập số tiền (ví dụ €9.99 cho EUR), sau đó nhấn **Thêm**.

        <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="Thêm một ghi đè 9.99 EUR" style={{ maxHeight: '360px', width: 'auto' }} width="1052" height="640" data-path="images/localized-pricing/add-currency-override.png" />
        </Frame>

        Loại tiền tệ hiện đã xuất hiện trong bảng **Ghi Đè Tiền Tệ**, nơi bạn có thể chỉnh sửa hoặc xóa nó.

        <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="Bảng ghi đè Tiền Tệ hiển thị EUR ở mức 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">
    Lưu bằng **Thêm sản phẩm**. Giá địa phương áp dụng cho các lần thanh toán trong tương lai ngay lập tức.

    <Check>
      Thực hiện một lần thanh toán thử với một quốc gia thanh toán có quy tắc, và xác nhận số tiền địa phương xuất hiện.
    </Check>
  </Step>
</Steps>

***

## Quản Lý qua API

Định Giá Địa Phương hoàn toàn có sẵn qua API. Đầu tiên thiết lập chế độ định giá của sản phẩm, sau đó đính kèm quy tắc.

### Thiết lập chế độ định giá

Thiết lập `pricing_mode` khi bạn tạo sản phẩm (hoặc cập nhật một sản phẩm hiện có). `null` nghĩa là chỉ có cơ sở, hành vi hiện có.

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

### Thêm một giá địa phương

Đính kèm một quy tắc vào sản phẩm. Ở chế độ `by_country` `country_code` là bắt buộc; ở chế độ `by_currency` nó phải được bỏ qua.

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

Đối với sản phẩm `by_currency`, bỏ qua `country_code`. Ví dụ, một `€9.99` phẳng cho tất cả mọi người trả bằng EUR (`currency: 'EUR'`, `amount: 999`).

### Danh sách, cập nhật và lưu trữ

Bạn chỉ có thể cập nhật `amount` của một quy tắc; tiền tệ và quốc gia đã cố định khi tạo. Lưu trữ là một xóa mềm idempotent, vì vậy quy tắc ngừng khớp nhưng vẫn ở trong lịch sử của bạn.

<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">
  Xem đầy đủ các điểm cuối Giá địa phương Sản phẩm: tạo, danh sách, truy xuất, cập nhật và lưu trữ.
</Card>

***

## Cách Áp Dụng Tại Lúc Thanh Toán

Định giá địa phương được xác định theo từng dòng giỏ hàng, và chỉ đối với các sản phẩm có `pricing_mode` được thiết lập. Dodo Payments đọc hai tín hiệu từ yêu cầu: **quốc gia thanh toán** của khách hàng, và **`billing_currency`** tùy chọn (khi bỏ qua, một loại tiền tệ được suy ra từ quốc gia thanh toán).

* **Theo Quốc Gia**: tìm kiếm một quy tắc phù hợp với quốc gia thanh toán. Nếu tồn tại, khách hàng bị tính giá trị quy tắc ở loại tiền tệ quy tắc.
* **Theo Tiền tệ**: tìm kiếm một quy tắc phù hợp với loại tiền tệ của khách hàng (`billing_currency`, hoặc loại tiền tệ suy ra từ quốc gia của họ). Nếu tồn tại, khách hàng bị tính giá trị quy tắc ở loại tiền tệ đó.
* **Không có quy tắc nào khớp, hoặc không `pricing_mode`**: giá cơ bản được áp dụng, tính trực tiếp khi loại tiền tệ của khách hàng bằng với loại tiền cơ bản, nếu không thì chuyển đổi qua [Tiền tệ Thích ứng](/features/adaptive-currency).

Mỗi dòng giỏ hàng được xác định riêng lẻ, do đó bạn có thể địa phương hóa một sản phẩm và để lại các sản phẩm khác theo định giá cơ bản trong cùng một lần thanh toán. Nếu bất kỳ dòng nào khớp với một quy tắc địa phương, toàn bộ giao dịch bị ép buộc bao gồm phí (xem [Các Khái Niệm Cốt Lõi](#core-concepts)).

***

## Các Hành Vi Quan Trọng

| Hành vi                                     | Chi tiết                                                                                                                                                                                                                                          |
| :------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Số tiền trước thuế**                      | Một số tiền địa phương là giá *trước* thuế. Đối với các sản phẩm không bao gồm thuế, thuế được thêm vào tại lúc thanh toán, do đó số tiền địa phương không phải là tổng hoàn chỉnh. Xem [Định Giá Bao Gồm Thuế](/features/tax-inclusive-pricing). |
| **Không áp dụng cho Trả Những Gì Bạn Muốn** | Các quy tắc địa phương không bao giờ áp dụng cho các sản phẩm [Trả Những Gì Bạn Muốn](/features/pay-what-you-want), nơi khách hàng chọn số tiền.                                                                                                  |
| **Theo tiền tệ khác với cơ bản**            | Quy tắc `by_currency` phải sử dụng một loại tiền tệ khác với loại tiền cơ bản của sản phẩm.                                                                                                                                                       |
| **Một quy tắc cho mỗi thị trường**          | Một sản phẩm có thể có tối đa một quy tắc hoạt động cho mỗi loại tiền tệ (theo tiền tệ) hoặc mỗi quốc gia (theo quốc gia).                                                                                                                        |
| **Tất cả các loại sản phẩm**                | Áp dụng cho sản phẩm một lần, đăng ký và theo sử dụng.                                                                                                                                                                                            |

<Info>
  Các thay đổi quy tắc địa phương không gửi các webhook của riêng chúng. Số tiền đã giải quyết xuất hiện trên thanh toán hoặc đăng ký kết quả giống như bất kỳ giá nào khác.
</Info>

***

## Thực Hành Tốt Nhất

* **Giữ một giá cơ sở hợp lý.** Đây là phương pháp dự phòng cho mỗi thị trường không có quy tắc, được chuyển đổi qua Tiền tệ Thích ứng.
* **Làm tròn đến các giá hấp dẫn địa phương.** Mục đích của số tiền cố định là để có được một số sạch như ₹999, €9.99 hoặc ¥1000, không phải là kết quả FX.
* **Chọn chế độ cho công việc.** Sử dụng `by_country` cho định giá sức mua; sử dụng `by_currency` khi một mức giá mỗi khu vực tiền tệ là đủ.
* **Lưu trữ, không tạo lại, cho khuyến mãi.** Lưu trữ một quy tắc đưa thị trường trở về cơ bản/thích ứng trong khi giữ lịch sử; tạo lại hoặc định giá lại sau khi cần.
* **Lưu ý dòng thuế trước khi quảng cáo tổng số.** Đối với các sản phẩm không bao gồm thuế, khách hàng trả số tiền địa phương *cộng* thuế, vì vậy không nên báo cáo nó là giá cuối cùng trong quảng cáo.

***

## Liên Quan

<CardGroup cols={2}>
  <Card title="Purchasing Power Parity" icon="money-bill-trend-up" href="/features/purchasing-power-parity">
    Định giá địa phương gốc vs mã giảm giá dựa trên vị trí cho PPP.
  </Card>

  <Card title="Adaptive Currency" icon="money-bill-transfer" href="/features/adaptive-currency">
    Chuyển đổi FX tự động và xử lý phí mà định giá địa phương dựa vào.
  </Card>

  <Card title="Tax-Inclusive Pricing" icon="receipt" href="/features/tax-inclusive-pricing">
    Kiểm soát nếu giá của bạn đã bao gồm thuế.
  </Card>

  <Card title="Pay What You Want" icon="hand-holding-dollar" href="/features/pay-what-you-want">
    Cho phép khách hàng chọn số tiền. Các quy tắc địa phương không áp dụng ở đây.
  </Card>
</CardGroup>
