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

# Dispute and Chargeback

> A systematic, tiered closed-loop defense system covering three core stages: Chargeback Alert, Customer Dispute, and Chargeback.

export const CardGroup = ({children, cols = 2}) => {
  const items = Array.isArray(children) ? children.filter(Boolean) : [children];
  const layoutColumns = items.length === 3 ? 3 : cols === 1 ? 1 : 2;
  return <div className="waffo-guide-cards not-prose my-4 grid gap-4" data-columns={layoutColumns}>
      <style>{`
        .waffo-guide-cards {
          grid-template-columns: minmax(0, 1fr) !important;
        }
        .waffo-guide-cards .waffo-clickable-card {
          transition:
            transform 180ms ease,
            border-color 180ms ease,
            box-shadow 180ms ease,
            background 180ms ease !important;
        }
        html:not(.dark) .waffo-guide-cards .waffo-clickable-card:hover {
          border-color: rgba(109, 145, 245, 0.45) !important;
        }
        html.dark .waffo-guide-cards .waffo-clickable-card:hover,
        .dark .waffo-guide-cards .waffo-clickable-card:hover {
          border-color: rgba(109, 145, 245, 0.45) !important;
        }
        @media (min-width: 768px) {
          .waffo-guide-cards[data-columns="2"],
          .waffo-guide-cards[data-columns="3"] {
            grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
          }
          .waffo-guide-cards[data-columns="3"] .waffo-guide-card:nth-of-type(3) {
            grid-column: 1 / -1 !important;
          }
        }
      `}</style>
      {items}
    </div>;
};

