# Monero Explorer

> Read the Monero blockchain from a workflow: look up a transaction or a block, watch what is moving and what is waiting to confirm, and see the network's hash rate, its fees and the total coin supply. It can also answer the two questions Monero's privacy otherwise makes hard: whether a payment to your address has arrived, and proof to a recipient that you paid them. Amounts come back in XMR, times in UTC, and an encrypted amount is reported as encrypted rather than as zero. No account or API key is required. Disclaimer: this is an independent integration with the community-run Onion Monero Blockchain Explorer and its public instance at xmrchain.net; it is not affiliated with, endorsed by, or sponsored by the Monero Project.

App · Cryptocurrency · 9 actions. Web page: https://docs.lodol.com/docs/integrations/monero-explorer

## Actions

### Check a transaction for a payment

Somebody says they paid you and gave you a transaction hash: this says whether that transaction really pays your address, and how much. Monero hides amounts from everyone else, so this needs your wallet's private view key to read them: a key that can see incoming payments but can never spend.

**Inputs**

- Transaction hash (`transaction_hash`, text, required): The 64-character transaction hash, as it appears in a wallet or on a receipt.
- Your Monero address (`address`, text, required): The address the payment was sent to. 95 characters, or 106 for an integrated address.
- Your private view key (`view_key`, text, required): The private view key of the wallet that owns the address above. Find it in the Monero GUI under Settings > Wallet > Show seed & keys. A view key can only read payments coming in; it can never spend, and it is never stored by the explorer. It does let whoever holds it see what that address receives, so use a wallet you are willing to have read, or connect your own explorer.

**Outputs**

- `confirmations` (number)
- `confirmed` (true/false)
- `explorer_url` (text)
- `note` (text): Set only when nothing was found, explaining what else could account for that. Empty otherwise.
- `payment_count` (number)
- `payment_received` (true/false)
- `payments` (list): The outputs of the transaction that are yours.
- `time` (text): UTC, ISO 8601.
- `total_received_xmr` (number)
- `transaction_hash` (text)

**Example output**

```json
{
  "confirmations": 2471315,
  "confirmed": true,
  "explorer_url": "https://xmrchain.net/tx/17049bc5f2d9fbca1ce8dae443bbbbed2fc02f1ee003ffdd0571996905faa831",
  "note": "",
  "payment_count": 1,
  "payment_received": true,
  "payments": [
    {
      "amount_xmr": 34.98,
      "explorer_url": "https://xmrchain.net/tx/17049bc5f2d9fbca1ce8dae443bbbbed2fc02f1ee003ffdd0571996905faa831",
      "output_index": 0
    }
  ],
  "time": "2017-04-15T20:04:20Z",
  "total_received_xmr": 34.98,
  "transaction_hash": "17049bc5f2d9fbca1ce8dae443bbbbed2fc02f1ee003ffdd0571996905faa831"
}
```

### Check for a new payment

Ask whether anything has just been paid to your address, without needing to know a transaction hash. It looks through the last five blocks and everything still waiting to confirm, which is about the last ten minutes, so schedule it to run at least that often, or a payment can slip past between runs. It needs your wallet's private view key, which can read incoming payments but can never spend. To check a payment you already have the transaction hash for, use 'Check a transaction for a payment' instead.

**Inputs**

- Your Monero address (`address`, text, required): The address the payment was sent to. 95 characters, or 106 for an integrated address.
- Your private view key (`view_key`, text, required): The private view key of the wallet that owns the address above. Find it in the Monero GUI under Settings > Wallet > Show seed & keys. A view key can only read payments coming in; it can never spend, and it is never stored by the explorer. It does let whoever holds it see what that address receives, so use a wallet you are willing to have read, or connect your own explorer.

**Outputs**

- `blocks_checked_from` (number)
- `blocks_checked_to` (number)
- `note` (text): Set only when nothing was found, explaining what else could account for that. Empty otherwise.
- `payment_count` (number)
- `payments` (list): Everything paid to the address in the window, including payments not yet in a block.
- `total_received_xmr` (number)

**Example output**

```json
{
  "blocks_checked_from": 3760648,
  "blocks_checked_to": 3760652,
  "note": "",
  "payment_count": 1,
  "payments": [
    {
      "amount_xmr": 0.25,
      "block_height": null,
      "confirmed": false,
      "explorer_url": "https://xmrchain.net/tx/9233708004c51d15f44e86ac1a3b99582ed2bede4aaac6e2dd71424a9147b06f",
      "payment_id": "",
      "status": "waiting to confirm",
      "transaction_hash": "9233708004c51d15f44e86ac1a3b99582ed2bede4aaac6e2dd71424a9147b06f"
    }
  ],
  "total_received_xmr": 0.25
}
```

