Skip to main content

PaymentSplitterUpgradeable

PaymentSplitter

This contract allows to split Ether payments among a group of accounts. The sender does not need to be aware that the Ether will be split in this way, since it is handled transparently by the contract. The split can be in equal parts or in any other arbitrary proportion. The way this is specified is by assigning each account to a number of shares. Of all the Ether that this contract receives, each account will then be able to claim an amount proportional to the percentage of total shares they were assigned. PaymentSplitter follows a pull payment model. This means that payments are not automatically forwarded to the accounts but kept in this contract, and the actual transfer is triggered as a separate step by calling the {release} function. NOTE: This contract assumes that ERC20 tokens will behave similarly to native tokens (Ether). Rebasing tokens, and tokens that apply fees during transfers, are likely to not be supported as expected. If in doubt, we encourage you to run tests before sending real value to this contract.

Methods​

payee​

function payee(uint256 index) external view returns (address)

Getter for the address of the payee number index.

Parameters​

NameTypeDescription
indexuint256undefined

Returns​

NameTypeDescription
_0addressundefined

payeeCount​

function payeeCount() external view returns (uint256)

Get the number of payees

Returns​

NameTypeDescription
_0uint256undefined

releasable​

function releasable(address account) external view returns (uint256)

Getter for the amount of payee's releasable Ether.

Parameters​

NameTypeDescription
accountaddressundefined

Returns​

NameTypeDescription
_0uint256undefined

releasable​

function releasable(contract IERC20Upgradeable token, address account) external view returns (uint256)

Getter for the amount of payee's releasable token tokens. token should be the address of an IERC20 contract.

Parameters​

NameTypeDescription
tokencontract IERC20Upgradeableundefined
accountaddressundefined

Returns​

NameTypeDescription
_0uint256undefined

release​

function release(address payable account) external nonpayable

Triggers a transfer to account of the amount of Ether they are owed, according to their percentage of the total shares and their previous withdrawals.

Parameters​

NameTypeDescription
accountaddress payableundefined

release​

function release(contract IERC20Upgradeable token, address account) external nonpayable

Triggers a transfer to account of the amount of token tokens they are owed, according to their percentage of the total shares and their previous withdrawals. token must be the address of an IERC20 contract.

Parameters​

NameTypeDescription
tokencontract IERC20Upgradeableundefined
accountaddressundefined

released​

function released(contract IERC20Upgradeable token, address account) external view returns (uint256)

Getter for the amount of token tokens already released to a payee. token should be the address of an IERC20 contract.

Parameters​

NameTypeDescription
tokencontract IERC20Upgradeableundefined
accountaddressundefined

Returns​

NameTypeDescription
_0uint256undefined

released​

function released(address account) external view returns (uint256)

Getter for the amount of Ether already released to a payee.

Parameters​

NameTypeDescription
accountaddressundefined

Returns​

NameTypeDescription
_0uint256undefined

shares​

function shares(address account) external view returns (uint256)

Getter for the amount of shares held by an account.

Parameters​

NameTypeDescription
accountaddressundefined

Returns​

NameTypeDescription
_0uint256undefined

totalReleased​

function totalReleased(contract IERC20Upgradeable token) external view returns (uint256)

Getter for the total amount of token already released. token should be the address of an IERC20 contract.

Parameters​

NameTypeDescription
tokencontract IERC20Upgradeableundefined

Returns​

NameTypeDescription
_0uint256undefined

totalReleased​

function totalReleased() external view returns (uint256)

Getter for the total amount of Ether already released.

Returns​

NameTypeDescription
_0uint256undefined

totalShares​

function totalShares() external view returns (uint256)

Getter for the total shares held by payees.

Returns​

NameTypeDescription
_0uint256undefined

Events​

ERC20PaymentReleased​

event ERC20PaymentReleased(contract IERC20Upgradeable indexed token, address to, uint256 amount)

Parameters​

NameTypeDescription
token indexedcontract IERC20Upgradeableundefined
toaddressundefined
amountuint256undefined

Initialized​

event Initialized(uint8 version)

Parameters​

NameTypeDescription
versionuint8undefined

PayeeAdded​

event PayeeAdded(address account, uint256 shares)

Parameters​

NameTypeDescription
accountaddressundefined
sharesuint256undefined

PaymentReceived​

event PaymentReceived(address from, uint256 amount)

Parameters​

NameTypeDescription
fromaddressundefined
amountuint256undefined

PaymentReleased​

event PaymentReleased(address to, uint256 amount)

Parameters​

NameTypeDescription
toaddressundefined
amountuint256undefined