Skip to main content

MiCA daily usage cap for stablecoins

What is the MiCA daily usage cap?

The MiCA daily usage cap is the limit on how much an e-money token in a currency outside the EU can be used to pay for things: when the quarter’s average passes both 1 million transactions and €200 million a day, the issuer has to stop issuing and, within 40 working days, give its regulator a plan to bring usage down; compliance teams also call it the MiCA transaction cap.

EU banks and issuance platforms with tokens in dollars or other non-EU currencies count usage every day, because Article 23 of MiCA, which Article 58(3) applies to those tokens, ties crossing the cap to a stop on issuance.

Goldsky records every transfer of your token, keeps each day’s count and amount of payments by your rules, and runs a scheduled check that warns your team near the cap and can send the call you’ve approved to stop minting, while the decision to stop, the counting method, the euro conversion and the report to your regulator stay with you.

Who tracks the MiCA daily usage cap?

EU banks and e-money institutions issuing stablecoins in dollars or other non-EU currencies, and the issuance platforms that run those tokens.

How MiCA daily usage cap monitoring works

The diagram follows one day of payments in your token, from transfers on the chain to your report to the regulator once usage passes the cap. Your setup may differ.

Goldsky, steps 2–3: TurboCount each day’s paymentsEvery transfer, and daily count and amount
Blockchains, step 1: Token used to payEach payment counts toward the cap
Goldsky, steps 4–5: ComposeCheck the day’s usageValued in euros, warned near cap
Goldsky, step 6: ComposeStop new issuanceQuarterly average past both limits
Blockchains, step 7: Minting stopsNo new tokens until usage falls
Your business, step 9: Report to your regulatorWith your plan to bring usage down
Goldsky, step 8: ComposeKeep the daily recordEvery day’s count, saved for review
  • Goldsky

How to monitor the MiCA daily usage cap

A pipeline records every transfer of your token in a database and keeps each day’s count and amount of payments, and a scheduled task values the day in euros, warns your team near the cap and, once it’s passed, can send the call your team has approved to stop minting.

What you’ll need

  • Goldsky Turbo
  • Goldsky Compose
  • Your token’s contract address on each chain
  • Your written method for which transfers count as payments
  • A source of daily euro exchange rates for the value
  • A wallet holding the role that stops minting on your token contract
  • An alerting channel your compliance team watches
  • Your process for reporting to your regulator
  1. Pay with the token

    Every payment made in the token is a transfer on the chain, and payments are what the cap counts.

    Not every transfer is a payment: moves between your own wallets, or to and from exchanges, may not count, depending on your method. The chain records them all the same way, so the sorting happens later.

  2. Record every transfer

    Handled by Goldsky Compose

    The day’s count and value are built from individual transfers, so each one has to land in a database with its amount, wallets and time.

    Every chain the token is on has to be included, with rows keyed so a repeated delivery isn’t counted twice. A missing chain makes usage look lower than it is.

    With Goldsky, a Turbo Pipelines pipeline can write your token’s transfers into the Postgres database behind your Compose app, so the scheduled check reads them where they land.

    Write Turbo rows to Compose (opens in a new tab)
  3. Count each day’s payments

    Handled by Goldsky Turbo

    The cap is a quarterly average of daily figures, so payments have to be counted and added up for each day as they happen.

    The count follows your written method: transfers it leaves out, such as moves between your own wallets or to exchanges, are filtered out before they’re counted. If the method changes, past days should be recounted from the stored transfers the same way, so the trend stays comparable.

    Turbo Pipelines’ postgres_aggregate sink keeps a running count and sum per day in your Compose app’s database, with the day set in the pipeline’s SQL. Each day’s figures update as transfers arrive and are corrected when a reorg removes one, as long as the SQL keeps the _gs_op column that marks deletes.

    Keep running totals in your database (opens in a new tab)
  4. Check the day’s usage

    Handled by Goldsky Compose

    The cap is in euros as well as transactions, and seeing it coming takes a check more often than once a day.

    Each check turns the day’s amount into euros at the rate your method names, then compares the quarter’s average daily count and value so far with both limits. A rate taken from a different source than the method says makes the figures hard to defend.

    A Compose task on a cron trigger reads the day’s count and amount with ctx.db.query, then applies your exchange rate and thresholds.

    Query your app’s database (opens in a new tab)
  5. Warn your team near the cap

    Handled by Goldsky Compose

    A warning before the cap gives your team time to slow usage before issuance has to stop.

    Set the warning level below the cap and send it to people who can act, with the figures that set it off. A warning that fires every day gets ignored.

    Goldsky Compose posts the day’s figures to your alerting endpoint with ctx.fetch, and the request and its response are recorded on the run.

    Make auditable HTTP requests (opens in a new tab)
  6. Stop new issuance past the cap

    Handled by Goldsky Compose

    Once the quarterly average passes both limits, the issuer has to stop issuing new tokens.

    Stopping is the issuer’s duty and decision: it takes a call to the token contract from the issuer’s wallet with the role that allows it, under your usual approval rules. The call has to happen once and be on record, even if the check fails partway through.

    On your team’s instruction, the task can send the issuer’s call to the contract’s pause or minting control with wallet.writeContract, and a transaction that already went through isn’t sent again if the run resumes after a failure.

    Write to contracts from a task (opens in a new tab)
  7. Minting stops on the chain

    With the control set, the contract refuses new mints until it’s lifted.

    Whether existing tokens can still move depends on the control: a pause on the whole token stops transfers too, while a mint-only control doesn’t. Lifting it follows your regulator’s process, not the next day’s count.

  8. Keep every day’s count on record

    Handled by Goldsky Compose

    Your regulator may ask how each day’s figure was reached and what the issuer did about it.

    Each day’s count, the method and rates used, any warning and any transaction need to be kept together. Counts that can’t be reproduced weaken the report.

    Compose logs every call each run makes, including the counting query, the alert and any transaction, so each day’s decision can be reviewed later.

    How Compose logs each call (opens in a new tab)
  9. Report to your regulator

    Crossing the cap means sending your regulator, within 40 working days, a plan to bring usage back under it.

    The report draws on the daily counts, the method behind them and what the issuer did when the cap was passed. A plan that names which kinds of use it will reduce is easier to hold to than a target alone.

What you control

Your team
  • Report to your regulator

Security and deployment

  • SOC 2 Type IIIndependently audited security controls.
  • Dedicated infrastructureSingle-tenant options for production workloads.
  • Data residencyCloud, on-premises or co-located.

Monitor the MiCA daily usage cap with Goldsky

We’ll map it to your systems and show you what Goldsky runs, so your team builds the product, not the pipelines underneath it.

© Endless Sky Inc. All rights reserved.

PrivacyTermsSecurity

System status