solana.lending.repayments table contains Solana lending repayment events. This table tracks all loan repayment activity across supported lending protocols on Solana (Kamino, MarginFi, Jupiter Lend, and Save).
Use this table to analyze repayment patterns, track loan closure rates, and understand the health of the lending ecosystem.
Table Details
| Property | Value |
|---|---|
| Table Name | solana.lending.repayments |
| Table Status | Production-Ready |
| Unique Key | block_timestamp, unique_id |
| Clustering Key(s) | block_timestamp::date |
Table Columns
| Column Name | Data Type | Description |
|---|---|---|
| project | VARCHAR(16777216) | Business name of the protocol being used (e.g. kamino, marginfi, jupiter). |
| protocol | VARCHAR(16777216) | Specific version or variant of the protocol (e.g. klend, marginfi, juplend). |
| lending_event | VARCHAR(16777216) | Category of lending event. One of: deposits, withdrawals, borrows, repayments, liquidations. |
| event_name | VARCHAR(16777216) | Name of the decoded instruction or event that produced this record (e.g. repay_obligation_liquidity, lending_account_repay). |
| program_id | VARCHAR(16777216) | Program-owned market PDA (reserve / bank / vault), not the Solana program ID. |
| borrower_address | VARCHAR(16777216) | Address of the account that borrowed funds from the lending protocol. |
| repayer_address | VARCHAR(16777216) | Address of the account repaying the debt (may be different from the borrower). |
| mint | VARCHAR(16777216) | Base58-encoded mint address of the SPL token being repaid. |
| token_name | VARCHAR(16777216) | Full name of the token being repaid. |
| token_symbol | VARCHAR(16777216) | Ticker symbol of the token being repaid. |
| token_decimals | NUMBER(38,0) | Number of decimal places used to represent the token’s smallest unit. |
| raw_amount_str | VARCHAR(16777216) | Token amount in the smallest unit, as a string, to retain precision. Null when a protocol’s “repay max” instruction parameter (u64::MAX) is used. |
| amount_str | VARCHAR(16777216) | Normalized token amount, as a string, to retain precision. |
| amount | FLOAT | Token amount normalized by the token’s decimal precision. |
| usd_amount | FLOAT | USD value of the tokens repaid at the time of the transaction. |
| usd_exchange_rate | FLOAT | USD price per unit of the token at the time of the event. |
| extra_fields | VARIANT | JSON object containing additional fields from the onchain event that are not part of the standard schema. |
| txn_id | VARCHAR(16777216) | Base58-encoded transaction signature on Solana. |
| txn_index | NUMBER(38,0) | Zero-based position of this transaction within its slot. |
| signer | VARCHAR(16777216) | Primary signing account (fee payer) of the transaction. |
| instruction_index | NUMBER(38,0) | Zero-based position of this instruction within the transaction’s top-level instructions array. |
| inner_instruction_index | NUMBER(38,0) | Zero-based position of this inner instruction within its parent instruction’s inner instructions array. -1 for top-level instructions. |
| pseudo_instruction_order | NUMBER(38,0) | Internal ordering key for instructions within a transaction that may lack an explicit index. |
| block_slot | NUMBER(38,0) | Solana slot number in which this transaction was confirmed. |
| block_height | NUMBER(38,0) | Number of confirmed blocks between this block and the genesis block (inclusive). |
| block_timestamp | TIMESTAMP_NTZ(9) | Timestamp (UTC) of the block in which this event was confirmed. |
| block_hash | VARCHAR(16777216) | Cryptographic hash of the block header that contains this record. |
| unique_id | VARCHAR(16777216) | Allium’s deterministic unique identifier for this row. |
| _created_at | TIMESTAMP_NTZ(9) | Timestamp (UTC) when this row was first written to the Allium platform. |
| _updated_at | TIMESTAMP_NTZ(9) | Timestamp (UTC) of the most recent update to this row. |
Sample Query
- Recent Repayments
- Daily Repayment Volume
Get recent repayment events with essential details:
select
project,
protocol,
token_symbol,
amount,
usd_amount,
repayer_address,
block_timestamp
from solana.lending.repayments
where block_timestamp >= current_timestamp - interval '7 days'
order by block_timestamp desc
limit 100
Calculate daily repayment volume by protocol:
select
date(block_timestamp) as day,
project,
protocol,
count(*) as repayment_count,
sum(usd_amount) as total_volume_usd
from solana.lending.repayments
where block_timestamp >= current_timestamp - interval '30 days'
group by day, project, protocol
order by day desc, total_volume_usd desc