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

# Charm Pricing

> Bulatkan harga hasil konversi ke akhiran yang rapi dan disesuaikan secara psikologis seperti 49.99 secara otomatis, dalam setiap mata uang, tanpa menetapkan harga per pasar secara manual.

Charm Pricing membulatkan harga yang dikonversi ke akhiran yang rapi, seperti **49.99**, di setiap checkout. Anda menetapkan aturannya sekali. Dodo Payments menerapkannya dalam mata uang setiap pelanggan.

## Apa Itu Charm Pricing?

[Adaptive Currency](/features/adaptive-currency) mengonversi harga dasar Anda berdasarkan nilai tukar terkini. Hasilnya akurat, tetapi jarang terlihat menarik: produk seharga \$47.00 dapat ditampilkan sebagai **€43.12** hari ini dan **€43.47** besok.

Charm Pricing mengambil jumlah yang telah dikonversi tersebut dan memindahkannya ke akhiran rapi terdekat. Pelanggan melihat **€49.99**, bukan €43.12. Akhirannya tetap stabil meskipun nilai tukar berubah.

Anda tidak perlu menetapkan harga per pasar. Pilih satu aturan pembulatan, lalu aturan tersebut berlaku untuk setiap mata uang.

<Note>
  Charm Pricing memerlukan [Adaptive Currency](/features/adaptive-currency). Aktifkan Adaptive Currency terlebih dahulu.
</Note>

## Manfaat Utama

* **Harga rapi dalam setiap mata uang** — Satu aturan berlaku untuk semua pasar. Anda tidak perlu mengelola daftar harga.
* **Akhiran stabil** — Akhiran tidak berubah ketika nilai tukar bergerak beberapa persen.
* **Tanpa artefak konversi** — Pelanggan tidak akan melihat 43.12 atau 1043.87.
* **Otomatis untuk pasar baru** — Mata uang yang belum pernah Anda tetapkan harganya tetap mendapatkan angka yang rapi.

<Info>
  Untuk menetapkan harga tertentu secara manual bagi satu pasar, gunakan [Localized Pricing](/features/localized-pricing). Harga terlokalisasi selalu mengalahkan Charm Pricing untuk produk tersebut.
</Info>

## Mengaktifkan Charm Pricing

