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

# التسعير المحلي

> حدد سعرك الثابت لكل عملة أو بلد بدلاً من السماح لأسعار الصرف بتقرير ذلك. ضع أسعاراً مستديرة ومتوافقة مع السوق وقم بتشغيل العروض الترويجية حسب البلد.

## ما هو التسعير المحلي؟

كل منتج له سعر أساسي بعملة أساسية. يتيح لك التسعير المحلي تجاوز هذا الأساس باستخدام **أسعار ثابتة تقوم بتحديدها لكل عملة أو لكل بلد**. قم بتفعيله عن طريق تعيين `pricing_mode` على المنتج، ثم قم بإرفاق قاعدة واحدة لكل سوق.

إنها إحدى ثلاث وسائل مستقلة لتسعير الدولي، كل منها يحل مشكلة مختلفة:

| الآلية                                             | ما تقوم به                                    | الرقم الذي يراه العميل               |
| :------------------------------------------------- | :-------------------------------------------- | :----------------------------------- |
| **التسعير المحلي**                                 | سعر ثابت تحدده لكل عملة أو دولة               | بالضبط المبلغ الذي تحدده             |
| [**العملة التكيفية**](/features/adaptive-currency) | تحويل تلقائي لسعرك الأساسي بأسعار الصرف الحية | السعر الأساسي محول بسعر الصرف الحالي |
| [**رموز الخصم**](/features/discount-codes)         | تخفيض بنسبة مئوية من السعر الأساسي            | السعر الأساسي ناقص الخصم             |

<Info>
  يعمل التسعير المحلي وتكييف العملة معاً. عندما لا تتطابق أي قاعدة محلية، يرجع المنتج إلى سعره الأساسي - يتم تحصيله مباشرة إذا كان العميل بالفعل في عملتك الأساسية، أو يتم تحويله عبر تكييف العملة إذا لم يكن كذلك.
</Info>

***

## حالات الاستخدام

<CardGroup cols={2}>
  <Card title="Purchasing Power Parity (PPP)" icon="earth-asia" href="/features/purchasing-power-parity">
    قم بتحصيل أقل في الأسواق الحساسة للسعر دون تخفيض سوقك المحلي. قاعدة `by_country` تتيح لمنتج بسعر 20\$ أن يباع بمبلغ **₹999 في الهند** - متوافق مع القوة الشرائية المحلية، وليس تحويل سعر صرف مباشر. الطريقة الموصى بها، الأصلية لتشغيل PPP.
  </Card>

  <Card title="Charm Pricing" icon="tag">
    تحويل حي لسعر \$19.99 ينتهي برقم غير متساوٍ مثل €18.43. قاعدة `by_currency` تحدد السعر النظي، المتوافق مع الجانب النفسي الذي يتوقعه العملاء - **€9.99**، **¥1000**، **₹499** - كما هو مكتوب بالضبط.
  </Card>

  <Card title="Reversible Market-Entry Promotions" icon="rocket">
    إطلاق في بلد جديد؟ أضف قاعدة `by_country` بسعر افتتاحي، ثم **قم بأرشفتها** عند انتهاء العرض الترويجي للرجوع إلى التسعير الأساسي/التكيفي. يتم أرشفة القواعد ولا يتم حذفها أبداً، لذا تحافظ على سجل نظيف لما كان حياً ومتى.
  </Card>

  <Card title="Competitive Price-Matching" icon="bullseye">
    قم بتثبيت سوق واحد لمطابقة منافس محلي. قاعدة `by_country` لـ **£9.00 في المملكة المتحدة** تحتفظ بذلك السعر الدقيق بغض النظر عن كيفية تحرك سعر GBP/USD.
  </Card>
</CardGroup>

***

## المفاهيم الأساسية

* **وضعيات التسعير** — المنتج يكون في وضع واحد تماماً في كل مرة، يحدد بواسطة `pricing_mode`:
  * `by_currency`: سعر واحد لكل عملة، بغض النظر عن البلد. الجميع الذين يدفعون بالـ EUR يرون €9.99.
  * `by_country`: سعر خاص ببلد (₹999 في الهند)، حتى عندما تشترك عدة دول في عملة واحدة.