export const Card = ({title, icon, href, children}) => {
  const resolvedHref = (() => {
    if (!href || typeof href !== "string") return href;
    if (!href.startsWith("/") || href.startsWith("//")) return href;
    if (typeof window === "undefined") return href;
    const docsPrefixMatch = window.location.pathname.match(/^\/docs(?=\/|$)/);
    const docsPrefix = docsPrefixMatch ? docsPrefixMatch[0] : "";
    if (!docsPrefix) {
      return href.startsWith("/docs/") ? href.slice(5) : href;
    }
    return href.startsWith(`${docsPrefix}/`) ? href : `${docsPrefix}${href}`;
  })();
  const Wrapper = resolvedHref ? "a" : "div";
  const interactiveClass = resolvedHref ? "waffo-clickable-card" : "";
  return <Wrapper href={resolvedHref} className={`waffo-guide-card waffo-hover-card block rounded-xl border border-slate-200 dark:border-neutral-700 bg-gradient-to-b from-slate-50 to-white dark:from-neutral-900 dark:to-neutral-950 p-6 no-underline ${interactiveClass}`}>
      <div className="flex flex-col items-start gap-3">
        <span className="inline-flex h-10 w-10 items-center justify-center rounded-lg border border-slate-200 dark:border-neutral-700 bg-white dark:bg-neutral-900 text-blue-700 dark:text-[#4D7CFF]">
          <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
            {icon === "arrow-right" && <path d="M5 12h14M13 5l7 7-7 7" />}
            {icon === "bell" && <path d="M10 21h4M18 8a6 6 0 0 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9" />}
            {icon === "code" && <>
                <path d="m16 18 6-6-6-6" />
                <path d="m8 6-6 6 6 6" />
              </>}
            {icon === "globe" && <>
                <circle cx="12" cy="12" r="10" />
                <path d="M2 12h20" />
                <path d="M12 2a15.3 15.3 0 0 1 0 20" />
                <path d="M12 2a15.3 15.3 0 0 0 0 20" />
              </>}
            {icon === "gear" && <>
                <circle cx="12" cy="12" r="3" />
                <path d="M19.4 15a1.7 1.7 0 0 0 .3 1.9l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.9-.3 1.7 1.7 0 0 0-1 1.6V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1-1.6 1.7 1.7 0 0 0-1.9.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.9 1.7 1.7 0 0 0-1.6-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.6-1 1.7 1.7 0 0 0-.3-1.9l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.9.3H9a1.7 1.7 0 0 0 1-1.6V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.6 1.7 1.7 0 0 0 1.9-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.9v.1a1.7 1.7 0 0 0 1.6 1h.1a2 2 0 1 1 0 4H21a1.7 1.7 0 0 0-1.6 1Z" />
              </>}
            {icon === "shield-check" && <>
                <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z" />
                <path d="m9 12 2 2 4-4" />
              </>}
            {icon === "circle-check" && <>
                <circle cx="12" cy="12" r="10" />
                <path d="m9 12 2 2 4-4" />
              </>}
            {icon === "arrow-trend-up" && <path d="m3 17 6-6 4 4 8-8M14 7h7v7" />}
            {icon === "arrows-rotate" && <>
                <path d="M21 12a9 9 0 0 1-15.5 6.2" />
                <path d="M3 12A9 9 0 0 1 18.5 5.8" />
                <path d="M21 3v6h-6" />
                <path d="M3 21v-6h6" />
              </>}
            {icon === "calendar" && <>
                <rect x="3" y="4" width="18" height="17" rx="2" />
                <path d="M16 2v4M8 2v4M3 10h18" />
              </>}
            {icon === "clock" && <>
                <circle cx="12" cy="12" r="10" />
                <path d="M12 6v6l4 2" />
              </>}
            {icon === "desktop" && <>
                <rect x="3" y="4" width="18" height="12" rx="2" />
                <path d="M8 20h8M12 16v4" />
              </>}
            {icon === "calculator" && <>
                <rect x="5" y="2" width="14" height="20" rx="2" />
                <path d="M8 6h8M8 10h.01M12 10h.01M16 10h.01M8 14h.01M12 14h.01M16 14h.01M8 18h.01M12 18h.01M16 18h.01" />
              </>}
            {icon === "plug" && <>
                <path d="M12 22v-5" />
                <path d="M9 8V2" />
                <path d="M15 8V2" />
                <path d="M18 8v5a6 6 0 0 1-12 0V8Z" />
              </>}
            {icon === "gauge" && <>
                <path d="M12 14l4-4" />
                <path d="M3.3 19a10 10 0 1 1 17.4 0" />
              </>}
            {icon === "layer-group" && <>
                <path d="m12 3 9 5-9 5-9-5 9-5Z" />
                <path d="m3 12 9 5 9-5" />
                <path d="m3 16 9 5 9-5" />
              </>}
            {icon === "laptop-mobile" && <>
                <rect x="3" y="4" width="13" height="10" rx="2" />
                <path d="M2 18h12" />
                <rect x="17" y="8" width="5" height="12" rx="1" />
              </>}
            {icon === "paintbrush" && <>
                <path d="m14 5 5 5" />
                <path d="M4 20c2 0 4-1 4-3 0-1.1-.9-2-2-2-2 0-3 2-3 4 0 .6.4 1 1 1Z" />
                <path d="m6 15 9-9a2.1 2.1 0 0 1 3 3l-9 9" />
              </>}
            {icon === "key" && <>
                <circle cx="7.5" cy="14.5" r="4.5" />
                <path d="m11 11 8-8" />
                <path d="m15 7 2 2" />
              </>}
            {icon === "circle-minus" && <>
                <circle cx="12" cy="12" r="10" />
                <path d="M8 12h8" />
              </>}
            {icon === "wallet" && <>
                <path d="M3 7h15a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H3Z" />
                <path d="M3 7V5a2 2 0 0 1 2-2h11" />
                <path d="M16 14h.01" />
              </>}
            {icon === "users" && <>
                <path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" />
                <circle cx="9" cy="7" r="4" />
                <path d="M22 21v-2a4 4 0 0 0-3-3.9" />
                <path d="M16 3.1a4 4 0 0 1 0 7.8" />
              </>}
            {icon === "link" && <>
                <path d="M10 13a5 5 0 0 0 7.1 0l2-2a5 5 0 0 0-7.1-7.1l-1.1 1.1" />
                <path d="M14 11a5 5 0 0 0-7.1 0l-2 2a5 5 0 0 0 7.1 7.1l1.1-1.1" />
              </>}
            {icon === "eye" && <>
                <path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12Z" />
                <circle cx="12" cy="12" r="3" />
              </>}
            {icon === "file-lines" && <>
                <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8Z" />
                <path d="M14 2v6h6" />
                <path d="M8 13h8M8 17h6" />
              </>}
            {icon === "sliders" && <>
                <path d="M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3" />
                <path d="M2 14h4M10 8h4M18 16h4" />
              </>}
            {icon === "folder" && <path d="M3 6a2 2 0 0 1 2-2h5l2 2h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z" />}
            {icon === "dollar-sign" && <>
                <path d="M12 2v20" />
                <path d="M17 5H9.5a3.5 3.5 0 0 0 0 7H14a3.5 3.5 0 0 1 0 7H6" />
              </>}
            {icon === "toggle-on" && <>
                <rect x="2" y="7" width="20" height="10" rx="5" />
                <circle cx="16" cy="12" r="3" />
              </>}
            {icon === "infinity" && <path d="M18.2 8.2c2.1 0 3.8 1.7 3.8 3.8s-1.7 3.8-3.8 3.8c-4.2 0-8.2-7.6-12.4-7.6C3.7 8.2 2 9.9 2 12s1.7 3.8 3.8 3.8c4.2 0 8.2-7.6 12.4-7.6Z" />}
            {icon === "book-open" && <>
                <path d="M2 4h7a3 3 0 0 1 3 3v14a3 3 0 0 0-3-3H2Z" />
                <path d="M22 4h-7a3 3 0 0 0-3 3v14a3 3 0 0 1 3-3h7Z" />
              </>}
            {icon === "circle-play" && <>
                <circle cx="12" cy="12" r="10" />
                <path d="m10 8 6 4-6 4Z" />
              </>}
            {icon === "gamepad" && <>
                <rect x="3" y="8" width="18" height="10" rx="5" />
                <path d="M8 13h3M9.5 11.5v3M16 13h.01M18 11h.01" />
              </>}
            {icon === "rocket" && <>
                <path d="M4.5 16.5c-1.5 1.3-2 3.5-2 5 1.5 0 3.7-.5 5-2" />
                <path d="M9 15 4 10l6-6c4-4 9-2 10-1 1 1 3 6-1 10l-6 6-5-5Z" />
                <path d="M15 9h.01" />
              </>}
            {(icon === "flask" || icon === "flask-vial") && <>
                <path d="M9 2v6L4 20a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2L15 8V2" />
                <path d="M8 2h8" />
                <path d="M7 16h10" />
              </>}
            {icon === "credit-card" && <>
                <rect x="3" y="5" width="18" height="14" rx="2" />
                <path d="M3 10h18" />
                <path d="M7 15h4" />
              </>}
            {icon === "puzzle-piece" && <path d="M14 7V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v3H3a1 1 0 0 0-1 1v4a2 2 0 0 0 2 2h2v3a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2v-3h3a2 2 0 0 0 2-2V8a1 1 0 0 0-1-1Z" />}
            {(icon === "arrows-spin" || icon === "repeat") && <>
                <path d="M17 2l4 4-4 4" />
                <path d="M3 11V9a4 4 0 0 1 4-4h14" />
                <path d="M7 22l-4-4 4-4" />
                <path d="M21 13v2a4 4 0 0 1-4 4H3" />
              </>}
            {icon === "coins" && <>
                <ellipse cx="8" cy="7" rx="5" ry="3" />
                <path d="M3 7v6c0 1.7 2.2 3 5 3s5-1.3 5-3V7" />
                <path d="M13 10c2.8 0 5 1.3 5 3v4c0 1.7-2.2 3-5 3-1.2 0-2.3-.2-3.1-.7" />
              </>}
            {icon === "triangle-exclamation" && <>
                <path d="m21.7 18-8-14a2 2 0 0 0-3.4 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.7-3Z" />
                <path d="M12 9v4M12 17h.01" />
              </>}
            {icon === "list" && <>
                <path d="M8 6h13M8 12h13M8 18h13" />
                <path d="M3 6h.01M3 12h.01M3 18h.01" />
              </>}
            {icon === "star" && <path d="m12 2 3.1 6.3 6.9 1-5 4.9 1.2 6.8-6.2-3.3L5.8 21 7 14.2 2 9.3l6.9-1Z" />}
            {(icon === "rotate" || icon === "arrow-rotate-left") && <>
                <path d="M3 12a9 9 0 1 0 3-6.7" />
                <path d="M3 4v6h6" />
              </>}
            {icon === "clock-rotate-left" && <>
                <path d="M3 12a9 9 0 1 0 3-6.7" />
                <path d="M3 4v6h6" />
                <path d="M12 7v5l3 2" />
              </>}
            {icon === "circle-xmark" && <>
                <circle cx="12" cy="12" r="10" />
                <path d="m15 9-6 6M9 9l6 6" />
              </>}
            {icon === "paper-plane" && <path d="m22 2-7 20-4-9-9-4Z" />}
            {icon === "signal" && <>
                <path d="M2 20h.01M7 20v-4M12 20v-8M17 20V8M22 20V4" />
              </>}
            {icon === "circle-question" && <>
                <circle cx="12" cy="12" r="10" />
                <path d="M9.1 9a3 3 0 1 1 5.8 1c0 2-3 2-3 4" />
                <path d="M12 17h.01" />
              </>}
            {icon === "palette" && <>
                <path d="M12 22a10 10 0 1 1 7.5-3.4c-.9 1-2.4.4-2.4-.9 0-1.1-.9-2-2-2h-1.4c-1.2 0-2.2 1-2.2 2.2 0 1.1.9 2.1 2.1 2.1" />
                <circle cx="7.5" cy="10.5" r=".8" />
                <circle cx="12" cy="7.5" r=".8" />
                <circle cx="16.5" cy="10.5" r=".8" />
              </>}
            {(!icon || !["arrow-right", "bell", "code", "globe", "gear", "shield-check", "circle-check", "arrow-trend-up", "arrows-rotate", "calendar", "clock", "desktop", "calculator", "plug", "gauge", "layer-group", "laptop-mobile", "paintbrush", "key", "circle-minus", "wallet", "users", "link", "eye", "file-lines", "sliders", "folder", "dollar-sign", "toggle-on", "infinity", "book-open", "circle-play", "gamepad", "rocket", "flask", "flask-vial", "credit-card", "puzzle-piece", "arrows-spin", "repeat", "coins", "triangle-exclamation", "list", "star", "rotate", "arrow-rotate-left", "clock-rotate-left", "circle-xmark", "paper-plane", "signal", "circle-question", "palette"].includes(icon)) && <path d="M13 2 4 14h7l-1 8 9-12h-7l1-8Z" />}
          </svg>
        </span>
        <div className="flex flex-col gap-2">
          <h4 className="m-0 text-base font-semibold text-slate-900 dark:text-slate-100">
            {title}
          </h4>
          <div className="m-0 text-sm leading-6 text-slate-600 dark:text-slate-300">
            {children}
          </div>
        </div>
      </div>
    </Wrapper>;
};

