Skip to main content


Contract: JBETHERC20ProjectPayerDeployer

Interface: IJBETHERC20ProjectPayerDeployer

Allows anyone to deploy a new project payer contract.


function deployProjectPayer(
uint256 _defaultProjectId,
address payable _defaultBeneficiary,
bool _defaultPreferClaimedTokens,
string memory _defaultMemo,
bytes memory _defaultMetadata,
bool _defaultPreferAddToBalance,
IJBDirectory _directory,
address _owner
) external override returns (IJBProjectPayer projectPayer) { ... }
  • Arguments:
    • _defaultProjectId is the ID of the project whose treasury should be forwarded the project payer contract's received payments.
    • _defaultBeneficiary is the address that'll receive the project's tokens when the project payer receives payments.
    • _defaultPreferClaimedTokens is a flag indicating whether issued tokens from the project payer's received payments should be automatically claimed into the beneficiary's wallet.
    • _defaultMemo is the memo that'll be forwarded with the project payer's received payments.
    • _defaultMetadata is the metadata that'll be forwarded with the project payer's received payments.
    • _defaultPreferAddToBalance is a flag indicating if received payments should call the pay function or the addToBalance function of a project.
    • _directory is a contract storing directories of terminals and controllers for each project.
    • _owner is the address that will own the project payer.
  • The function can be accessed externally by anyone.
  • The function overrides a function definition from theIJBETHERC20ProjectPayerDeployer interface.
  • The function returns the project payer contract.


  1. Deploy the project payer contract.

    // Deploy the project payer.
    projectPayer = new JBETHERC20ProjectPayer(

    External references:

  2. Emit a DeployProjectPayer event with all relevant parameters.

    emit DeployProjectPayer(

    Event references: