Tax Guide

Choose the tax jurisdiction and payment category for each batch and payment so Payment Labs collects the right tax forms and withholds the right amount.

Every payout carries a tax jurisdiction and a payment category. Together they decide which tax form the payee must complete before you can pay them, and how much tax Payment Labs withholds from the payment. This page explains both and how to set them.

Before you start

  • Payment Labs enables tax jurisdictions on your account during onboarding. Get Payor returns them in taxJurisdictions. An empty or missing list means no jurisdiction is enabled and no tax is processed.
  • Depending on your agreement, Payment Labs also remits withheld tax to the tax authority and issues tax documents to your payees. Ask your Payment Labs contact which of these services apply to you.

What Payment Labs does for you

  1. Collects tax forms. During onboarding, each payee completes the tax form for every jurisdiction you pay them under. The payee does this in the Payment Labs onboarding flow or the Payee Widget; you never handle the form.
  2. Decides payability per jurisdiction. A payee is payable for a jurisdiction only after completing its form. The payee object shows this in payableByJurisdiction, for example {"us": true, "de": false}. A payment can be submitted only when its payee is payable for the payment's jurisdiction.
  3. Calculates withholding at submit. When a payment is submitted, Payment Labs calculates the tax to withhold from the payee's form, residence and the payment category, and deducts it from what the payee receives.

Tax jurisdictions

taxJurisdiction is a lowercase code:

ValueJurisdictionForms the payee completes
usUnited StatesW-9 (US persons), W-8BEN (non-US individuals) or W-8BEN-E (non-US entities)
deGermanyGerman resident or non-resident form, for an individual or a business
fiFinlandFinnish tax form
gbUnited KingdomUK resident or non-resident form, for an individual or a business
myMalaysiaMalaysian resident or non-resident form, for an individual or a business
plPolandPolish resident or non-resident form, for an individual or a business
saSaudi ArabiaSaudi resident or non-resident form, for an individual or a business
seSwedenSwedish resident or non-resident form, for an individual or a business
noneNo jurisdictionNone. No tax form is collected, nothing is withheld, and no tax documents are issued for the payment.

You can send only none or a jurisdiction enabled on your account.

Defaults

The batch sets the jurisdiction, and its payments inherit it:

Jurisdictions enabled on your accounttaxJurisdiction on Create BatchDefault
NoneOptionalnone
OneOptionalYour one jurisdiction. Send none to opt a batch out.
Two or moreRequiredNone; the request fails without it.
  • Create Batch sets the batch's jurisdiction. Patch Batch cannot change it, so create a new batch to use another jurisdiction.
  • Create Payment uses the batch's jurisdiction unless you send taxJurisdiction on the payment.
  • Which jurisdiction applies to a payment is a tax decision for your business. Ask your tax adviser if you are unsure.

Payment categories

paymentCategory says what the payment is for. Some jurisdictions withhold differently by category, so classify every payment as precisely as you can.

ValueUse for
online-esport-prizePrize money for an esports competition played online.
in-person-esport-prizePrize money for an esports competition at a physical event in the jurisdiction.
in-person-esport-prize-out-of-jurisdictionPrize money for an esports competition at a physical event held outside the jurisdiction.
online-contest-prizePrize money for a non-esports contest held online.
in-person-contest-prizePrize money for a non-esports contest at a physical event.
online-misc-prizeAny other prize awarded online.
in-person-misc-prizeAny other prize awarded at a physical event.
athlete-prizePrize money or payments to athletes for competing in person.
remote-contractorsFees for services performed remotely by a contractor.
in-person-contractorsFees for services performed in person by a contractor.
reimbursementRepayment of expenses the payee incurred for you. Not income.
royaltiesRoyalties for the use of rights, content or intellectual property.

How categories affect withholding, in general terms:

  • In-person categories (in-person-*, athlete-prize) describe activity performed in the jurisdiction. They are the categories most likely to trigger withholding for non-resident payees.
  • Online and remote categories (online-*, remote-contractors) and in-person-esport-prize-out-of-jurisdiction describe activity performed outside the jurisdiction, and are less often subject to withholding for non-residents.
  • reimbursement is not taxable income in the United States, so nothing is withheld for us payments in this category.

For example, under us: a payee with a W-9 has nothing withheld unless the IRS has put them under backup withholding (24%). A payee with a W-8BEN or W-8BEN-E has nothing withheld on online and remote categories, and up to 30% withheld on in-person categories and royalties. For some in-person categories, a tax treaty with the payee's country of residence lowers the rate.

Defaults

  • Create Batch requires defaultPaymentCategory.
  • A payment uses the batch's defaultPaymentCategory unless you send paymentCategory when you create it.

Preview the tax on a payment

Submit Payment Dry Run returns the withholding before you submit, in payee.taxWithholdingAmount, together with fees and the amount the payee receives. Nothing is charged or saved.

curl -s -X POST "$BASE_URL/batches/$BATCH_ID/payments/$PAYMENT_ID/submit/dry-run" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}' | jq '.payee | {taxWithholdingAmount: .taxWithholdingAmount.formattedValue, payeeReceives: .totalDestinationAmount.formattedValue}'

The payee must have completed their tax form for the result to include withholding.

Change the category or jurisdiction

  • Before submit. Update Payment accepts paymentCategory and taxJurisdiction while the payment's isEditable is true.
  • For a whole batch. Patch Batch with a new defaultPaymentCategory and "updateExistingPayments": true also moves every DRAFT payment in the batch to the new category. Payments already submitted keep theirs.
  • After submit. You cannot change either through the API. Tax is calculated, and may already be withheld and reported, at submit time. Contact Payment Labs support; a correction can lead to tax penalties.
curl -s -X PATCH "$BASE_URL/batches/$BATCH_ID" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"defaultPaymentCategory": "in-person-esport-prize", "updateExistingPayments": true}'

Errors and edge cases

Statuscode in detailsMeaningWhat to do
400 VALIDATION_ERRORMISSING_REQUIRED_FIELD on taxJurisdictionYour account has two or more jurisdictions and the batch did not name one.Send taxJurisdiction.
400 VALIDATION_ERRORINVALID_TAX_JURISDICTION_OPTIONThe jurisdiction is not enabled on your account.Send none or one of GET /payors/me taxJurisdictions.
400 VALIDATION_ERRORINVALID_FIELD_ENUM_TYPE on taxJurisdiction or paymentCategoryThe value is not one of the values above.Use a value from the tables on this page.
409 on submitThe payee is not payable for this payment's jurisdiction, usually because their tax form is missing.Ask the payee to finish onboarding, or submit with autoSubmit: true so the payment goes out when they do.

Next steps


What’s Next

Did this page help you?