### Get coin supply

How much XMR exists, and how much has ever been paid in fees. Monero has no fixed cap: every block still creates 0.6 XMR, for ever, so the supply keeps rising slowly.

**Inputs**: None.

**Outputs**

- `as_of_block_height` (number)
- `circulating_supply_xmr` (number): Every XMR ever mined.
- `total_fees_paid_xmr` (number): Every transaction fee ever paid. These are existing coins moving to miners, not new ones.

**Example output**

```json
{
  "as_of_block_height": 3760652,
  "circulating_supply_xmr": 18803567.75623884,
  "total_fees_paid_xmr": 111174.37087574648
}
```

### Get network status

How the Monero network is doing: the newest block, the mining difficulty and hash rate, how many transactions are waiting, and what a transaction costs to send at the moment.

**Inputs**: None.

**Outputs**

- `difficulty` (number): How hard the next block is to mine.
- `explorer_up_to_date` (true/false): False means the explorer is still catching up and its answers are behind the network.
- `explorer_url` (text)
- `fee_per_byte_xmr` (number)
- `hash_rate` (number): Hashes per second across the network.
- `hash_rate_readable` (text): The same, written for people: '5.85 GH/s'.
- `latest_block_hash` (text)
- `latest_block_height` (number)
- `network` (text): 'mainnet', 'testnet' or 'stagenet'.
- `pending_size_kb` (number)
- `pending_transaction_count` (number)
- `target_block_seconds` (number): How often a block is meant to arrive.
- `transactions_all_time` (number)
- `typical_transaction_fee_xmr` (number): What an ordinary transaction costs to send right now, at the lowest priority.

**Example output**

```json
{
  "difficulty": 701493992052,
  "explorer_up_to_date": true,
  "explorer_url": "https://xmrchain.net",
  "fee_per_byte_xmr": 2e-08,
  "hash_rate": 5845783267,
  "hash_rate_readable": "5.85 GH/s",
  "latest_block_hash": "8dea7d68ec8db6189377c15255e1e9215082b51db5fd9c5888cba97bdcc94ada",
  "latest_block_height": 3760652,
  "network": "mainnet",
  "pending_size_kb": 39018,
  "pending_transaction_count": 12,
  "target_block_seconds": 120,
  "transactions_all_time": 63778825,
  "typical_transaction_fee_xmr": 3e-05
}
```

### List recent transactions

Every transaction from the newest few blocks, as one flat list with the block and time on each. Use it to watch what is moving through the chain right now.

**Inputs**

- Blocks to read (`blocks`, number): How many of the newest blocks to include. A block arrives about every two minutes, so five covers roughly the last ten. From 1 to 25. Default: `5`.

**Outputs**

- `blocks_read` (number)
- `latest_block_height` (number)
- `newest_block_height` (number)
- `oldest_block_height` (number)
- `transaction_count` (number)
- `transactions` (list): Newest block first.

**Example output**

```json
{
  "blocks_read": 5,
  "latest_block_height": 3760652,
  "newest_block_height": 3760652,
  "oldest_block_height": 3760648,
  "transaction_count": 62,
  "transactions": [
    {
      "amount_hidden": false,
      "amount_xmr": 0.60378216,
      "block_height": 3000000,
      "block_time": "2023-10-20T14:49:02Z",
      "explorer_url": "https://xmrchain.net/tx/7f88a52afdab303ddb9d444cb5b53adb5a12c63a82e898a9d2db9f76dd1127f6",
      "fee_xmr": 0.0,
      "is_mining_reward": true,
      "payment_id": "",
      "ring_size": 0,
      "size_bytes": 106,
      "transaction_hash": "7f88a52afdab303ddb9d444cb5b53adb5a12c63a82e898a9d2db9f76dd1127f6"
    },
    {
      "amount_hidden": true,
      "amount_xmr": null,
      "block_height": 3000000,
      "block_time": "2023-10-20T14:49:02Z",
      "explorer_url": "https://xmrchain.net/tx/e4516854a5984eaf5f8750ac7af41d1e0b2c602a2297a673001e8c0af88eba11",
      "fee_xmr": 0.00071008,
      "is_mining_reward": false,
      "payment_id": "",
      "ring_size": 16,
      "size_bytes": 2219,
      "transaction_hash": "e4516854a5984eaf5f8750ac7af41d1e0b2c602a2297a673001e8c0af88eba11"
    }
  ]
}
```