export const DisputeMerchantValueCards = ({items = [], columns = 2}) => {
  const gridClass = columns === 1 ? "grid-cols-1" : "grid-cols-1 md:grid-cols-2";
  const iconSrc = "/images/essentials/dispute-chargeback/check-icon.svg";
  return <div className={`dispute-merchant-value-cards not-prose my-4 grid gap-4 ${gridClass}`}>
      <style>{`
        .dispute-merchant-value-cards .dispute-check-icon {
          background-color: #071f66;
        }
        .dark .dispute-merchant-value-cards .dispute-check-icon {
          background-color: #4D7CFF;
        }
      `}</style>
      {items.map(item => <div key={item.title} className="waffo-hover-card rounded-xl border border-slate-200 dark:border-neutral-700 bg-gradient-to-b from-slate-50 to-white dark:from-neutral-900 dark:to-neutral-950 p-5">
          <div className="flex items-start gap-3">
            <span className="dispute-check-icon mt-0.5 inline-flex h-5 w-5 shrink-0" aria-hidden="true" style={{
    WebkitMask: `url("${iconSrc}") center / contain no-repeat`,
    mask: `url("${iconSrc}") center / contain no-repeat`
  }} />
            <div className="flex flex-col gap-2">
              <h4 className="m-0 text-base font-semibold text-slate-900 dark:text-slate-100">
                {item.title}
              </h4>
              <p className="m-0 text-sm leading-6 text-slate-600 dark:text-slate-300">
                {item.description}
              </p>
            </div>
          </div>
        </div>)}
    </div>;
};

