> ## Documentation Index
> Fetch the complete documentation index at: https://waffo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Choosing an integration approach

> Compare Waffo's two checkout integration modes to choose the right approach.

## Two checkout modes

Waffo supports two checkout integration modes. Choose the one that fits your needs:

* **Waffo-hosted checkout**: Waffo provides the complete payment page. Users select a payment method and complete payment on the Waffo side.
* **Merchant-built checkout (direct API)**: The merchant builds their own payment page. Users select a payment method on the merchant side, and the merchant specifies the payment channel via API parameters.

## Comparison

| Dimension                | Waffo Checkout                                               | Merchant-built checkout                              |
| ------------------------ | ------------------------------------------------------------ | ---------------------------------------------------- |
| Payment method selection | User selects on the Waffo checkout page                      | User selects on the merchant page                    |
| Integration complexity   | Low (redirect only)                                          | High (custom UI + specify payment method parameters) |
| Payment method coverage  | Automatic full coverage; new methods require no code changes | Must maintain the supported list manually            |
| PCI DSS compliance       | Handled by Waffo                                             | Merchant is responsible (card payment scenarios)     |
| UI customization         | Supports theme color, logo, language, etc.                   | Fully custom                                         |
| Suitable for             | Most merchants                                               | Large merchants with their own checkout              |

## Waffo Checkout: request parameters

When users select a payment method on the Waffo side, the merchant does not need to pass `payMethodType` or `payMethodName`. The Waffo checkout automatically displays all available payment methods.

For the full payment method parameter rules and examples, see [Cashier integration - Customization options](/en/developer-docs/integration/checkout/customization).

## Merchant-built checkout: request parameters

The user has already selected a specific payment method on the merchant page. Pass parameters to tell Waffo which channel to use.

<Note>
  **Card payment**: Do not pass `payMethodName`; pass `payMethodType` only. Waffo automatically identifies Visa / Mastercard / JCB / AMEX via the card BIN.

  **VA**: Pass only `payMethodType: "VA"`. The user selects the specific bank on the Waffo side.

  **E-wallet**: Pass `payMethodName` to specify the wallet (e.g., DANA, GCash). This bypasses the Waffo checkout page and sends the user directly to the specified wallet's payment flow. The Waffo checkout itself supports all payment methods; passing `payMethodName` is specifically for routing users straight to a given wallet without showing the checkout selection screen.
</Note>

For the full request examples per payment method, see [Cashier integration - Customization options](/en/developer-docs/integration/checkout/customization).

## Embedding options

After receiving `orderAction`, you can direct the user to the payment page via redirect, iframe embed, or App WebView. For each option's suitable scenarios and requirements, see [Checkout integration steps](/en/developer-docs/integration/checkout/steps) and [Payment method integration notes](/en/developer-docs/tools-and-references/references/payment-method-integration-notes).
