Billing

Billing in Mezzanine takes place via a single contract through which all Mezzanine companies interact. The smart contract used for billing is not redeployed each time that a company is created.

Billing in Mezzanine in the initial version of the protocol is simple and does not require the billable party to escrow assets, pay a deposit, or pay interest on late payments. Five variables must be determined to send an invoice to another account:

  • The account that is the billable party

  • The asset that the invoice is denominated in

  • The amount to be paid

  • The due date

  • A category identifier, which will be abstracted from the user

The asset chosen for the invoice must be whitelisted by the Mezzanine team. Initially, all assets for invoices will be denominated in stablecoins. The Mezzanine team may choose to whitelist other tokens, such as bitcoin or ether, at a later time.

Once created, each invoice has an identifier. Paying an invoice requires using this identifier. Notably, the payer (i.e. the party that pays the invoice) does not need to be the billable party. Rather, the payer merely needs to provide the invoice identifier.

The amount specified by the invoice is subsequently transferred directly to the vendor, which is the account that created the invoice. Invoices can be canceled by the vendor at any time.

Since invoices do not require any form of escrow by the billable party, there are no on-chain punishments for the refusal to pay an invoice. The collection of an unpaid invoice for provided services should be enforced via litigation.

Category identifiers do not affect the invoice and are used to easily filter paid and unpaid invoices. An example of a category identifier would be "Advertising". Quarterly or annual reports could subsequently be automatically created via on-chain event emissions filtered by these category identifiers.

Last updated