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

# Sending partner payouts on Dub

> Learn more about how you can send payouts to your affiliate partners globally with Dub.

export const PayoutSupportedCountries = () => {
  const PAYOUT_METHODS = [{
    value: "all",
    label: "All"
  }, {
    value: "stablecoin",
    label: "Stablecoin"
  }, {
    value: "connect",
    label: "Bank account"
  }, {
    value: "paypal",
    label: "PayPal"
  }];
  const [countries, setCountries] = useState([]);
  const [expanded, setExpanded] = useState(false);
  const [searchQuery, setSearchQuery] = useState("");
  const [payoutMethod, setPayoutMethod] = useState("all");
  const showCount = 21;
  useEffect(() => {
    fetch("https://app.dub.co/api/supported-countries").then(r => r.json()).then(data => setCountries(data)).catch(() => {});
  }, []);
  const filtered = useMemo(() => {
    const q = searchQuery.trim().toLowerCase();
    return countries.filter(c => {
      const matchesSearch = !q || (c.name || "").toLowerCase().includes(q) || (c.code || "").toLowerCase().includes(q);
      const methods = Array.isArray(c.methods) ? c.methods : [];
      const matchesMethod = payoutMethod === "all" || methods.includes(payoutMethod);
      return matchesSearch && matchesMethod;
    });
  }, [countries, searchQuery, payoutMethod]);
  if (!countries.length) return <div style={{
    height: "200px"
  }} />;
  const displayed = expanded ? filtered : filtered.slice(0, showCount);
  const isCollapsed = filtered.length > showCount && !expanded;
  return <div className="not-prose relative">
      <div className="flex flex-col md:flex-row gap-2 pb-2">
        <input type="search" placeholder="Search countries..." value={searchQuery} onChange={e => setSearchQuery(e.target.value)} className="w-full rounded-lg border border-neutral-200 bg-white px-3 py-1.5 text-sm text-neutral-900 placeholder:text-neutral-400 focus:border-neutral-400 focus:outline-none focus:ring-1 focus:ring-neutral-400 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-100 dark:placeholder:text-neutral-500 dark:focus:border-neutral-600 dark:focus:ring-neutral-600" aria-label="Search countries" />
        <div className="flex flex-wrap md:flex-nowrap gap-2">
          {PAYOUT_METHODS.map(({value, label}) => <button key={value} type="button" onClick={() => setPayoutMethod(value)} className={`rounded-full px-4 py-1.5 text-sm whitespace-nowrap transition-colors ${payoutMethod === value ? "bg-neutral-900 text-white dark:bg-neutral-100 dark:text-neutral-900" : "border border-neutral-200 bg-white text-neutral-600 hover:bg-neutral-50 hover:text-neutral-900 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:hover:text-neutral-200"}`}>
              {label}
            </button>)}
        </div>
      </div>
      <div style={isCollapsed ? {
    maskImage: "linear-gradient(to bottom, black calc(100% - 80px), transparent)",
    WebkitMaskImage: "linear-gradient(to bottom, black calc(100% - 80px), transparent)",
    maxHeight: "420px",
    overflow: "hidden"
  } : {
    paddingBottom: expanded ? "48px" : "0"
  }} className="grid grid-cols-2 gap-5 py-4 sm:grid-cols-3">
        {displayed.map(({code, name, methods = []}) => {
    const methodLabels = PAYOUT_METHODS.filter(m => methods.includes(m.value)).map(m => m.label).join(" · ");
    return <div key={code} className="flex items-start gap-3">
              <img src={`https://hatscripts.github.io/circle-flags/flags/${code.toLowerCase()}.svg`} alt={code} width={32} height={32} className="size-5 shrink-0 rounded-full border border-neutral-200 shadow-sm dark:border-neutral-700 mt-0.5" draggable={false} noZoom />
              <div className="min-w-0 flex-1">
                <div className="text-sm font-medium text-neutral-900 dark:text-neutral-100">
                  {name}
                </div>
                {methodLabels ? <div className="mt-0.5 flex items-center gap-1 text-[10px] leading-tight text-neutral-500 dark:text-neutral-400">
                    <svg viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg" className="size-2.5">
                      <g fill="currentColor">
                        <path d="M15.25,9.75H4.75c-1.105,0-2-.895-2-2V3.75" fill="none" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.5" />
                        <polyline fill="none" points="11 5.5 15.25 9.75 11 14" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="1.5" />
                      </g>
                    </svg>
                    {methodLabels}
                  </div> : null}
              </div>
            </div>;
  })}
      </div>
      {filtered.length === 0 ? <p className="py-6 text-center text-sm text-neutral-500 dark:text-neutral-400">
          No countries match your filters.
        </p> : filtered.length > showCount && <button onClick={() => setExpanded(!expanded)} className="absolute left-1/2 -translate-x-1/2 transform rounded-full border border-neutral-200 bg-white px-4 py-1 text-sm text-neutral-500 shadow-sm hover:text-neutral-700 dark:border-neutral-700 dark:bg-neutral-800 dark:text-neutral-400 dark:hover:text-neutral-200" style={{
    bottom: isCollapsed ? "24px" : "-8px"
  }}>
            {expanded ? "Show less" : `Show ${filtered.length - showCount} more`}
          </button>}
    </div>;
};

<Tip>
  This feature is only available on [Business plans and
  above](https://dub.co/pricing/partners).
</Tip>

Dub Partners supports one-click (or fully automated) payouts to your partners around the world, [saving you upwards of 40+ hours a month](https://dub.co/customers/tella).

<Frame>
  <video src="https://assets.dub.co/cms/dub-partners-global-payouts.mp4" loop autoPlay muted playsInline />
</Frame>

If you're running a partner program with hundreds of partners, you can avoid manually sending each payout or [having to worry about payout failures](https://dub.co/blog/dub-vs-rewardful#partner-payouts). Dub lets you pay partners in one click, with tax compliance built in.

## Supported payout countries

Here's the full list of countries we support:

<PayoutSupportedCountries />

## Tax compliance

Dub Partners automatically handles tax compliance for your US-based partners by collecting [W-9 forms](https://support.stripe.com/express/questions/what-is-a-w-9-form) and sending out [1099-NEC forms](https://support.stripe.com/questions/intro-to-1099-nec-tax-forms-for-platforms-and-marketplaces) to individuals or entities that received \$600 or more in payments for a given fiscal year.

For non-US partners, Dub collects [W-8 forms](https://support.stripe.com/express/questions/what-is-a-w-8-form) to confirm they are not a US resident for tax purposes.

## Payouts dashboard

To view your payouts, go to your **Partner Program** tab and click on the **Payouts** page.

<Frame>
  <img src="https://mintcdn.com/dub/ekwYpueVEM-7sKVr/images/dub-partners/partner-payouts-location.png?fit=max&auto=format&n=ekwYpueVEM-7sKVr&q=85&s=ab51e7dac7046d564908214a1bc0f142" alt="Partner payouts tab" width="2014" height="950" data-path="images/dub-partners/partner-payouts-location.png" />
</Frame>

At the top of the page, you'll see a summary of your pending and completed payouts:

<Frame>
  <img src="https://assets.dub.co/cms/payout-summary-header.png" alt="Payout summary header" />
</Frame>

**Pending payouts**

This shows the total amount of commissions that are eligible for payment.

Hovering over the total will show you:

* **Eligible payouts** – due commissions for partners that have [configured their payout method](/help/article/receiving-payouts)).
* **Ineligible payouts** – due commissions for partners that have not [configured their payout methods yet](/help/article/receiving-payouts)).

Once you have at least one pending payout on Dub, you can click the **Confirm payouts** button to [review and confirm them](/help/article/partner-payouts#how-to-pay-your-partners).

**Total paid**

This shows the total amount of all commissions you've paid out to your partners.

Hovering over the total will show you:

* **Completed payouts** - Payouts that have been sent and confirmed
* **Processing payouts** - Payouts that are in progress (timing may vary based on the [selected payout method](/help/article/partner-payouts#payout-fees-and-timing))

Click **View invoices** to access past payout invoices.

In the payout table below, you can track and manage your payouts, confirm pending ones, and review past activity.

<Frame>
  <img src="https://mintcdn.com/dub/ekwYpueVEM-7sKVr/images/dub-partners/payouts-table.png?fit=max&auto=format&n=ekwYpueVEM-7sKVr&q=85&s=233fa1f462939066bf7cfb45ff5b78e3" alt="Payouts table" width="1007" height="437" data-path="images/dub-partners/payouts-table.png" />
</Frame>

| Column  | Description                                                                                                                 |
| ------- | --------------------------------------------------------------------------------------------------------------------------- |
| Period  | The payout range, starting from the date of the partner’s first commission to the end of the month of their last commission |
| Partner | The partner receiving the payout                                                                                            |
| Status  | The current payout [status](/help/article/partner-payouts#payout-statuses)                                                  |
| Paid    | The date the payout was confirmed, and by whom                                                                              |
| Amount  | The total amount paid to the partner                                                                                        |

## Payout statuses

A payout can have one of the following statuses:

| Status     | Description                                                                                                                                                                                                                                                                                            |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Pending    | Payouts that have not been processed yet, which can either be currently due or remain in pending status (in cases where the partner has not [configured their payout method](/help/article/receiving-payouts), or the payout has not yet reached the [minimum payout amount](#minimum-payout-amount)). |
| Processing | Payouts that have been [confirmed](#how-to-pay-your-partners) – depending on your [payout method](#payout-fees-and-timing), this step can take up to 4 business days.                                                                                                                                  |
| Sent       | When the funds have been sent to the partner's connected bank account.                                                                                                                                                                                                                                 |
| Completed  | When the payout has been fully paid out to the partner.                                                                                                                                                                                                                                                |
| Failed     | This is an edge case that happens with PayPal payouts, where the partner's PayPal is not set up to receive payouts. No action is required from your end in these cases – the partner will need to sort out their PayPal account and retry the payout from their end.                                   |
| Canceled   | For payouts that have been canceled – usually when a partner is banned from the program.                                                                                                                                                                                                               |

## Payout holding period

On Dub, you can also set a "payout holding period" to specify how long your commissions will be held in "pending" status before becoming eligible for payout.

This is useful for safeguarding against potential refunds, chargebacks, or fraudulent transactions.

<Info>
  If you're using our [Stripe integration](/docs/integrations/stripe), any
  refunds that happen on Stripe will be automatically detected by Dub and the
  [corresponding commission will also be marked as
  refunded](/help/article/partner-commissions#commission-statuses).
</Info>

To set a payout holding period for your program, go to your [individual groups](/help/article/partner-groups) and click on the **Settings** tab. Here you'll find the payout holding period settings in the "Addtional settings" group.

<Frame>
  <img src="https://assets.dub.co/cms/group-additional-settings.png" alt="Program payout settings" />
</Frame>

Your options include the following:

* 0 days (default)
* 7 days
* 14 days
* 30 days
* 60 days
* 90 days

When you update the payout holding period, you can apply the new setting to every group at once. Just select the box labelled `Apply to all groups` before confirming. The change will take effect right away.

<Frame>
  <img src="https://assets.dub.co/cms/confirm-holding-period.png" alt="payout holding period" />
</Frame>

## Minimum payout amount

You can also set an optional "minimum payout amount" (e.g. \$100). When this is set, partners with earnings below the minimum payout amount won't be eligible for payout until they reach the specific threshold set.

Click the button in the top right to show the **Payout settings**. Unlike the payout holding period, this setting is program-wide.

<Frame>
  <img src="https://mintcdn.com/dub/ekwYpueVEM-7sKVr/images/dub-partners/program-payout-settings.png?fit=max&auto=format&n=ekwYpueVEM-7sKVr&q=85&s=23efd75e0d3252fa71ab5a6b9a6e794a" alt="Payout settings button" width="1806" height="874" data-path="images/dub-partners/program-payout-settings.png" />
</Frame>

Your options include the following:

* \$0 (default)
* \$10
* \$20
* \$50
* \$100

<Frame>
  <img src="https://assets.dub.co/cms/payout-settings-drawer.png" alt="Payout settings" />
</Frame>

## How to pay your partners

When one or more of your partners have earned more than the minimum payout amount, click **Confirm payouts** from the [summary header](/help/article/partner-payouts#summary-header) to open the payout details.

* **Payout method:** Choose your payout method based on the accounts you’ve connected. Click the gear icon to manage [connected payment methods](https://app.dub.co/settings/billing).
* **Cutoff Period:** If set, only commissions earned on or before this date will be paid. Useful for reconciliation payouts for a specific fiscal period (e.g. last month, last quarter) without including newer commissions.

If everything looks right, click **Confirm payout** to trigger a new payout to your partners.

<Frame>
  <video src="https://assets.dub.co/cms/dub-payouts-experience.mp4" loop autoPlay muted playsInline />
</Frame>

### Selecting payouts

When confirming payouts, it will include all pending payouts, but there are times you only want to payout certain partners.

To do this, select the `Pending` status payouts and click **Confirm selected** at the top of the table. This will allow to review andconfirm payouts for the selected partners only.

<Frame>
  <img src="https://mintcdn.com/dub/ekwYpueVEM-7sKVr/images/dub-partners/payout-multi-select.png?fit=max&auto=format&n=ekwYpueVEM-7sKVr&q=85&s=fd9f71fcc99a1c277dd1b4de0cd2b707" alt="Multi-selecting partners for payout" width="1806" height="934" data-path="images/dub-partners/payout-multi-select.png" />
</Frame>

### Excluding payouts

If you need to exclude specific partners when confirming payouts, hover over the partner row in the payouts table and click **Exclude**. This excludes the partner from the current payout batch.

<Frame>
  <img src="https://mintcdn.com/dub/L3oLlR_6442i0NMM/images/dub-partners/exclude-payout.png?fit=max&auto=format&n=L3oLlR_6442i0NMM&q=85&s=ed8ab4c0aa27b218e4fde0fc4c01111e" alt="Excluding payouts" width="2014" height="1450" data-path="images/dub-partners/exclude-payout.png" />
</Frame>

If you need to include the partner again, hover over their row and click **Include**.

## Payout fees and timing

On Dub, you can send payouts using various payment methods such as ACH, credit card, and more. Depending on your Dub plan and the payment method you choose, your payout fees and timing will vary:

| Payment method                                                        | Fee                                                                                                  | Timing                |
| --------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | --------------------- |
| [ACH](/help/article/how-to-set-up-bank-account)                       | [Business / Advanced](https://dub.co/pricing): 5% <br /> [Enterprise](https://dub.co/enterprise): 3% | Up to 4 business days |
| Credit card / [Link](https://link.com/) <br /> Apple Pay / Google Pay | [Business / Advanced](https://dub.co/pricing): 8% <br /> [Enterprise](https://dub.co/enterprise): 6% | Instant               |

For larger payouts, we recommend using ACH as it is the most cost-effective option. Here's [how you can set up your bank account](/help/article/how-to-set-up-bank-account) for ACH payouts.
