Skip to main content

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.

The Waffo checkout supports several customization options. Merchants can configure its appearance and behavior through three methods.

Customization capabilities overview

CapabilityAPI parameterPortal settingSDK initialization
Primary colorSupportedSupportedSupported
Background colorSupportedSupportedSupported
Text colorSupportedSupportedSupported
Border radiusSupportedSupportedSupported
Merchant logoSupportedSupported-
LanguageSupported-Supported
Priority: API parameter > Portal setting > SDK initialization When the same capability is configured through multiple methods, the higher-priority setting takes effect.

Theme styles

Use the cashierAppearance field to configure the checkout theme. Four variables are supported:
VariableDescriptionExample
colorPrimaryPrimary color (buttons, links, etc.)"#0570de"
colorBackgroundBackground color"#ffffff"
colorTextText color"#30313d"
borderRadiusBorder radius"8px"

Method 1: API parameter (per-transaction)

cashierAppearance is a String field whose value is a JSON string. Internal quotes must be escaped.
{
  "paymentInfo": {
    "productName": "ONE_TIME_PAYMENT",
    "cashierAppearance": "{\"variables\":{\"colorPrimary\":\"#0570de\",\"colorBackground\":\"#ffffff\",\"colorText\":\"#30313d\",\"borderRadius\":\"8px\"}}"
  }
}

Method 2: Portal setting (global default)

Configure the default theme on the checkout customization page in the Merchant Portal. All transactions use this configuration by default unless overridden by an API parameter.

Method 3: SDK initialization (client-side default)

Pass the theme configuration when initializing the SDK:
const waffo = new WaffoSDK({
  env: 'production',
  appearance: {
    variables: {
      colorPrimary: '#0570de',
      colorBackground: '#ffffff',
      colorText: '#30313d',
      borderRadius: '8px'
    }
  }
});
Pass the merchant logo via brandInfo.cashierLogoUrl to display your brand identity on the checkout page. Two formats are supported:
FormatValueNotes
External URLStarts with https://Hosted by the merchant. Recommended size: 40×40 px
Portal pre-created IDStarts with logo_Obtained after uploading through the Merchant Portal

API parameter examples

Using an external URL:
{
  "brandInfo": {
    "cashierLogoUrl": "https://merchant.com/logo.png"
  }
}
Using a logo uploaded via the Portal:
{
  "brandInfo": {
    "cashierLogoUrl": "logo_abc123"
  }
}

Language settings

Set the checkout language via paymentInfo.cashierLanguage using IETF BCP 47 format.

Supported languages

Language codeLanguageApplicable currencyApplicable country
enEnglishAllAll
id-IDBahasa IndonesiaIDRIndonesia
vi-VNTiếng ViệtVNDVietnam
pt-BRPortuguêsBRLBrazil
es-MXEspañol (México)MXNMexico
es-PEEspañol (Perú)PENPeru
es-COEspañol (Colombia)COPColombia
es-CLEspañol (Chile)CLPChile
ru-RUРусскийRUBRussia
en-KEEnglish (Kenya)KESKenya
zh-Hant-TW繁體中文 (Taiwan)TWDTaiwan
zh-Hant-HK繁體中文 (Hong Kong)HKDHong Kong

Automatic selection logic

When cashierLanguage is not provided, Waffo selects the language automatically in the following order:
  1. Match the user’s country
  2. Match the language associated with the order currency
  3. Fall back to en
The language must match the currency and country. If a mismatched combination is provided, the API returns error code A0026.

Parameter example

{
  "paymentInfo": {
    "productName": "ONE_TIME_PAYMENT",
    "cashierLanguage": "id-ID"
  }
}

Payment method filtering

Control which payment methods are displayed on the checkout page. Recommended: Do not pass payMethodType or payMethodName, and let the checkout display all available methods automatically. Filtering options:
ScenarioParameterNotes
Show all payment methodsNot passedRecommended for widest coverage
Cards onlypayMethodType: "CREDITCARD,DEBITCARD"Waffo identifies card type automatically via BIN
Virtual account onlypayMethodType: "VA"User selects the specific bank on the checkout page
Specific walletpayMethodType + payMethodNameFor example "EWALLET" + "DANA"

payMethodCountry usage guide

payMethodCountry restricts the checkout to payment methods available in a specific country.
Do not pass payMethodCountry for global cards (CREDITCARD/DEBITCARD), as credit and debit cards are not tied to any specific country. Use this parameter only when you need to restrict to local payment methods.
{
  "paymentInfo": {
    "productName": "ONE_TIME_PAYMENT",
    "payMethodCountry": "IDN"
  }
}