### List transactions waiting to confirm

The transactions the network has seen but not yet put in a block, newest first, with how long each has been waiting. A long queue or a long wait is the sign that fees are running low for how busy the network is.

**Inputs**

- Most to return (`limit`, number): How many of the newest waiting transactions to return. From 1 to 100. Default: `25`.

**Outputs**

- `longest_wait_minutes` (number): The longest any returned transaction has been waiting.
- `pending_total` (number): How many are waiting in total.
- `transaction_count` (number): How many were returned.
- `transactions` (list)

**Example output**

```json
{
  "longest_wait_minutes": 1.4,
  "pending_total": 18,
  "transaction_count": 1,
  "transactions": [
    {
      "amount_hidden": true,
      "amount_xmr": null,
      "broadcast_time": "2026-09-12T06:06:15Z",
      "explorer_url": "https://xmrchain.net/tx/622969bc73025a7a3495dac8d5231119abfbb7e817ed7e4acf51ce81738d48ce",
      "fee_xmr": 0.00017744,
      "is_mining_reward": false,
      "payment_id": "",
      "ring_size": 16,
      "size_bytes": 2218,
      "transaction_hash": "622969bc73025a7a3495dac8d5231119abfbb7e817ed7e4acf51ce81738d48ce",
      "waiting_minutes": 1.4
    }
  ]
}
```

### Look up a block

Look up one block and everything in it: when it was mined, how big it is, what the miner earned, the fees it collected, and a line for each transaction. Give a block height or a block hash, or leave it blank to get the newest block on the chain.

**Inputs**

- Block (`block`, text): A block height, such as 3000000, or a 64-character block hash. Leave blank for the newest block.

**Outputs**

- `confirmations` (number): How many blocks deep this one now sits.
- `explorer_url` (text)
- `hash` (text)
- `height` (number)
- `latest_block_height` (number)
- `miner_reward_xmr` (number): What the miner was paid: newly created XMR plus every fee in the block.
- `size_bytes` (number)
- `time` (text): UTC, ISO 8601.
- `total_fees_xmr` (number)
- `transaction_count` (number)
- `transactions` (list): Every transaction in the block.

**Example output**

```json
{
  "confirmations": 760653,
  "explorer_url": "https://xmrchain.net/block/3000000",
  "hash": "d29c51c4354a396f370335035540fc94372bd277c2f65b50cc5bd2608a92c69c",
  "height": 3000000,
  "latest_block_height": 3760652,
  "miner_reward_xmr": 0.60378216,
  "size_bytes": 100297,
  "time": "2023-10-20T14:49:02Z",
  "total_fees_xmr": 0.00378216,
  "transaction_count": 38,
  "transactions": [
    {
      "amount_hidden": false,
      "amount_xmr": 0.60378216,
      "block_height": 3000000,
      "block_time": "2023-10-20T14:49:02Z",
      "explorer_url": "https://xmrchain.net/tx/7f88a52afdab303ddb9d444cb5b53adb5a12c63a82e898a9d2db9f76dd1127f6",
      "fee_xmr": 0.0,
      "is_mining_reward": true,
      "payment_id": "",
      "ring_size": 0,
      "size_bytes": 106,
      "transaction_hash": "7f88a52afdab303ddb9d444cb5b53adb5a12c63a82e898a9d2db9f76dd1127f6"
    },
    {
      "amount_hidden": true,
      "amount_xmr": null,
      "block_height": 3000000,
      "block_time": "2023-10-20T14:49:02Z",
      "explorer_url": "https://xmrchain.net/tx/e4516854a5984eaf5f8750ac7af41d1e0b2c602a2297a673001e8c0af88eba11",
      "fee_xmr": 0.00071008,
      "is_mining_reward": false,
      "payment_id": "",
      "ring_size": 16,
      "size_bytes": 2219,
      "transaction_hash": "e4516854a5984eaf5f8750ac7af41d1e0b2c602a2297a673001e8c0af88eba11"
    }
  ]
}
```

### Look up a transaction