* **مبالغ ثابتة، في أصغر وحدة** — `amount` لقاعدة يكون رقماً صحيحاً في أصغر وحدة للعملة، كما هو حال في أماكن أخرى في API: `99900` هو ₹999.00، `999` هو €9.99. إنه سعر تقوم بتحديده، وليس قيمة محولة.
* **عندما لا تطابق القاعدة** — يحتفظ المنتج بسلوكه الحالي: العملاء في عملتك الأساسية يدفعون السعر الأساسي مباشرة؛ الجميع الآخر يحصل عليه محولاً عبر [تكييف العملة](/features/adaptive-currency).
* **الرسوم مشمولة عندما تتطابق القاعدة** — يدفع العميل **بالضبط** المبلغ الذي تحدده. [تكييف العملة](/features/adaptive-currency#choose-who-bears-the-fee) يتحمل FX الرسوم التي تتحملها أنت (تعتبر ضمن الرسوم لتلك المعاملة) بدلاً من إضافتها إلى الأعلى، لذا يكون سعر يمكنك شحنه محلياً دائماً السعر الذي يتم تحصيله.

***

## الإعداد في لوحة التحكم

<Steps>
  <Step title="Open the product form">
    في لوحة تحكم التاجر الخاصة بك، انتقل إلى **المنتجات** وقم بإنشاء منتج (أو افتح منتج حالي لتحريري). حدد السعر الأساسي والعملة كما هو معتاد.
  </Step>

  <Step title="Enable Localized Pricing and choose a mode">
    في قسم **التسعير**، ضع علامة على **التسعير المحلي**، ثم اختر **حسب البلد** أو **حسب العملة**.

    <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="تمكين التسعير المحلي على نموذج المنتج مع تحديد حسب البلد" 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">
    انقر على **إضافة سعر البلد** أو **إضافة سعر العملة**، ثم املئ لوحة **التسعير المحلي**، واضغط على **إضافة**. يظهر كل سوق تضيفه في جدول التجاوزات، حيث يمكنك تحريره أو حذفه لاحقاً.

    <Tabs>
      <Tab title="By Country">
        اختر بلداً، حدد العملة، وأدخل المبلغ (على سبيل المثال ₹999 للهند)، ثم اضغط على **إضافة**.

        <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="إضافة 999 INR تجاوز للهند" style={{ maxHeight: '360px', width: 'auto' }} width="1052" height="660" data-path="images/localized-pricing/add-country-override.png" />
        </Frame>

        البلد يظهر الآن في جدول **التجاوزات حسب البلد**، حيث يمكنك تحريره أو حذفه.

        <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="جدول تجاوزات البلد يعرض الهند بسعر 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">
        اختر عملة وأدخل المبلغ (على سبيل المثال €9.99 لليورو)، ثم اضغط على **إضافة**.

        <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="إضافة تجاوز لـ 9.99 EUR" style={{ maxHeight: '360px', width: 'auto' }} width="1052" height="640" data-path="images/localized-pricing/add-currency-override.png" />
        </Frame>

        العملة تظهر الآن في جدول **التجاوزات حسب العملة**، حيث يمكنك تحريرها أو حذفها.

        <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="جدول تجاوزات العملة يعرض اليورو بسعر 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">
    احفظ بـ **إضافة المنتج**. تنطبق الأسعار المحلية على المشتريات المستقبلية فورًا.

    <Check>
      قم بتشغيل عملية شراء تجريبية مع بلد فوترة يحتوي على قاعدة، وتأكد من ظهور المبلغ المحلي.
    </Check>
  </Step>
</Steps>

***

## الإدارة عبر API

التسعير المحلي متاح بالكامل عبر API. قم أولاً بتعيين وضع تسعير المنتج، ثم قم بإرفاق القواعد.

### تعيين وضع التسعير

قم بتعيين `pricing_mode` عند إنشاء المنتج (أو تحديث واحد موجود). `null` يعني الأساس فقط، السلوك الحالي.

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

### إضافة سعر محلي

قم بإرفاق قاعدة للمنتج. في وضع `by_country` `country_code` مطلوب؛ في وضع `by_currency` يجب حذفه.

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

بالنسبة إلى منتج `by_currency`، استبعد `country_code`. على سبيل المثال، `€9.99` للكل الذين يدفعون بالـ EUR (`currency: 'EUR'`, `amount: 999`).

### قائمة، تحديث، وأرشفة

يمكنك تحديث فقط `amount` لقاعدة، حيث يكون العملة والبلد ثابتين بمجرد أن يتم إنشاؤهما. الأرشفة هي حذف ناعم يوقف المطابقة لكنه يبقى في تاريخك.

<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">
  انظر إلى نقاط النهاية كاملة لأسعار المنتجات المحوسبة: الإنشاء، الإدراج، الاسترداد، التحديث، والأرشفة.
</Card>

***

## كيف يتم تطبيقه عند الخروج

يتم حل التسعير المحلي لكل سطر في العربة، فقط للمنتجات التي تم تعيين `pricing_mode` عليها. ديدو بايمنتس تقرأ إشارتين من الطلب: **بلد فاتورة** العميل، و **`billing_currency`** اختياري (عند حذفه، يتم اشتقاق عملة من بلد الفاتورة).

* **حسب البلد**: يبحث عن قاعدة تطابق بلد الفاتورة. إذا كانت موجودة، يتم تحصيل المبلغ المحدد في عملة القاعدة.
* **حسب العملة**: يبحث عن قاعدة تطابق عملة العميل (`billing_currency`، أو العملة المشتقة من بلدهم). إذا كانت موجودة، يتم تحصيل المبلغ المحدد في تلك العملة من العميل.
* **لا تطابق، أو لا `pricing_mode`**: ينطبق السعر الأساسي، يتم تحصيله مباشرة عندما تكون عملة العميل مساوية للعملة الأساسية، أو يتم تحويله عبر [تكييف العملة](/features/adaptive-currency).

يتم حل كل سطر من العربة بشكل فردي، لذا يمكنك تخصيص منتج واحد وترك الآخرين على التسعير الأساسي في نفس عملية الشراء. إذا تطابق أي سطر مع قاعدة محلية، يتم تغطية كل المعاملة بالرسوم - شاملة (انظر [المفاهيم الأساسية](#core-concepts)).

***

## السلوكيات الهامة

| السلوك                         | التفاصيل                                                                                                                                                                                                                                   |
| :----------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **المبالغ قبل الضريبة**        | المبلغ المحدد محليًا هو السعر *قبل* الضريبة. بالنسبة للمنتجات التي لا تحتوي على ضريبة، يتم إضافة الضريبة في القمة عند الخروج، لذا لا يكون المبلغ المحلي هو الإجمالي النهائي. انظر [التسعير شامل الضريبة](/features/tax-inclusive-pricing). |
| **ليس لـ Pay What You Want**   | القواعد المحلية لا تطبق أبداً على منتجات [Pay What You Want](/features/pay-what-you-want)، حيث يختار العميل المبلغ.                                                                                                                        |
| **حسب العملة يختلف عن الأساس** | يجب استخدام قاعدة `by_currency` عملة مختلفة عن العملة الأساسية للمنتج.                                                                                                                                                                     |
| **قاعدة واحدة لكل سوق**        | يمكن أن يكون للمنتج قاعدة نشطة واحدة فقط لكل عملة (حسب العملة) أو لكل بلد (حسب البلد).                                                                                                                                                     |
| **جميع أنواع المنتجات**        | تنطبق على المنتجات الأحادية، الاشتراكات، والمنتجات المستندة إلى الاستخدام.                                                                                                                                                                 |

<Info>
  التغييرات في القواعد المحلية لا ترسل إشعارات الويب الخاصة بها. يظهر المبلغ المحسوب في الدفع أو الاشتراك الناتج تمامًا مثل أي سعر آخر.
</Info>

***

## أفضل الممارسات

* **احتفظ بسعر أساسي معقول.** إنه البديل لجميع الأسواق بدون قاعدة، محول بواسطة تكييف العملة.
* **اجعل الأسعار جذابة محليًا.** الهدف الكامل من المبلغ الثابت هو رقم نظيف مثل ₹999، €9.99، أو ¥1000، وليس نتيجة لسعر صرف.
* **اختر الوضع للعمل المطلوب.** استخدم `by_country` لتسعير القوة الشرائية؛ استخدم `by_currency` عندما يكون سعر واحد لكل منطقة عملة كافياً.
* **أرشف، لا تقم بإعادة الإنشاء للعروض.** أرشفة القاعدة تعيد السوق إلى الأساس/التكيف مع الاحتفاظ بالتاريخ; قم بإعادة الإنشاء أو التعديل لاحقًا حسب الحاجة.
* **انتبه إلى خط الضريبة قبل الإعلان عن المجموع النهائي.** بالنسبة للمنتجات التي لا تحتوي على ضريبة، يدفع العميل المبلغ المحلي *بإضافة* الضريبة، لذا لا تقم بعرضه كمجموع نهائي في الإعلانات.

***

## ذات صلة

<CardGroup cols={2}>
  <Card title="Purchasing Power Parity" icon="money-bill-trend-up" href="/features/purchasing-power-parity">
    التسعير المحلي الأصلي مقابل رموز التخفيض المستندة إلى الموقع لتسعير PPP.
  </Card>

  <Card title="Adaptive Currency" icon="money-bill-transfer" href="/features/adaptive-currency">
    التحويل التلقائي للعملات والتعامل مع الرسوم المضمنة بالتسعير المحلي.
  </Card>

  <Card title="Tax-Inclusive Pricing" icon="receipt" href="/features/tax-inclusive-pricing">
    تحكم في ما إذا كانت أسعارك تشمل الضريبة.
  </Card>

  <Card title="Pay What You Want" icon="hand-holding-dollar" href="/features/pay-what-you-want">
    دع العملاء يختارون المبلغ. القواعد المحلية لا تنطبق هناك.
  </Card>
</CardGroup>