## Overview

In cross-border and local payment operations, post-transaction disputes and fund recovery risks are critical operational challenges for merchants. The Waffo Dispute & Chargeback Management Platform has built a systematic, tiered closed-loop defense system to address this. This system covers **three core stages**, responding to different phases of risk evolution:

<Tabs>
  <Tab title="Chargeback Alert">
    <div className="not-prose rounded-xl border border-blue-200 dark:border-blue-900/60 bg-blue-50/70 dark:bg-blue-950/30 p-4 my-4">
      <div className="flex items-center gap-2 text-slate-900 dark:text-slate-100 mt-0 mb-3">
        <span className="inline-flex items-center justify-center w-5 h-5 rounded-full bg-blue-100 dark:bg-blue-900/50 text-blue-700 dark:text-blue-200 shrink-0">
          <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
            <path d="M9 18h6" />

            <path d="M10 22h4" />

            <path d="M12 2a7 7 0 0 0-4 12.74V16h8v-1.26A7 7 0 0 0 12 2Z" />
          </svg>
        </span>

        <p className="font-semibold text-sm m-0">Concept</p>
      </div>

      <p className="text-slate-600 dark:text-slate-300 text-sm leading-6 my-0">An early risk signal notification provided by card schemes or third-party networks (e.g., Visa RDR, Mastercard Ethoca) after a cardholder complains to the issuing bank but before the bank formally initiates the chargeback process.</p>
    </div>

    **Role & Importance**

    This is the most proactive and cost-effective defense stage. Receiving and acting on alerts means resolving disputes before the bank opens a case, preventing the transaction from escalating into a formal chargeback record. This effectively avoids bank fines and protects the merchant's chargeback ratio and account health.
  </Tab>

  <Tab title="Customer Dispute">
    <div className="not-prose rounded-xl border border-blue-200 dark:border-blue-900/60 bg-blue-50/70 dark:bg-blue-950/30 p-4 my-4">
      <div className="flex items-center gap-2 text-slate-900 dark:text-slate-100 mt-0 mb-3">
        <span className="inline-flex items-center justify-center w-5 h-5 rounded-full bg-blue-100 dark:bg-blue-900/50 text-blue-700 dark:text-blue-200 shrink-0">
          <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
            <path d="M9 18h6" />

            <path d="M10 22h4" />

            <path d="M12 2a7 7 0 0 0-4 12.74V16h8v-1.26A7 7 0 0 0 12 2Z" />
          </svg>
        </span>

        <p className="font-semibold text-sm m-0">Concept</p>
      </div>

      <p className="text-slate-600 dark:text-slate-300 text-sm leading-6 my-0">A formal information inquiry process initiated by the issuing bank or payment channel. The bank requests the merchant to provide transaction evidence to verify authenticity. At this stage, funds have typically not yet been debited.</p>
    </div>

    **Role & Importance**

    This is the negotiation and evidence clarification stage. Timely and accurate response to dispute requests by providing sufficient proof of transaction (e.g., proof of delivery, user authorization logs) is key to successfully blocking case escalation and avoiding financial loss. Effective dispute handling significantly reduces the probability of conversion to formal chargebacks and prevents escalation due to non-response.
  </Tab>

  <Tab title="Chargeback">
    <div className="not-prose rounded-xl border border-blue-200 dark:border-blue-900/60 bg-blue-50/70 dark:bg-blue-950/30 p-4 my-4">
      <div className="flex items-center gap-2 text-slate-900 dark:text-slate-100 mt-0 mb-3">
        <span className="inline-flex items-center justify-center w-5 h-5 rounded-full bg-blue-100 dark:bg-blue-900/50 text-blue-700 dark:text-blue-200 shrink-0">
          <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
            <path d="M9 18h6" />

            <path d="M10 22h4" />

            <path d="M12 2a7 7 0 0 0-4 12.74V16h8v-1.26A7 7 0 0 0 12 2Z" />
          </svg>
        </span>

        <p className="font-semibold text-sm m-0">Concept</p>
      </div>

      <p className="text-slate-600 dark:text-slate-300 text-sm leading-6 my-0">The formal process where the issuing bank forcibly debits the disputed amount from the merchant's account after the cardholder or issuer formally contests the transaction. This process follows strict rules and timelines and incurs handling fees.</p>
    </div>

    **Role & Importance**

    This is the final decision and fund execution stage of risk management. Here, merchants must submit compelling evidence to defend the chargeback (Representment) and recover funds. Systematic chargeback management directly impacts the merchant's fund recovery rate, operational costs (fines and fees; the total cost of a chargeback is often 2–3× the order value), and reconciliation accuracy.
  </Tab>