Look up one Monero transaction by its hash: whether it has confirmed and how many times, which block it landed in, when, the fee, and its size and ring size. Monero encrypts the amount of almost every transaction, so the amount comes back empty and flagged rather than as a misleading zero; mining rewards and transactions from before 2017, whose amounts are public, keep their figures.

**Inputs**

- Transaction hash (`transaction_hash`, text, required): The 64-character transaction hash, as it appears in a wallet or on a receipt.

**Outputs**

- `amount_hidden` (true/false): True when the amount is encrypted on the blockchain and cannot be read by anyone but the parties to the transaction.
- `amount_note` (text): Set only when the amount is encrypted, explaining why it is empty.
- `amount_xmr` (number): The amount in XMR. Empty when Monero has encrypted it, which is every transaction since 2017 apart from mining rewards.
- `block_height` (number): Empty while it is still waiting to confirm.
- `confirmations` (number): How many blocks have been built on top of this one. Ten is the usual bar for treating a payment as final.
- `confirmed` (true/false)
- `explorer_url` (text)
- `fee_xmr` (number)
- `input_count` (number)
- `is_mining_reward` (true/false)
- `latest_block_height` (number)
- `output_count` (number)
- `payment_id` (text)
- `ring_size` (number)
- `size_bytes` (number)
- `status` (text): 'confirmed' or 'waiting to confirm'.
- `time` (text): UTC, ISO 8601.
- `transaction_hash` (text)

**Example output**

```json
{
  "amount_hidden": true,
  "amount_note": "Monero encrypts transaction amounts. Only the people holding this transaction's keys can read what it moved.",
  "amount_xmr": null,
  "block_height": 3000000,
  "confirmations": 760653,
  "confirmed": true,
  "explorer_url": "https://xmrchain.net/tx/e4516854a5984eaf5f8750ac7af41d1e0b2c602a2297a673001e8c0af88eba11",
  "fee_xmr": 0.00071008,
  "input_count": 2,
  "is_mining_reward": false,
  "latest_block_height": 3760652,
  "output_count": 2,
  "payment_id": "",
  "ring_size": 16,
  "size_bytes": 2219,
  "status": "confirmed",
  "time": "2023-10-20T14:49:02Z",
  "transaction_hash": "e4516854a5984eaf5f8750ac7af41d1e0b2c602a2297a673001e8c0af88eba11"
}
```

### Prove a payment you sent

Prove to a recipient that you paid them, when Monero's privacy means they cannot simply look it up. It takes the transaction's own key (the one your wallet shows under 'Prove/Check' for that transaction, which reveals nothing beyond that single payment) and confirms how much of it went to their address.

**Inputs**

- Transaction hash (`transaction_hash`, text, required): The 64-character transaction hash, as it appears in a wallet or on a receipt.
- Recipient's Monero address (`recipient_address`, text, required): The address you paid -- theirs, not your own. 95 characters, or 106 for an integrated address.
- Transaction key (`transaction_key`, text, required): This transaction's own secret key, from the Monero GUI under Transactions: find the payment, then Prove/Check. It proves this one payment and nothing else -- it is not your wallet's view key.

**Outputs**

- `amount_xmr` (number)
- `confirmations` (number)
- `confirmed` (true/false)
- `explorer_url` (text)
- `note` (text): Set only when nothing was found, explaining what else could account for that. Empty otherwise.
- `payment_count` (number)
- `payments` (list)
- `proven` (true/false): True when the transaction demonstrably pays that address.
- `recipient_address` (text)
- `time` (text): UTC, ISO 8601.
- `transaction_hash` (text)

**Example output**

```json
{
  "amount_xmr": 34.98,
  "confirmations": 2471315,
  "confirmed": true,
  "explorer_url": "https://xmrchain.net/tx/17049bc5f2d9fbca1ce8dae443bbbbed2fc02f1ee003ffdd0571996905faa831",
  "note": "",
  "payment_count": 1,
  "payments": [
    {
      "amount_xmr": 34.98,
      "explorer_url": "https://xmrchain.net/tx/17049bc5f2d9fbca1ce8dae443bbbbed2fc02f1ee003ffdd0571996905faa831",
      "output_index": 0
    }
  ],
  "proven": true,
  "recipient_address": "44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A",
  "time": "2017-04-15T20:04:20Z",
  "transaction_hash": "17049bc5f2d9fbca1ce8dae443bbbbed2fc02f1ee003ffdd0571996905faa831"
}
```
