Skip to main content


Contract: JBSingleTokenPaymentTerminalStore​‌

Interface: IJBPayoutRedemptionPaymentTerminal

Distributes payouts for a project with the distribution limit of its current funding cycle.

Payouts are sent to the preprogrammed splits. Any leftover is sent to the project's owner.

Anyone can distribute payouts on a project's behalf. The project can preconfigure a wildcard split that is used to send funds to msg.sender. This can be used to incentivize calling this function.

All funds distributed outside of this contract or any feeless terminals incure the protocol fee.


function distributePayoutsOf(
uint256 _projectId,
uint256 _amount,
uint256 _currency,
address _token,
uint256 _minReturnedTokens,
string calldata _memo
) external virtual override returns (uint256 netLeftoverDistributionAmount) { ... }
  • Arguments:
    • _projectId is the ID of the project having its payouts distributed.
    • _amount is the amount of terminal tokens to distribute, as a fixed point number with same number of decimals as this terminal.
    • _currency is the expected currency of the amount being distributed. Must match the project's current funding cycle's distribution limit currency.
    • _token is the token being distributed. This terminal ignores this property since it only manages one token.
    • _minReturnedTokens is the minimum number of terminal tokens that the _amount should be valued at in terms of this terminal's currency, as a fixed point number with the same number of decimals as this terminal.
    • _memo is a memo to pass along to the emitted event.
  • The function can be accessed externally by anyone.
  • The function can be overriden by inheriting contracts.
  • The resulting function overrides a function definition from the IJBPayoutRedemptionPaymentTerminal interface.
  • The function returns the amount that was sent to the project owner, as a fixed point number with the same amount of decimals as this terminal.


  1. Forward to the internal function.

    return _distributePayoutsOf(_projectId, _amount, _currency, _minReturnedTokens, _memo);

    Internal references: