A New Kind of Student Loan — Tokenizing Income Share Agreements and Trading them Using OpenLaw and Ethereum

Incomeshare.me is an Ethereum DApp leveraging OpenLaw to enable legally enforceable income share agreements and to facilitate a secondary market for them.

Photo by Fabian Blank on Unsplash

Income share agreements (ISAs) allow students to finance their education in exchange for giving up a percentage of their future earnings. Compared to traditional bank loans, ISAs are less risky for students and are gaining steam as a viable education funding model.

Using OpenLaw and Ethereum, rights and obligations created through ISAs can be represented as ERC-20 tokens. The combination of these platforms allow for the streamlined creation and trading of income share contracts which are legally enforceable throughout.

In this article, we‘ll learn about using incomeshare.me to manage everything having to do with ISAs. At a high level, the following are the key capabilities of the portal:

  1. Executing Income Share Agreements: the details of the financing agreement for a student’s education costs are captured in an ISA.
  2. Executing Income Share Assignments: interests in a student’s future income under an ISA can be sold/transferred.
  3. Management of Income Share Tokens: ISA token owners can view the details of each agreement and manage pending assignments.
  4. Repayment: students subject to an ISA can make payments on the portal.

Executing an Income Share Agreement

An OpenLaw agreement that can be executed between a Student and Provider, creating an ERC-20 token

On the Agreements page, a provider (e.g. a lender or an educational instution offering education for a deferred payment) and student are able to draft up an Income Share Agreement. This legally enforceable agreement will detail the manner in which the provider finances the student’s education, and in exchange, creates obligations for the student to pay back a percentage of their future income.

‘Preview’ and ‘Submit’ buttons are available for after the form fields are completed. Once the parties are happy with the Preview, the contract can be submitted and sent for signatures.

We leverage the OpenLaw JavaScript API to remotely interact with OpenLaw templates in our DApp. Execution of the OpenLaw ISA template concurrently makes an Ethereum smart contract call to mint ERC-20 tokens representing the legal relations between the provider and student (i.e. the provider’s interest in the student’s future income). The smart contract code can be found here.

Some important fields to note on this page:

  • email for signature: E-mails are sent to each of the provider/student at these e-mail addresses. The messages contain links for each signatory to execute the agreement on OpenLaw.
  • Company’s Ethereum address: 100 ERC-20 tokens are minted and transferred to this Ethereum address upon execution of the ISA.
  • full name of the student: the ERC-20 tokens are named after the student.

An example ERC-20 ISA token created by the execution of this contract is found on Etherscan at 0xa2D8dD3bb8Cf507f4a145Ee936052d3d4A8C7d21 on the Rinkeby testnet. We’ll be using this token address to demonstrate other functionality later on in this article, so keep an eye on it.

Managing your Tokens

On the Manage page, the DApp probes the above smart contract for ISA tokens owned by the Ethereum account of the user’s MetaMask browser extension:

The Manage page shows the ISA tokens that a user owns

All of the ERC-20 ISA tokens that the user owns are shown under the “Owned Tokens” tab. Clicking on a specific token contract address shows additional details relating to the ISA that created that particular ISA token. There’s more to explore on this page that we’ll discuss later.

If you’re playing around with this DApp, you’ll want to enter your Rinkeby MetaMask wallet address in the “Company’s Ethereum address” (because you‘re acting as the provider to get your hands on some ERC-20 ISA tokens) when filling out the Income Share Agreement above. You should see a new token appear here after execution of the OpenLaw ISA if all goes well!

So far, we’ve learned how to use incomeshare.me to tokenize Income Share Agreements and to check one’s ownership of those ERC-20 tokens. Next, we’ll look into transferring ownership of these tokens.

Secondary Markets

Now that we’ve enabled interests in a student’s future income to be tokenized, fractional ownership and transferability of these rights are all of a sudden possible.

Say a provider needs some liquidity and simply can’t wait to receive portions of the student’s income over a period of time. It would be favorable for the provider to have the option to sell some or all of their income share interest to a third party buyer to receive an immediate benefit. Well guess what, Incomeshare.me lets you do exactly that!

Executing an Income Share Assignment Agreement

An OpenLaw agreement that can be executed between a Buyer and Seller to assign an ERC-20 ISA token

On the Agreements page (under the “Income Share Assignment Agreement” tab), holders of ERC-20 ISA tokens are able to execute an OpenLaw contract to sell a number of their tokens in exchange for Ether.

Execution of the OpenLaw agreement calls another Ethereum smart contract (found here) to record details of the token sale on the blockchain.

Some important fields to note on this page:

  • Tokenized Income Share Address: the ERC-20 ISA token’s contract address.
  • How many ISA Tokens to Assign: The number of tokens being sold.
  • Buyer/Seller Ethereum address: the Ethereum wallet addresses of the Buyer/Seller.
  • Purchase Price: the price in ETH for which the specified number of tokens are being sold.
  • Buyer/Seller email for signature: E-mails with links for each signatory to execute the agreement on OpenLaw are sent to these addresses.

On the Manage page (under the “Assignments” tab), the details of a token sale is shown for that token we were keeping track of. By hitting confirm, the Seller can confirm (using MetaMask) that they’ve received the purchase price of the tokens and send the ERC-20 tokens over to the Buyer.

Checking the token balances of each of the accounts involved in the transaction, we see that 20 ERC-20 ISA tokens have been successfully transferred to the Buyer. Sweet!

Payment of the Income Share

Say the student is now in the phase of their ISA where they’re earning a salary and has to make monthly payments. The ERC-20 token representing the ISA may have been transferred all over the place, so are (former) students going to have to make separate payments to all of the different token holders? Thankfully not.

Using Ethereum smart contracts, the student only needs to pay into the token contract address; the payment is automatically divided between holders of the token based on their percentage ownership. Let’s look at an example.

Where students may make payments into their ERC-20 ISA token

On the Student page, using the same token contract address from earlier, we make a payment of 2 ETH (acting as the student here).

Apportionment of ETH payment from student between token holders

Checking the Manage page under each of the Buyer/Seller’s accounts, that 2 ETH is divvied up between the token holders automatically! A repayment system that is agnostic to the identity of token holders allows for those participating in the secondary ISA marketplace to benefit while allowing students to easily fulfill their payment obligations.


Through OpenLaw and Ethereum, ERC-20 tokens representing income share agreements between providers and students can be created. Incomeshare.me provides an end-to-end portal allowing for these income share contracts to be created, transferred, and managed.

As this alternative model for funding higher-education becomes more popular, enabling a secondary market would accelerate its adoption by providing liquidity and opportunities to mitigate risk, both attractive qualities for investors. Future work on incomeshare.me will focus on providing a more seamless ERC-20 ISA token trading experience.

To learn more about OpenLaw, check out their site and documentation. I’m happy to answer any questions or just to chat. Hit me up on the community Slack channel (Josh Ma), on Github, or on Twitter.

Reference links