</Tabs>

The Waffo Platform integrates these three stages into a unified "Risk Sensing - Negotiation Response - Formal Defense" standardized closed loop. Through this system, we help merchants proactively intervene throughout the risk evolution chain, ultimately achieving the core goals of reducing financial loss, minimizing operational leakage, and improving processing efficiency and compliance.

***

## Chargeback alert

Providing a golden window for resolution to achieve optimal cost-efficiency before risks solidify into formal cases.

### Scenario description

When a cardholder questions a credit card transaction and contacts the issuing bank to complain, but the bank has not yet formally initiated the chargeback process, card schemes or third-party networks (e.g., Visa RDR, Mastercard Ethoca) generate alert signals. The transaction is in a non-mandatory negotiation window. Merchants have a golden processing time of **24-72 hours** to intervene proactively and prevent the case from being formally established.

### Core capabilities

<CardGroup cols={2}>
  <Card title="Multi-Channel Alert Ingestion" icon="bell">
    Connects with major card scheme alert networks like Visa RDR and Mastercard Ethoca for standardized access and centralized management of risk signals.
  </Card>

  <Card title="Smart Order Association" icon="link">
    Automatically and precisely matches merchant orders using multi-dimensional information such as transaction ID, amount, time, and card number masking, supported by manual auxiliary matching.
  </Card>

  <Card title="Automated Resolution Strategy" icon="gear">
    Supports rule-based automated action configurations, such as automatically executing refunds after an alert is triggered, maximizing the use of the window period to prevent chargebacks.
  </Card>

  <Card title="Full Process Visibility" icon="eye">
    Provides dedicated dashboards and case lists to track alert status, refund progress, and resolution results in real-time, with manual intervention support for abnormal cases.
  </Card>
