Tally Launches on Testnet

Try Cardstack’s metering and billing network for decentralized SaaS

Cardstack Team


We have launched Tally, the first part of the CARD Protocol — our multi-currency payment and billing network that makes the Cardstack Ecosystem worthwhile for all participants. Tally is now running on the Rinkeby test network to ensure security, stability, and future scalability.

Tally enables the billing workflow in the Cardstack Ecosystem

Tally is a metering and billing network for purchasing Software-as-a-Service in a decentralized way. Essentially, buyers and sellers of services use the software running on Tally to deposit funds and record billable usage. The system interacts with a set of Ethereum smart contracts and provides a multi-currency exchange rate service, enabling customers to pay for services in a variety of cryptocurrencies, including stablecoins. The current test version of Tally is designed for those who have experience interacting with the Ethereum testnet (Rinkeby). Future versions of Tally will be usable by people who do not own cryptocurrency and would like to buy usage credits with fiat currencies or a credit card instead.

Software-as-a-Service needs to be decentralized

SaaS platforms are usually owned by giant corporations. Cardstack’s vision is that open-source software will be provided to customers as hosted service by service providers around the world. This is similar to miners around the world running blockchain nodes on their own hardware in exchange for mining rewards, which are a type of hosting fees. We see consumer-facing software follow a similar paradigm, where enterprising service providers cooperate and compete to earn market share for offering high-quality hosting services. Tally is the metering and billing subsystem that enables multiple service providers to bill mutual customers who have funds in their prepaid accounts.

Go play around with Tally!

Tally is on Rinkeby testnet — the perfect playground for you to try it out as a customer or service provider.

Step 1

A prerequisite for using Tally is a MetaMask wallet. On the Rinkeby test network, you need tokens in your active MetaMask wallet to stake and to pay for prepaid cards. So, please set up your MetaMask wallet and get yourself some ETH on Rinkeby to pay for gas. Here is a guide to help you get started.

Step 2

You need to obtain some Rinkeby tokens that Tally accepts. There are different ways to do this:

  • Discord #faucet channel: In the Cardstack Discord server, you can request testing tokens from the #faucet channel. We have three different Rinkeby tokens for you to try out: CARD, DAI, and USDT. If you want to try Tally with any of these tokens, just post a message in our #faucet channel with your Rinkeby wallet address and the tokens that you’d like to test with, and we will airdrop you some testing tokens.
  • Self-serve with 0x token contracts: We accept two different 0x-owned Rinkeby tokens in Tally: WETH and REP. 0x has created a dApp that allows you to mint these tokens yourself, so we do not offer them in our #faucet channel. Our system uses real-world crypto token rates to exchange WETH and REP for CARD tokens when depositing them in a prepaid card. NOTE: The Rinkeby ecosystem reflects the same CARD token circulation that we have on mainnet. Therefore, in order to give everyone a chance to try out the Tally system on Rinkeby, we respectfully request that you do not mint more than 2,000 CARD tokens per person.

Step 3

The Tally UI consists of two main sections. One is meant for end users / customers, allowing them to buy and manage their prepaid cards. The other one is meant for service providers, who can register, manage their stake, and bill customers for using services. Feel free to play around with Tally as both a customer and a service provider, to figure out how this billing system works! We would love to hear your feedback in our Discord channel.

If you have any questions, check out our FAQ section.

Play with Tally as a customer…

In this demo, our product manager Dmitry Naidionov demonstrates how to buy a prepaid card and pay for services in the Cardstack Ecosystem.

Follow this link to our Tally home page and click “Buy a prepaid card”.

Tally supports both ERC-20 and ERC-777 tokens. To create a prepaid card, you select the token and the amount you want to deposit; then, you proceed with the purchase. For ERC-20 tokens, this is a three-step approval process: First, you need to reset the current authorization (if one exists). Second, you authorize the withdrawal of that amount from your account. Third, you deposit the funds. With ERC-777 tokens, this is a much quicker process that only requires one confirmation click. (ERC-777 are not broadly supported tokens on the Ethereum mainnet, but we want to future-proof our smart contracts; so, support is already included in this testnet version.)

