Skip to main content

Contract Fees

This page explains how your platform fee is applied to a contract, and how to set a different fee for an individual contract when your account is enabled for it.

Your platform fee is the amount you charge on a deal. It appears in the contract pricing as the externalPlatformFee line, together with its VAT line externalPlatformFeeTax.

Two ways your fee can be decided​

ModeHow your fee is decidedWho enables it
StandardThe fee agreed with WePay for your account applies to every contract and is charged to the buyer.Default for all accounts
Contract-levelYou set the fee on each contract, at the moment you create it. The fee can be charged to the buyer, the seller, or bothEnabled by WePay on request

Most accounts start in Standard mode. If you want to set fees per contract, contact WePay to have it enabled for your account.

How do I know which mode my account is in?

Create a contract without any fee field. If it succeeds, your account is in Standard mode. If it returns 400 BuyerOrSellerFeeRequired, contract-level fee is enabled.


Standard mode​

You send nothing extra. The fee agreed with WePay for your account is applied automatically and is charged to the buyer

{
"title": "Sell a property",
"contractServiceType": "Product",
"amount": 1000,
"BuyerParty": { "phoneNumber": "966583944460", "firstName": "Kareem", "lastName": "Hasan" },
"SellerParty": { "phoneNumber": "966583944461", "firstName": "Ashraf", "lastName": "Ali" }
}

If you send any of buyerFeePercentage, sellerFeePercentage, or noFeesApplied while in Standard mode, the request is rejected with 403 and error code 1887.


Contract-level mode​

Once contract-level fee is enabled, you decide the fee on every contract you create, and that fee can be charged to the buyer, the seller, or both

You must state the fee on every contract

In Contract-level mode, WePay does not fall back to your account's agreed fee. If you send no fee field, the request is rejected with 400 BuyerOrSellerFeeRequired.

If you want to charge nothing on a contract, say so explicitly with noFeesApplied: true.

Your options​

OptionFieldWhat it does
Charge the buyerbuyerFeePercentageYour fee is added to what the buyer pays at checkout
Charge the sellersellerFeePercentageYour fee is deducted from the seller's payout at release
Charge bothboth fieldsTwo separate fees, collected at two different moments
Charge nothingnoFeesApplied: trueYour fee is removed from this contract

See Combination rules.

Buyer fee​

buyerFeePercentage is a percentage from 0 to 100.

{
"amount": 1000,
"buyerFeePercentage": 5
}

The buyer sees your fee in the total before paying, and pays it at checkout.

Amount
Contract amount1,000.00
Your fee (5%)50.00
VAT on your fee (15%)7.50
Buyer pays1,057.50
Seller receives1,000.00

Seller fee​

sellerFeePercentage is a percentage from 0 to 100.

{
"amount": 1000,
"sellerFeePercentage": 3
}

A seller fee is not charged at checkout. The buyer pays the contract amount as normal, and your fee is deducted from the seller's payout when the contract is released.

Amount
Contract amount1,000.00
Buyer pays1,000.00
Your fee (3%)30.00
VAT on your fee (15%)4.50
Seller receives at release965.50
Seller fees are collected at release, not at payment

A contract with a seller fee funds for the contract amount. Your fee only becomes visible in the seller's payout at release time. Keep this in mind when reconciling: a funded contract does not yet mean a seller fee has been collected.

Charging both parties​

You can set both in the same contract. They are independent, and each is collected at its own point in the lifecycle.

{
"amount": 1000,
"buyerFeePercentage": 5,
"sellerFeePercentage": 3
}
Amount
Contract amount1,000.00
Buyer fee (5%) + VAT57.50
Buyer pays at checkout1,057.50
Seller fee (3%) + VAT34.50
Seller receives at release965.50

The contract pricing will contain two externalPlatformFee lines, one with "role": "buyer" and one with "role": "seller", each followed by its own externalPlatformFeeTax line.

Charging nothing​

Use noFeesApplied for promotions, launch campaigns, and negotiated exclusive deals.

{
"amount": 1000,
"noFeesApplied": true
}
Scope of noFeesApplied

noFeesApplied waives your own platform fee on this contract. Your buyer and seller will see no charge from you — ideal for promotions, launch campaigns, and exclusive deals.

This setting applies to your fee only. Your commercial agreement with WePay continues to apply to the contract as usual, exactly as it does on any other contract.


Combination rules​

noFeesApplied cannot be combined with a percentage. buyerFeePercentage and sellerFeePercentage can be sent together

A percentage of 0 is treated the same as not sending the field at all. To charge nothing, use noFeesApplied: true.


Minimum and maximum limits still apply​

If your agreement with WePay includes a minimum or maximum fee amount, those limits continue to apply to fees you set per contract. A percentage you set on a contract can therefore be adjusted upward to meet a minimum, or capped at a maximum. Always read the externalPlatformFee amount in the response rather than calculating it yourself.


Checking which fee was applied​

You can read fee information from the response pricing directly:

  • One externalPlatformFee line with "role": "buyer" — the buyer is paying your fee
  • One externalPlatformFee line with "role": "seller" — the seller is paying your fee
  • Two externalPlatformFee lines — both parties are paying
  • No externalPlatformFee line — no fee from you on this contract

See PricingLineType and PricingRole for the full list of line types.


Field reference​

FieldTypeRangeDescription
buyerFeePercentagenumber0–100Your fee, charged to the buyer at checkout
sellerFeePercentagenumber0–100Your fee, deducted from the seller at release
noFeesAppliedboolean—Removes your fee from this contract

All three fields require contract-level fee. In contract-level mode, you must send at least one of them.


Errors​

HTTPCodeMessageCause
4031887ContractLevelFeeNotEligiblecontract-level fee is not enabled for your account
400—BuyerOrSellerFeeRequiredContract-level mode, but no fee was specified
400—NoFeesAppliedCannotCombineWithFeesnoFeesApplied sent with a percentage
400—BuyerFeePercentageOutOfRangebuyerFeePercentage outside 0–100
400—SellerFeePercentageOutOfRangesellerFeePercentage outside 0–100

See Error Handling for full details.


Notes​

  • Fees are recorded on the contract when it is created. Changing your account settings later does not alter contracts that already exist.
  • With milestones, your fee is calculated per milestone and appears in each milestone's own pricing breakdown.