</CardGroup>

### Merchant value

<DisputeMerchantValueCards
  columns={1}
  items={[
{
  title: "Prevent Loss Expansion",
  description:
    "Solve problems at the zero-fine, zero-record stage, fundamentally avoiding subsequent high chargeback costs and account risk control hazards.",
},
]}
/>

<DisputeMerchantValueCards
  columns={2}
  items={[
{
  title: "Improve Operational Efficiency",
  description:
    "Through automated strategies and smart matching, significantly reduce manual investigation and response time, ensuring processing is completed within the limited window.",
},
{
  title: "Protect Account Health",
  description:
    "Successfully handling alerts prevents the chargeback ratio from rising, maintaining the merchant's reputation rating with card schemes and acquirers.",
},
]}
/>

***

## Customer dispute

Effectively clarifying facts through standardized, professional evidence submission during the bank inquiry stage to stop cases from entering fund debit.

[Request the dispute handling operations manual →](mailto:support@waffo.com)

### Scenario description

The issuing bank or payment channel has formally initiated an information inquiry process, requiring the merchant to provide transaction vouchers to verify authenticity. This stage typically manifests as a "Retrieval Request" or "Request for Information (RFI)." Funds have not yet been debited, but the merchant must provide sufficient evidence within the specified timeframe, otherwise, the case may escalate to a formal chargeback.

### Core capabilities

<CardGroup cols={2}>
  <Card title="Automated Ticket & SLA Management" icon="gear">
    Automatically syncs dispute requests initiated by channels, generates structured tasks, and clearly marks response deadlines to avoid timeouts.
  </Card>

  <Card title="Standardized Evidence Submission" icon="file-lines">
    Provides a unified evidence upload portal supporting defense attachments tailored to channel requirements.
  </Card>

  <Card title="Closed-Loop Status Tracking" icon="arrows-rotate">
    Built-in complete dispute state machine (Pending Response, Under Review, Closed, Upgraded), with all operations, communication records, and attachments centrally logged for traceability.
  </Card>

  <Card title="Flexible Case Handling Mechanism" icon="sliders">
    Based on different channel rules, supports merchant evidence submission for channel adjudication, or proactive closure of cases where negotiation has been successful (where permitted).
  </Card>
</CardGroup>

### Merchant value

<DisputeMerchantValueCards
  columns={1}
  items={[
{
  title: "Maximize Interception Success Rate",
  description:
    "Through timely and standardized evidence submission, successfully persuades the bank to close the case before funds are debited, directly avoiding financial loss.",
},
]}
/>

<DisputeMerchantValueCards
  columns={2}
  items={[
{
  title: "Reduce Compliance Risk",
  description:
    "Systematic SLA management and process guidance ensure timeliness and response quality, meeting channel compliance requirements.",
},
{
  title: "Save Operational Costs",
  description:
    "Avoid disputes escalating into chargebacks, saving subsequent potential chargeback handling fees and manual defense costs.",
},
]}
/>

***

## Chargeback

Providing professional, efficient, full-process defense support to fully recover debited funds when cases enter the final adjudication stage.

[Request the chargeback handling operations manual →](mailto:support@waffo.com)

[Waffo Chargeback Management API: View Documentation →](/api-reference/introduction)