Now, you have bought a prepaid card, which you can use to pay for services — once we have launched on mainnet. Internally, service providers will bill you in SSC (which is our internal billing unit; 1 SSC = USD 0.01), but that is nothing you need to worry about; when a bill is created, the SSC amount they charge you is automatically converted to the cryptocurrency that you used to pay for your prepaid card, based on the current cryptocurrency-USD exchange rate from Cryptocompare (SSC is pegged to USD). This means that the amount you are billed for will simply be deducted from the cryptocurrency balance on your prepaid card. However, for your convenience, we display the approximate available balance on your prepaid card in USD. Please note: Because that balance is calculated based on each day’s cryptocurrency-USD exchange rate, your available USD balance may fluctuate even if you don’t use your prepaid card. These fluctuations are merely a reflection of exchange rate changes; the actual amount you have available to spend in cryptocurrency (the original tokens that you used to pay for your prepaid card) remains the same as long as you don’t use your card. For example, if you purchased your prepaid card with ETH, your USD balance will change based on the ETH-USD exchange rate. But if you purchased your prepaid card with DAI, your USD balance will appear to be stable.

The cryptocurrency you have deposited by buying a prepaid card is sent to the reserve pool. This pool ensures that the amount of tokens customers pay for prepaid cards (which can be various cryptocurrencies) is backed by CARD tokens. Once your tokens are in the reserve pool, the equivalent amount of CARD tokens (determined by the current exchange rate) is taken out of it and transferred to the reward pool. When the CARD balance of the reserve pool is sufficiently depleted, Cardstack will withdraw the non-CARD tokens the reserve pool has accumulated and use them to buy more CARD tokens, which will then be deposited back into the reserve pool, to ensure the continuity of this reserve.

Now that you own a prepaid card, you can look at the details regarding your service providers. Note: Since your card was only just created, it has no actual usage and zero active service providers at this point. So, go ahead and subscribe to one! You have to subscribe to service providers in order to use their services and enable them to bill you.

If you ever want to stop someone from billing you, you can remove that particular service provider from your prepaid card. Please note that billing happens per provider per card. So, if you have subscribed to a provider with your first prepaid card, but want to pay for his services with a second prepaid card, you have to subscribe to that provider again with your second prepaid card. Likewise, if you have multiple prepaid cards active with the same provider, removing the provider from one card does not remove that provider from your other cards.

Play with Tally as a service provider…

In this demo, our product manager Dmitry Naidionov demonstrates how to register as a service provider and charge customers for using services.

Follow this link to our Tally home page and click “Register as a service provider”.

You can only create one provider per MetaMask wallet address. In order to register as a service provider, you need to select your stake (note: as a provider, you must deposit your stake using CARD tokens) and go through a three-step, on-chain approval process. Your stake goes directly into the reward pool and serves as a kind of insurance against bad actors (meaning: providers who violate the terms may get their stake slashed).

Once a customer has subscribed to you, you can bill that customer for using your services. Simply select the prepaid card that will be billed from your list of active subscribers. Except for the set-up fee (which customers pay to subscribe to a new service provider), the billed usage is recorded entirely off-chain, and the remaining balance is computed by subtracting the off-chain usage totals and the set-up fee from the on-chain stake. Eventually, we will offer a billing API that your services need to integrate with, in order to bill customers for usage programmatically, without going through the Tally Web app. In the testing phase, you can create manual billing items by going to your service provider card and clicking the “Register Usage” button.

We are still working on the functionality that will allow you to withdraw funds from the reward pool as a service provider. Our plan is to enable you to withdraw your earnings and convert them to the token of your choice in one step, thus ensuring a seamless withdrawal process.

What’s next for Tally?

  1. Integration with decentralized exchanges. We want to enable customers to deposit and withdraw their preferred tokens. To that end, we aim to establish key trading pairs with the CARD token — which is the native token of the CARD Protocol — and stablecoins that reflect fiat values on-chain. We also plan to accept alternative payment methods in the future, so people can use other crypto assets via protocols like Uniswap.
  2. Incentivize customers and providers to use the CARD Protocol. When we launch Tally on mainnet, we will award bonus tokens to buyers and sellers based on actual usage and earnings. This will be part of Batch D of our token distribution plan.
  3. Integration with service providers’ applications. We want to make sure service providers can easily list their applications in the Card Catalog. Additionally, we will release the documentation, so they can call Tally APIs programmatically to report usage data.
  4. Create user-friendly tools. Tally is an administrative tool similar to a blockchain explorer that shows a history of all on-chain transactions. We will roll out different variants of hosted (yet non-custodial) wallets, to ensure that the onboarding experience for casual customers, who want to activate a software subscription with a credit card, is no different than their experience on the centralized Web.

Tally is the platform technology that handles the back-office administrative work of revenue distribution and customer acceptance. Allowing every day-to-day software user to pay for services via cryptocurrency, without actually having to own any cryptocurrency, is one of the most promising ways to bring cryptocurrency and its flexibility to the mainstream.

Learn More

Star Cardstack on GitHub and join our Discord channel or our Telegram group and announcement channel to get all our latest updates.



Cardstack Team

Official account for the team behind the Cardstack project.