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

# Testing Process

> Complete guide to testing your Dodo Payments integration with test cards, UPI IDs, BNPL data, and digital wallets.

<Frame>
  <iframe className="w-full aspect-video rounded-md" src="https://www.youtube.com/embed/5CcUSE4L_cg" title="Test Transaction | Dodo Payments" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen />
</Frame>

## Overview

Test mode lets you simulate payments without processing real transactions. All test credentials only work in test mode — never use them in production.

<CardGroup cols={3}>
  <Card title="No Real Charges" icon="shield-check">
    Test transactions don't process actual payments or affect real accounts.
  </Card>

  <Card title="Full API Access" icon="code">
    All API endpoints work identically in test and live modes.
  </Card>

  <Card title="Webhook Testing" icon="webhook">
    Webhooks fire for test transactions just like production.
  </Card>
</CardGroup>

<Warning>
  Test credentials only work in test mode. Attempting to use them in live mode will result in payment failures.
</Warning>

## Test Cards

Use these card numbers to simulate successful and declined payments across different regions.

<Tabs>
  <Tab title="Successful Payments">
    | Region | Brand      | Card Number        | Expiry | CVV |
    | :----- | :--------- | :----------------- | :----- | :-- |
    | US     | Visa       | `4242424242424242` | 06/32  | 123 |
    | US     | Mastercard | `5555555555554444` | 06/32  | 123 |
    | India  | Visa       | `4576238912771450` | 06/32  | 123 |
    | India  | Mastercard | `5409162669381034` | 06/32  | 123 |
  </Tab>

  <Tab title="Declined Payments">
    | Region | Brand      | Card Number        | Scenario           | Resulting `error_code` |
    | :----- | :--------- | :----------------- | :----------------- | :--------------------- |
    | US     | Visa       | `4000000000000002` | Generic decline    | `GENERIC_DECLINE`      |
    | US     | Mastercard | `4000000000009995` | Insufficient funds | `INSUFFICIENT_FUNDS`   |
    | India  | Visa       | `4706131211212123` | Generic decline    | `GENERIC_DECLINE`      |
    | India  | Mastercard | `5105105105105100` | Generic decline    | `GENERIC_DECLINE`      |

    Saat salah satu kartu ini ditolak, `error_code` dan `error_message` pembayaran mencerminkan skenario di atas. Periksa kode apapun di referensi [Transaction Failures](/api-reference/transaction-failures) untuk arti dan tindakan yang direkomendasikan, dan lihat [Handle Payment Failures](/developer-resources/handle-payment-failures) untuk menangani penolakan dalam integrasi Anda.
  </Tab>

  <Tab title="Subscription Failure Testing (Renewal/Upgrade/Downgrade)">
    | Card Number           | Expiry | CVC |
    | :-------------------- | :----- | :-- |
    | `4000 0000 0000 0341` | 12/34  | 123 |

    Gunakan kartu ini untuk menguji pembaruan kegagalan langganan, pemutakhiran, dan penurunan.
  </Tab>
</Tabs>

<Info>
  Untuk semua kartu uji, gunakan tanggal kedaluwarsa **06/32** (atau **12/34**) dan CVV **123**.
</Info>

### Cara Menguji Kegagalan Pembaruan