### Scenario description

The issuing bank or payment channel has formally initiated the chargeback process. Funds have been debited from the merchant account. The merchant must submit a formal defense (Representment) within the specified timeframe, providing complete evidence to request the card scheme to adjudicate and reverse the debit.

### Core capabilities

<CardGroup cols={2}>
  <Card title="End-to-End Case Lifecycle Management" icon="scale-balanced">
    Covers the complete process from case ingestion, merchant notification, evidence collection & submission, channel review, to final adjudication result.
  </Card>

  <Card title="Structured Defense & Evidence Management" icon="folder">
    Provides targeted evidence list guidance based on Reason Codes (e.g., Fraud, Duplicate Processing), supporting multi-file uploads and version management.
  </Card>

  <Card title="Integrated Fund & Fee Processing" icon="dollar-sign">
    Cases automatically associate with order amounts and currencies; supports chargeback fee configuration; fund freezes and unfreezes are automatically synced to generate clear reconciliation records.
  </Card>

  <Card title="Multi-Dimensional Notification & Collaboration" icon="bell">
    Ensures merchants are instantly aware of case dynamics via real-time Merchant Portal alerts, scheduled email notifications, and Case Management APIs, allowing participation in the most convenient way.
  </Card>
</CardGroup>

### Merchant value

<DisputeMerchantValueCards
  columns={1}
  items={[
{
  title: "Enhance Defense Professionalism & Win Rate",
  description:
    "Through structured guidance and centralized evidence management, it helps merchants prepare more complete and compliant defense materials, increasing the likelihood of fund recovery.",
},
]}
/>

<DisputeMerchantValueCards
  columns={2}
  items={[
{
  title: "Automate Financial Processing",
  description:
    "The system automatically handles records of fund freezes and unfreezes caused by chargebacks, providing a clear audit trail and greatly reducing the manual reconciliation burden for finance teams.",
},
{
  title: "Control Comprehensive Risk Costs",
  description:
    "Maximize recovery of debited funds through efficient management of defense workflows and result tracking, while clearly recording various fees to facilitate risk cost analysis and optimization.",
},
]}
/>

***

## Frequently asked questions

<AccordionGroup>
  <Accordion title="What is the fundamental difference between Alerts, Disputes, and Chargebacks?" defaultOpen>
    * **Alert:** A "Pre-emptive Opportunity." The bank has not opened a formal case. The goal is "Case Elimination."
    * **Dispute:** A "Mid-stream Negotiation." The bank has opened an inquiry. The goal is "Provide Evidence, Persuade Closure."
    * **Chargeback:** A "Post-event Adjudication." The bank has debited funds. The goal is "Submit Defense, Recover Funds."
  </Accordion>

  <Accordion title="Why did I receive a Chargeback directly without going through the Dispute stage?">
    This is mainly due to two reasons:

    * Not all issuing banks support the Alert or Retrieval Request workflow; some banks prefer to initiate a Chargeback directly.
    * Card schemes' Early Fraud Warning (EFW) systems and Dispute processing systems operate independently. Information may not sync, causing an Alert to arrive later than the Chargeback.
  </Accordion>

  <Accordion title="How can I improve the success rate of defense during the Chargeback stage?">
    Success depends on the quality and compliance of the evidence. The Waffo platform provides structured checklist guidance based on Reason Codes and advises merchants to ensure evidence is clear, complete, and targeted (e.g., providing proof of delivery with signature, clear proof of transaction authorization) to meet the issuing bank's review standards. Systematic processes also prevent technical failures due to timeouts or formatting errors.
  </Accordion>

  <Accordion title="Can Chargeback-related fees be avoided?">
    Once a formal Chargeback process begins, handling fees charged by the issuing bank or card scheme are typically non-refundable. Therefore, the most effective cost control strategy lies in proactive defense—fully utilizing the Alert and Dispute stages to resolve issues and preventing Chargebacks at the source.
  </Accordion>

  <Accordion title="Are Chargeback handling fees refundable? What if I win the Arbitration?">
    Generally, no. Once a formal Chargeback process is entered, the handling fee charged by the bank covers administrative costs and is not refunded regardless of the defense outcome. However, if a case proceeds to the Arbitration stage and the merchant wins, the high arbitration fees may potentially be refunded or borne by the losing party.
  </Accordion>
</AccordionGroup>

***

Need help? [Contact support](mailto:support@waffo.com)