<Steps>
  <Step title="Enable Adaptive Currency">
    Buka **Settings → Business**. Di **Business Settings**, aktifkan **Adaptive Currency**. Charm Pricing tidak berfungsi tanpanya.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/Ovz6j1aDoP1Nl_kB/images/charm-pricing/adaptive-currency-toggle.png?fit=max&auto=format&n=Ovz6j1aDoP1Nl_kB&q=85&s=a9d847b5ee912ddf416bba76f7f75994" alt="Adaptive Currency toggle in Business Settings" style={{ maxHeight: '360px', width: 'auto' }} width="927" height="581" data-path="images/charm-pricing/adaptive-currency-toggle.png" />
    </Frame>
  </Step>

  <Step title="Turn on Charm Pricing">
    Di bagian **Business Settings** yang sama, aktifkan **Charm Pricing** — "Round prices to cleaner, more appealing numbers". Jenis pembulatan saat ini akan muncul di bawah toggle.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/Ovz6j1aDoP1Nl_kB/images/charm-pricing/charm-toggle.png?fit=max&auto=format&n=Ovz6j1aDoP1Nl_kB&q=85&s=e8038d1b4c0df6a0ed246af73e83011c" alt="Charm Pricing enabled in Business Settings" style={{ maxHeight: '400px', width: 'auto' }} width="895" height="392" data-path="images/charm-pricing/charm-toggle.png" />
    </Frame>

    <Warning>
      Perubahan hanya berlaku untuk transaksi mendatang. Subscription yang sudah ada tetap menggunakan aturan pembulatan yang berlaku saat subscription tersebut dimulai. Lihat [Subscriptions](#subscriptions).
    </Warning>
  </Step>

  <Step title="Set the rounding type and steps">
    Klik **Edit** untuk membuka **Set up Charm Pricing**. Pilih **Rounding type**, lalu sesuaikan **Rounding step** untuk rentang harga apa pun. Klik **Save Changes**.

    <Frame>
      <img src="https://mintcdn.com/dodopayments/Ovz6j1aDoP1Nl_kB/images/charm-pricing/rounding-type.png?fit=max&auto=format&n=Ovz6j1aDoP1Nl_kB&q=85&s=52b3cac8b3644aa2e129019cc989b617" alt="Set up Charm Pricing dialog with the rounding type selector and the Try it preview" style={{ maxHeight: '620px', width: 'auto' }} width="1122" height="404" data-path="images/charm-pricing/rounding-type.png" />
    </Frame>

    Gunakan **Try it** untuk memeriksa nilai sebelum menyimpannya. Masukkan jumlah dan mata uang, lalu dialog akan menampilkan hasil serta step yang digunakan.

    Dodo Payments menyediakan step default untuk setiap rentang. Lihat [Rounding types](#rounding-types) dan [Rounding steps](#rounding-steps).

    <Frame>
      <img src="https://mintcdn.com/dodopayments/Ovz6j1aDoP1Nl_kB/images/charm-pricing/bands.png?fit=max&auto=format&n=Ovz6j1aDoP1Nl_kB&q=85&s=49814c0af4e7d120d4ae64c868943a84" alt="Rounding step table, one step for each price range" style={{ maxHeight: '440px', width: 'auto' }} width="527" height="485" data-path="images/charm-pricing/bands.png" />
    </Frame>
  </Step>

  <Step title="Confirm at checkout">
    <Check>
      Buka checkout pengujian dengan negara penagihan yang menggunakan mata uang lain. Pastikan harga menampilkan akhiran yang Anda harapkan.
    </Check>
  </Step>
</Steps>

## Cara Penghitungan Harga

Dodo Payments menerapkan **harga daftar per unit**, setelah konversi mata uang dan sebelum diskon apa pun, serta sebelum pajak. Diskon kemudian dikurangkan dari harga daftar yang telah disesuaikan — lihat [Discounts and Charm Pricing](#discounts-and-charm-pricing).

1. **Temukan rentangnya.** Harga daftar memilih satu rentang dari tabel langkah pembulatan. Harga \$47 berada dalam rentang 10–99, jadi langkahnya adalah **10**. Langkah ditentukan oleh harga daftar, sehingga suatu produk berada dalam rentang yang sama, apa pun kode diskon yang dimiliki pelanggan.
2. **Pilih targetnya.** Langkah tersebut memberikan dua kandidat, yaitu **40** dan **50**. Jenis pembulatan menentukan pilihan. Dengan **Nearest**, 47 lebih dekat ke 50.
3. **Potong bagian akhirnya.** Dodo Payments mengurangi seper seribu dari langkah tersebut, sehingga 50 menjadi **49.99**. Pemotongan tidak pernah kurang dari satu unit minor. **Whole** melewati langkah ini.

### Jenis Pembulatan

| Jenis | Yang dipilih | \$47 menjadi |
| :- | :- | :- |
| **Nearest** | Kandidat yang lebih dekat. Jika sama, dibulatkan ke atas. | \$49.99 |
| **Floor** | Selalu kandidat di bawah harga. | \$39.99 |
| **Ceiling** | Selalu kandidat di atas harga. | \$49.99 |
| **Whole** | Kandidat terdekat, tanpa potongan. | \$50.00 |

<Warning>
  **Floor** dapat menurunkan harga hampir sebesar satu step penuh. Harga \$47 menjadi \$39.99, turun 15%. Periksa dampaknya pada rentang harga Anda sebelum memilihnya.
</Warning>

### Langkah Pembulatan

Step bergantung pada besar harga dalam unit utama mata uang tersebut. Berikut adalah nilai defaultnya. Anda dapat mengubah **Rounding step** untuk rentang apa pun. Anda tidak dapat mengubah rentangnya.

| Rentang harga | Langkah |
| :- | :- |
| 1–9 | 1 |
| 10–99 | 10 |
| 100–999 | 100 |
| 1,000–9,999 | 1,000 |
| 10,000–99,999 | 10,000 |
| 100,000–999,999 | 10,000 |
| 1,000,000–9,999,999 | 10,000 |
| 10,000,000 ke atas | 10,000 |

Step berhenti bertambah pada 10,000. Ini menjaga perubahan tetap kecil untuk jumlah besar, dan penting bagi mata uang dengan banyak unit per dolar, seperti IDR dan VND.

<Note>
  Step yang besar dapat memindahkan harga cukup jauh. Dengan step default 1,000, harga hasil konversi **\$1,234** menjadi **\$999.00**. Turunkan step untuk rentang tersebut jika perubahannya terlalu besar bagi katalog Anda.
</Note>

### Contoh Perhitungan

| Harga hasil konversi | Mata uang | Step | Jenis pembulatan | Yang dibayar pelanggan |
| :- | :- | :- | :- | :- |
| \$47.00 | USD | 10 | Nearest | **\$49.99** |
| \$47.00 | USD | 10 | Whole | **\$50.00** |
| \$47.00 | USD | 10 | Floor | **\$39.99** |
| \$5.00 | USD | 1 | Nearest | **\$4.99** |
| ¥4,700 | JPY | 1,000 | Nearest | **¥4,999** |
| ¥5 | JPY | 1 | Nearest | **¥4** |

<Info>
  Mata uang tanpa angka desimal, seperti JPY, tidak memiliki akhiran pecahan: pengurangannya adalah langkah dibagi 1.000, dibulatkan ke satuan utuh, dengan minimum satu satuan. Akhirannya adalah ¥4,999, bukan ¥4,999.99.
</Info>

### Saat Charm Tidak Berlaku

Dodo Payments mempertahankan harga hasil konversi tanpa perubahan dalam kasus berikut:

* Step lebih besar daripada harga. Harga tidak dapat berubah kurang dari satu step penuh.
* Hasilnya nol atau kurang.
* Tidak ada step yang cocok dengan jumlah tersebut.

## Cara Penerapannya di Checkout

Charm Pricing menetapkan harga yang dilihat pelanggan sebelum diskon apa pun dikurangkan. Untuk produk tanpa harga yang dilokalkan, urutannya adalah:

1. **Harga dasar** — harga yang Anda tetapkan pada produk.
2. **[Purchasing Power Parity](/features/purchasing-power-parity)** — jika produk ikut serta, persentase negara akan diterapkan.
3. **[Currency conversion](/features/adaptive-currency)** — jumlah tersebut dikonversi ke mata uang pelanggan berdasarkan kurs terkini.
4. **Charm rounding** — harga daftar yang telah dikonversi disesuaikan ke akhiran yang rapi. Inilah harga yang dilihat pelanggan sebagai subtotal.
5. **Diskon** — diskon produk dan [discount code](/features/discount-codes), jika ada, dikurangkan dari harga daftar yang telah disesuaikan.
6. **Pajak** — dihitung berdasarkan jumlah setelah diskon. Lihat [Tax-Inclusive Pricing](/features/tax-inclusive-pricing).

Setiap baris keranjang dihitung secara terpisah. Charm rounding dijalankan satu kali, pada harga daftar. Tidak ada pembulatan kedua pada jumlah setelah diskon.

### Discounts and Charm Pricing

Charm Pricing mengatur harga yang ditampilkan, dan diskon merupakan pengurangan dari harga tersebut. Pada paket \$199.00/bulan dengan langkah 100 dan pembulatan **Nearest**:

```text theme={null}
list  199.00 → charm → 199.90     (Subtotal)
10% of the charmed list  19.99    (Discount)
paid  199.90 − 19.99 = 179.91     (Total)
```

Cara diskon diterapkan pada harga daftar yang telah disesuaikan bergantung pada jenisnya:

| Diskon pada baris | Yang diterapkan | Alasannya |
| :- | :- | :- |
| Hanya kode persentase, tanpa batas maksimum | **Tarifnya** | Tarif merupakan proporsi dari harga, sehingga mengikuti harga. |
| Kode jumlah tetap apa pun, atau kode persentase dengan batas maksimum | **Jumlahnya** | Kode jumlah tetap menyebutkan suatu jumlah, sehingga jumlah tersebut tidak boleh mengikuti perubahan langkah. |

<Info>
  Baris yang didiskon tidak berakhir pada akhiran charm. Harga daftar yang telah disesuaikan mempertahankan akhiran `.99` atau `.90`; persentase yang dikurangkan darinya tidak memiliki alasan untuk mengikuti akhiran tersebut. Dalam contoh di atas, pelanggan dikenai biaya **\$179.91**, bukan angka dengan akhiran charm.
</Info>

Produk dengan harga yang dicoret (compare-at) menampilkan baris diskon nyata, karena harga coret tersebut diterapkan sebagai pengurangan dengan cara yang sama. Baris yang didiskon sepenuhnya tetap gratis, dan kode jumlah tetap yang lebih besar daripada harga daftar yang telah disesuaikan dibatasi menjadi gratis, bukan menjadi negatif.

<Warning>
  **Langganan yang sudah menggunakan charm dan memiliki diskon dapat mengalami perubahan harga pada perpanjangan berikutnya.** Harga perpanjangan didasarkan pada harga daftar yang telah disesuaikan, bukan pada harga setelah diskon yang disesuaikan ulang. Dengan **Nearest** atau **Ceiling**, harga daftar yang telah disesuaikan berada pada atau di atas harga daftar, sehingga kode persentase biasanya mengenakan biaya sedikit lebih tinggi dari sebelumnya. Dengan **Floor**, harganya dapat berada jauh di bawahnya, sehingga kode yang sama dapat mengenakan biaya lebih rendah.
</Warning>

<Warning>
  **Baris yang menggunakan Charm membuat seluruh transaksi menjadi termasuk biaya.** Pelanggan membayar tepat sesuai akhiran yang mereka lihat, sehingga biaya konversi Adaptive Currency tidak dapat ditambahkan di atasnya. Anda menanggung biaya tersebut. Lihat [Aktifkan Fees Inclusive](/features/adaptive-currency#enable-fees-inclusive).
</Warning>

## Langganan

Langganan mencatat langkah pembulatan dan jenis pembulatannya saat pelanggan mulai berlangganan. Dodo Payments mengulangi keputusan yang sama pada setiap perpanjangan.

**Yang dibekukan:** langkah pembulatan dan jenis pembulatan. Jika Anda mengedit langkah atau mengubah jenis pembulatan, langganan yang sudah ada tidak akan dihitung ulang harganya. Pelanggan tetap menggunakan aturan yang telah mereka setujui.

**Yang dapat berubah:** jumlahnya. Pada setiap perpanjangan, harga dikonversi menggunakan kurs terkini, lalu aturan yang dibekukan diterapkan. Perubahan kurs yang besar dapat mengubah jumlah perpanjangan, meskipun aturannya tidak berubah.

<Warning>
  **Perubahan paket menghapus charm dari langganan tersebut.** Saat pelanggan [mengubah paket](/features/subscription#subscription-plan-changes), paket baru menagih jumlah yang ditampilkan dalam penawaran perubahan paket. Dodo Payments tidak menerapkan charm pada jumlah tersebut dan tidak menerapkan charm pada perpanjangan berikutnya untuk langganan tersebut.
</Warning>

## Perilaku Penting

| Perilaku | Detail |
| :- | :- |
| **Memerlukan Adaptive Currency** | Charm Pricing tidak melakukan apa pun selama Adaptive Currency dinonaktifkan. |
| **Harga lokal diprioritaskan** | Produk dengan aturan [Localized Pricing](/features/localized-pricing) yang sesuai tidak pernah menggunakan Charm. Jumlah persis yang Anda tetapkan akan diterapkan. |
| **Diterapkan per unit** | Harga per unit menggunakan Charm, lalu dikalikan dengan jumlahnya. |
| **Sebelum diskon** | Charm membulatkan harga daftar yang telah dikonversi. Diskon kemudian dikurangkan dari harga yang telah menggunakan Charm tersebut. Lihat [Diskon dan Charm Pricing](#discounts-and-charm-pricing). |
| **Sebelum pajak** | Pajak dihitung setelah pembulatan dengan Charm dan setelah diskon apa pun, sehingga totalnya sesuai. |
| **Memaksa biaya termasuk** | Anda menanggung biaya konversi mata uang pada transaksi yang menggunakan Charm. |
| **Tidak berlaku untuk Pay What You Want** | Pelanggan memilih jumlahnya, sehingga jumlah tersebut tidak pernah menggunakan Charm. Lihat [Pay What You Want](/features/pay-what-you-want). |
| **Hanya biaya tetap untuk berbasis penggunaan** | Biaya penggunaan terukur tidak pernah menggunakan Charm. |
| **Tidak memiliki webhook sendiri** | Jumlah yang menggunakan Charm muncul pada pembayaran atau langganan seperti harga lainnya. |

## Praktik Terbaik

* **Mulai dengan Nearest.** Metode ini paling sedikit mengubah harga. Gunakan Floor hanya jika Anda menerima diskon yang dihasilkannya.
* **Periksa produk terbesar dan terkecil Anda.** Langkah berubah sesuai rentang harga, sehingga produk \$5 dan produk \$1,200 berperilaku berbeda.
* **Tinjau langkah untuk mata uang dengan unit nominal besar.** Harga dalam IDR, VND, dan KRW berada di rentang teratas, dengan langkah yang ditetapkan pada 10,000.
* **Tetapkan harga langganan sebelum peluncuran.** Mengedit langkah di kemudian hari tidak akan menghitung ulang harga pelanggan yang sudah ada.
* **Perhitungkan biaya konversi.** Baris yang menggunakan charm mencakup biaya, sehingga biaya tersebut diambil dari pendapatan Anda.

## Terkait

<CardGroup cols={2}>
  <Card title="Adaptive Currency" icon="money-bill-transfer" href="/features/adaptive-currency">
    Konversi yang dibulatkan oleh Charm Pricing. Diperlukan untuk Charm Pricing.
  </Card>

  <Card title="Purchasing Power Parity" icon="money-bill-trend-up" href="/features/purchasing-power-parity">
    Kenakan harga lebih rendah di negara yang sensitif terhadap harga. Dijalankan sebelum charm rounding.
  </Card>

  <Card title="Localized Pricing" icon="earth-americas" href="/features/localized-pricing">
    Tetapkan harga yang tepat untuk setiap negara atau mata uang. Menggantikan Charm Pricing.
  </Card>

  <Card title="Tax-Inclusive Pricing" icon="receipt" href="/features/tax-inclusive-pricing">
    Tentukan apakah harga Anda sudah termasuk pajak.
  </Card>
</CardGroup>


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