<Steps>
  <Step title="Create a test subscription">
    Buat langganan dengan kunci API uji Anda menggunakan kartu uji **sukses** (misalnya, `4242 4242 4242 4242`). Biaya awal harus berhasil dan langganan harus menjadi aktif.
  </Step>

  <Step title="Swap in the failure card via Customer Portal">
    Buka [Customer Portal](/features/customer-portal), temukan langganan yang baru saja Anda buat, dan klik **Update Payment Method**. Masukkan kartu uji kegagalan `4000 0000 0000 0341` (Kedaluarsa: `12/34`, CVC: `123`) dan simpan sebagai metode pembayaran langganan.
  </Step>

  <Step title="Advance the next billing date (optional)">
    Untuk memicu pembaruan segera daripada menunggu siklus penagihan alami, gunakan API Pembaruan Langganan untuk mengatur `next_billing_date` ke waktu UTC saat ini. Nilai tersebut harus berupa stempel waktu UTC ISO 8601 / RFC 3339 (sufiks `Z` diperlukan).

    ```http theme={null}
    PATCH /subscriptions/{subscription_id}
    {
      "next_billing_date": "2026-05-03T00:00:00Z"
    }
    ```

    Lihat detailnya di [Update Subscription API reference](/api-reference/subscriptions/patch-subscriptions#body-next-billing-date-one-of-0).
  </Step>

  <Step title="Verify the failure">
    Pada percobaan penagihan berikutnya:

    * Biaya pembaruan ditolak pada kartu kegagalan
    * Langganan berpindah ke status **On-Hold**
    * Sebuah acara webhook `payment.failed` dikirimkan
    * Pelanggan dapat kembali ke Customer Portal untuk memperbarui metode pembayaran dan mencoba lagi
  </Step>
</Steps>

<Warning>
  Kartu ini khusus untuk menguji kegagalan pembaruan. Biaya akan ditolak pada tanggal penagihan berikutnya, memungkinkan Anda untuk menguji logika pengulangan pembayaran, pemberitahuan pelanggan, dan penanganan kegagalan.
</Warning>

## Uji UPI

Pengujian UPI menggunakan identifier VPA (Virtual Payment Address) khusus yang mensimulasikan berbagai hasil pembayaran.

| Status  | UPI ID        |
| :------ | :------------ |
| Success | `success@upi` |
| Failure | `failure@upi` |

### Persyaratan untuk Pengujian UPI

* Negara penagihan harus diatur ke `IN`
* Mata uang harus `INR`
* Untuk pedagang non-India: Adaptive Currency harus diaktifkan

Untuk dokumentasi UPI lengkap termasuk pengujian mandat RBI untuk langganan, lihat halaman [India Payment Methods](/features/payment-methods/india).

## Uji BNPL

Penyedia Buy Now Pay Later memiliki persyaratan data uji khusus.

### Klarna Test Data

Gunakan detail ini untuk mensimulasikan pembayaran Klarna dalam mode uji:

| Field             | Approved                                      | Denied                                                      |
| :---------------- | :-------------------------------------------- | :---------------------------------------------------------- |
| **Date of Birth** | 07-10-1970                                    | 07-10-1970                                                  |
| **First Name**    | Test                                          | Test                                                        |
| **Last Name**     | Person-us                                     | Person-us                                                   |
| **Email**         | [customer@email.us](mailto:customer@email.us) | [customer+denied@email.us](mailto:customer+denied@email.us) |
| **Street**        | Amsterdam Ave                                 | Amsterdam Ave                                               |
| **House Number**  | 509                                           | 509                                                         |
| **City**          | New York                                      | New York                                                    |
| **State**         | New York                                      | New York                                                    |
| **Postal Code**   | 10024-3941                                    | 10024-3941                                                  |
| **Phone**         | +13106683312                                  | +13106354386                                                |

<Note>
  Klarna membutuhkan jumlah transaksi minimal **\$50.01** agar muncul sebagai opsi pembayaran.
</Note>

### Afterpay Testing

<Steps>
  <Step title="Select Afterpay">
    Pilih Afterpay sebagai metode pembayaran di checkout dan klik Pay.
  </Step>

  <Step title="Test successful payment">
    Gunakan alamat email dan alamat pengiriman yang valid untuk pembayaran yang sukses.
  </Step>

  <Step title="Test failed authentication">
    Untuk mensimulasikan kegagalan, tutup jendela mod Afterpay pada halaman pengalihan. Pembayaran berubah dari `requires_action` ke `requires_payment_method`.
  </Step>
</Steps>

<Note>
  Afterpay membutuhkan jumlah transaksi minimal **\$50.01** agar muncul sebagai opsi pembayaran.
</Note>

### Sunbit Testing

<Steps>
  <Step title="Set billing country and currency">
    Pastikan `billing_address.country` adalah `US` dan `billing_currency` adalah `USD`.
  </Step>

  <Step title="Use a qualifying amount">
    Atur jumlah transaksi antara **$60.00 dan $19,999.00**.
  </Step>

  <Step title="Complete the Sunbit flow">
    Pilih Sunbit di checkout dan selesaikan aplikasi pembiayaan di mod Sunbit.
  </Step>

  <Step title="Test failure">
    Tutup mod Sunbit sebelum menyelesaikan alur untuk mensimulasikan aplikasi yang ditolak. Pembayaran beralih ke `requires_payment_method`.
  </Step>
</Steps>

<Note>
  Sunbit hanya muncul untuk pelanggan AS yang membayar dalam USD dengan jumlah antara **$60.00** dan **$19,999.00**.
</Note>

Untuk dokumentasi BNPL lengkap termasuk pengujian Billie B2B, lihat halaman [Buy Now Pay Later](/features/payment-methods/bnpl).

## Uji Dompet Digital

### Apple Pay

<Steps>
  <Step title="Enable test mode">
    Gunakan kunci API uji Dodo Payments Anda.
  </Step>

  <Step title="Add a card to Apple Wallet">
    Tambahkan kartu nyata ke Apple Wallet Anda. Dalam mode uji, kartu tidak akan dikenai biaya.
  </Step>

  <Step title="Complete test purchase">
    Buka checkout di perangkat Apple dan selesaikan alur Apple Pay.
  </Step>
</Steps>

<Warning>
  Apple Pay memerlukan HTTPS. Tidak akan muncul di `localhost` tanpa pengaturan SSL yang tepat. Verifikasi domain juga harus lengkap.
</Warning>

### Google Pay

<Steps>
  <Step title="Join the test card group">
    [Bergabunglah dengan grup kartu uji Google Pay](https://groups.google.com/g/googlepay-test-mode-stub-data) untuk mendapatkan kartu uji ditambahkan secara otomatis ke dompet Anda.
  </Step>

  <Step title="Enable test mode">
    Gunakan kunci API uji Dodo Payments Anda.
  </Step>

  <Step title="Complete test purchase">
    Pilih salah satu kartu uji di Google Pay untuk menyelesaikan transaksi.
  </Step>
</Steps>

### Amazon Pay, Cash App Pay & RevolutPay

Gunakan kunci API uji Anda dan ikuti alur checkout standar. Transaksi uji disimulasikan tanpa biaya nyata.

Untuk dokumentasi dompet digital lengkap termasuk verifikasi domain untuk Apple Pay, lihat halaman [Digital Wallets](/features/payment-methods/digital-wallets).

## Uji Metode Eropa

Metode pembayaran Eropa (iDEAL, Bancontact, EPS, Multibanco) dapat diuji dalam mode sandbox.

<Steps>
  <Step title="Enable test mode">
    Gunakan kunci API uji Dodo Payments Anda.
  </Step>

  <Step title="Set billing address">
    Atur negara alamat penagihan agar sesuai dengan metode pembayaran:

    * `NL` untuk iDEAL
    * `BE` untuk Bancontact
    * `AT` untuk EPS
    * `PT` untuk Multibanco
  </Step>

  <Step title="Set currency">
    Metode Eropa memerlukan mata uang EUR.
  </Step>

  <Step title="Complete test flow">
    Ikuti alur autentikasi bank yang disimulasikan di lingkungan uji.
  </Step>
</Steps>

Untuk dokumentasi metode pembayaran Eropa lengkap, lihat halaman [Europe](/features/payment-methods/europe).

## Praktik Terbaik dalam Pengujian

<AccordionGroup>
  <Accordion title="Test all payment scenarios">
    Jangan hanya menguji pembayaran yang berhasil. Uji penolakan, pembatalan, dan kasus tepi seperti dana tidak mencukupi.
  </Accordion>

  <Accordion title="Verify webhook handling">
    Pastikan endpoint webhook Anda memproses semua jenis acara dengan benar, terutama `payment.succeeded`, `payment.failed`, dan acara langganan.

    Gunakan [Dodo Payments CLI](/developer-resources/sdks/cli#webhook-testing) untuk menguji webhook secara lokal:

    * `dodo wh listen` meneruskan webhook uji langsung ke server lokal Anda
    * `dodo wh trigger` mengirimkan payload mock untuk semua 22 jenis acara
  </Accordion>

  <Accordion title="Test on real devices">
    Untuk Apple Pay dan Google Pay, uji di perangkat iOS dan Android yang sebenarnya. Simulator tidak sepenuhnya mereplikasi perilaku dompet.
  </Accordion>

  <Accordion title="Test regional methods with correct addresses">
    Metode pembayaran regional (UPI, iDEAL, dll.) memerlukan alamat penagihan yang sesuai. Alamat penagihan AS tidak akan menampilkan iDEAL.
  </Accordion>

  <Accordion title="Verify minimum amounts">
    Metode BNPL memerlukan minimal \$50.01. Uji apakah mereka benar-benar muncul/hilang berdasarkan total keranjang belanja.
  </Accordion>
</AccordionGroup>

## Halaman Terkait

<CardGroup cols={2}>
  <Card title="Cards" icon="credit-card" href="/features/payment-methods/cards">
    Pengujian kartu, 3D Secure, dan metode pembayaran yang tersimpan.
  </Card>

  <Card title="Digital Wallets" icon="wallet" href="/features/payment-methods/digital-wallets">
    Pengujian Apple Pay, Google Pay, Amazon Pay.
  </Card>

  <Card title="BNPL" icon="calendar-days" href="/features/payment-methods/bnpl">
    Pengujian Klarna, Afterpay, dan Billie.
  </Card>

  <Card title="India" icon="indian-rupee-sign" href="/features/payment-methods/india">
    Pengujian UPI dan mandat RBI.
  </Card>

  <Card title="Europe" icon="euro-sign" href="/features/payment-methods/europe">
    Pengujian iDEAL, Bancontact, EPS, Multibanco.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/developer-resources/webhooks">
    Siapkan webhook untuk acara uji.
  </Card>

  <Card title="CLI Webhook Testing" icon="terminal" href="/developer-resources/sdks/cli#webhook-testing">
    Uji webhook secara lokal dengan Dodo Payments CLI.
  </Card>
</CardGroup>
