# Change Log

These release notes document changes and updates to the API and functionalities. Ensure you are using the latest Docker file for optimal performance.

## PayRam — What's New

> <mark style="color:purple;">**37 Releases**</mark> | <mark style="color:$primary;">**373 Changes Shipped**</mark>

***

### April 30, 2026

#### PayRam Core `v2.0.3`

**Added**

* Sweep routing now uses a refined 4-action classification with estimated completion times calculated in the database — every balance row gets a more precise status and an accurate ETA

**Fixed**

* Concurrent sweeps on the same wallet and chain are now serialized — nonce collisions that caused transactions to fail silently are prevented
* Eligible wallet addresses are deduplicated and balances re-verified on-chain before each sweep runs — prevents duplicate sweeps and protects against stale balance data
* Wallets with a negative balance are now correctly routed to Below Threshold instead of appearing in sweep queues unexpectedly
* Deposit detection now has a three-layer fallback before concluding a transaction doesn't exist — prevents deposits from being incorrectly dropped when a node is lagging
* Edge-case collection events that previously slipped through reconciliation are now caught, keeping all wallets in sync after unusual funding events

#### PayRam Frontend `v0.5.4`

**Added**

* The Funds tab now refreshes automatically every 15 seconds — balances, sweep statuses, and ETAs stay current without a manual reload
* Every balance row now shows a precise status and an estimated time to sweep, powered by the new 4-action classification from the backend

***

### April 29, 2026

#### PayRam Core `v2.0.2`

**Fixed**

* Sweep reconciler now fires immediately when block processing detects a funding-shortfall signal — recoveries start without waiting for the next scheduled cycle
* Reconciler handles temporary node errors without aborting mid-run and caps its lookback window to 10 days for faster incremental scans
* Removed an accidental minimum-balance filter that was silently preventing eligible wallets from being swept
* First-ever sweep on a new project no longer gets stuck — the eligibility check that blocked it is fixed and sweep timestamps are now tracked per project

#### PayRam Frontend `v0.5.3`

**Fixed**

* Transaction History wallet filter now stays in sync with the Funds section — switching wallets in one updates the other
* Wallet filter options on sweep pages now load from the backend, so the available wallets match what you actually have configured

***

### April 28, 2026

#### PayRam Core `v2.0.1`

**Added**

* Sweep observability overhaul — every queued, in-flight, and failed sweep now surfaces a real reason, a real retry time, and the broadcast transaction hash — operators always know exactly why a sweep is waiting and what unblocks it
* Manual sweep trigger endpoint — operators can force-sweep an eligible balance on demand instead of waiting for the next cycle
* Sweep reconciler automatically backfills missed sweeps when an InsufficientBalance signal fires, and recovers orphaned pending deployments at the start of every deployment phase — no more sweeps stuck in limbo after a transient failure
* BTC sweeps are now fully project-scoped — sweep transactions, balance queries, and confirmation flows all respect tenant boundaries on Operator Mode deployments
* Funds consolidation metrics endpoint with a simplified action model — the dashboard can render the entire sweep pipeline from one call
* `GET /sweeps` gains filters for network, currency, wallet, and type

**Changed**

* Smart contract wallet deployment now emits a typed network-failure event when the broadcast can't reach a node — the dashboard reacts instead of silently retrying

**Fixed**

* Sweep eligibility rules now match exactly between the balance API, the sweep engine, and the dashboard's Eligible-For-Sweep tile — totals add up cleanly, no more confusing off-by-one discrepancies
* Deposit-wallet hot-wallet lookups are now scoped by wallet type, preventing cold and hot wallet records from leaking across each other in multi-wallet projects
* Manual-sweep and in-progress rows are correctly counted in the Eligible-For-Sweep tile, and zero-row queries now return an empty array instead of null

#### PayRam Frontend `v0.5.2`

**Added**

* New card-based Transaction History — mobile-friendly, with sweep / fee / collect legs visually distinguished, a transfer-only default toggle, and per-asset filters
* Manual sweep-trigger button on queued asset cards, with a custom confirmation dialog — operators can force a sweep on demand without leaving the dashboard
* "Activate hot wallet" and "Fund hot wallet" CTAs on the relevant blocker rows — every error tells you what to fix, not just that something is wrong
* Connect-app CTA on rows that require a manual sweep, plus a wallet-inactive section and default-cold-wallet blocker for clear remediation paths
* WalletConnect project ID now sourced per-merchant from the backend — merchants configure once and the right session opens on every checkout

**UI**

* Funds consolidation page redesigned with a sectioned layout, metrics band, filters, anchors, and an in-progress card — every sweep stage is one click away
* Deposit page redesigned for merchant checkouts: accordion payment methods, official provider icons, smart network switching, inline fiat rates, and a two-audience flow that splits crypto and card cleanly
* Prominent next-sweep badge with a focused pulse only when a sweep is within the hour, queued cards collapsed by default, and breathing room added between tabs and content
* Mobile-responsive asset cards across every Funds section, plus dozens of polish items on dropdowns, pagination, asset names, and avatar stacks

**Fixed**

* Explorer URLs are now read from the blockchains config instead of being hardcoded to testnet bases — links resolve correctly on mainnet deployments
* Sweep triggers now use the row's own project ID instead of the URL param, so cross-project triggers from a shared view always hit the right project
* Native-coin sends now route past the zero-address sentinel correctly, and the coin/network dropdown pushes content instead of overlaying the row
* Funds-band chips show real $0 instead of a dash placeholder, and inactive manual-sweep rows are routed to the blocker view rather than the wallet-inactive section

***

### April 20, 2026

#### PayRam Core `v2.0.0`

**Added**

* Introducing Operator Mode — a ground-up rearchitecture that lets one PayRam instance serve many merchants in complete isolation. [Read the Operator playbook](https://www.payram.com/operator)
* Project-scoped access control across the entire API: members, wallets, withdrawals, sweeps, balances, recipients, webhooks, and API keys all belong to projects — a user only sees what they're assigned to
* Single role per member with a clear role ladder — `project_admin`, `project_lead`, `project_manager`, `project_ops` — each with a curated set of read/write rights scoped to their project
* New `GET /project-permissions` bulk endpoint so dashboards can filter pages, tabs, and actions against what the signed-in user is actually allowed to do — without per-action round-trips
* Recipients now require an explicit project assignment on creation — the address book stays cleanly partitioned between tenants from day one
* Withdrawal approvals, referral payouts, cold-wallet edits, and address-pool reads are all gated by per-project role — operators can delegate safely without handing out the keys

**Changed**

* Webhook permissions split cleanly from project-settings permissions — API-only teammates can ship integrations without touching the rest of the dashboard
* Smart contract wallets are automatically promoted to the project default on confirmation when no default exists — no manual re-tagging after first deploy
* Wallet APIs gain an optional `?include=` filter so clients fetch only what they need; Member and ExternalPlatform preloads are slimmed to essentials
* Docker build is significantly faster with a prebuilt runtime base, build cache mounts, and a proper `.dockerignore` — first-byte deploys in seconds rather than minutes

**Fixed**

* Reverse-proxy trust now covers RFC 1918 private ranges — self-hosted deployments behind nginx or a VPC load balancer no longer see spoofable Host headers
* Admin approval of referral payouts can no longer bypass OTP and accounting entries — every approval path now runs the same verification

#### PayRam Frontend `v0.5.1`

**Added**

* Operator-mode dashboard: sidebar, tabs, and every write action gated by per-project permissions — the UI shows exactly what the signed-in user can do, nothing more, nothing less
* Rich role picker when inviting users — pick by persona (admin / lead / manager / ops), preview the access scope, review the permission chips before sending the invite
* Wallet management, deposit wallets, payouts, address book, and withdrawal screens all filter by project-write permission so collaborators see only what they own
* Recipient creation collects the project assignment up-front, keeping the ledger clean across multi-tenant deployments

**UI**

* Inline project picker built into the breadcrumb — switch tenants without leaving the page you're on
* Create Payment Link promoted to a top-level sidebar CTA above the project selector — the fastest path from login to a fresh payment URL
* Single-role invitation UI with a role badge in the sidebar — the person's role is visible everywhere they appear
* Project-name validation, dropdown polish, breadcrumb icons, mobile user-management layout — dozens of small quality-of-life improvements across the dashboard

**Fixed**

* Stablecoin QR codes no longer encode extra trailing zeros — scanning wallets pre-fill the correct amount on the first try
* Payouts list refreshes immediately after a new one is created and resets to the first page so the fresh entry is always visible

#### PayRam Wallet Backend `v1.2.2`

**Added**

* Multi-app Universal Links and Android assetlinks — the web wallet, v1 mobile, and v2 mobile now deep-link into the correct app from a single signed link
* Web Credential App IDs configuration for passkey flows that span related apps — no re-enrolment when moving between wallet surfaces

#### PayRam Wallet (Web) `v0.4.0`

**Added**

* New `/links/send` route converts EIP-681 `ethereum_uri` deep links into a pre-filled transfer — tap a link anywhere, land on the right send screen with the amount and recipient filled in

**UI**

* Home redesigned with an asset list and correct USD balance labelling — the first thing you see is an accurate picture of what you hold
* Floating action bar and a unified scroll architecture across every screen — consistent body-scroll behaviour across iOS and Android, no more inner scroll-well quirks
* Delete-transfer confirm, pending-CTA polish, and a portal-based Modal primitive so dialogs always render above everything else

**Fixed**

* Add-funds hero no longer goes blank during fiat received / initiated / cancelled states — every transition shows meaningful copy
* Transfer signing guards against zero-amount payloads so wallets never sign an empty operation

#### PayRam Wallet (Mobile) `v2.5.0`

**Added**

* Production-ready: mainnet credentials, real EIP-7702 signing, and the new floating tab bar — the path from development to the App Store is one command
* Apple Sign-In end-to-end, plus a passkey unenrolment fix and delete-transfer support
* Universal deep links: `payram.com/links/send` opens the mobile wallet's transfer flow pre-populated from any shared link

**Changed**

* GA4 analytics via the Measurement Protocol directly — no Firebase SDK dependency, smaller app bundle, cleaner App Privacy declarations

**UI**

* Camera permission for the QR scanner now recovers gracefully — if the user denies access, a single tap jumps to iOS or Android Settings
* Redesigned splash screen: full-bleed green app-shell from cold launch all the way to home — no white flash, no layout jump

**Fixed**

* Strict App Transport Security in production builds, and the insecure RNG fallback has been removed entirely
* Android package split: `com.payram` for production, `com.payram.dev` for development — the two builds coexist on the same device

#### PayRam MCP Server `v1.3.0`

**Added**

* Agent discoverability shipped end-to-end: `robots.txt` with AI-crawler rules, `sitemap.xml`, Link response headers (RFC 8288), and a SEP-1649 server card so MCP-capable clients find PayRam automatically
* Agent skills catalog — 16 standalone skills agents can fetch, cache, and cite, covering setup, authentication, analytics, payments, payouts, webhooks, widget integration, OpenClaw, and a full comparison to other gateways
* New OpenClaw integration skill: the functional how-to for registering `mcp.payram.com` in OpenClaw, Claude Desktop, Cursor, Copilot, or n8n — with a testnet walkthrough and debugging checklist
* New widget integration skill: full script-tag embed reference plus webhook signature verification and idempotency patterns in Express, Next.js, FastAPI, Laravel, and Gin
* Markdown content negotiation on the landing page — agents that request `Accept: text/markdown` get a purpose-built summary; browsers keep seeing the full HTML

**Fixed**

* Server-spec copy corrected across skills and docs — the minimum is 2 CPU / 6 GB RAM / 15 GB+ disk, dropping inflated values that had drifted over time

***

### April 10, 2026

#### **PayRam Core `v1.9.7`**

**Added**

* Smart contract wallets (EIP-7702 / EIP-4337) can now be used to update cold wallets

**Fixed**

* Batch address identification restored for TRX — addresses are detected reliably again
* Default wallet handling now correctly scoped to the specific blockchain instead of clearing globally

#### **PayRam Frontend `v0.4.5`**

**Changed**

* Update Manager is back — now includes an installation and troubleshooting guide
* Wallet management now validates connections before showing wallets as ready

**Fixed**

* BTC deposit wallets no longer require a hot wallet to be considered setup-ready

***

### April 7, 2026

#### **PayRam Core `v1.9.5`**

**Added**

* Per-project access control: members, wallets, withdrawals, sweeps, balances, and recipients are now scoped to projects so users only see what they own
* New `project_admin` role with the same permissions as project lead — can assign and revoke roles
* Hot wallets are now bound to projects with first-class project management and ownership rules
* Unified withdrawal endpoint with pagination — single API for all withdrawal listings
* Recipients API now supports pagination
* Webhook delivery logs persisted with backfill — full audit trail of every webhook attempt

**UI**

* Cleaner `All Time` / `forever` option labels in date filters

**Fixed**

* Smart contract wallets can now deploy through wrapper contracts (Safe, account abstraction, EIP-7702)
* Activity log entries scoped by user access — internal members and customers no longer leak across projects
* Nginx SSL termination now supported without requiring an SSL cert path on the PayRam container
* Reverse proxy headers (`X-Forwarded-Host`, `X-Forwarded-*`) are only trusted from known proxy IPs to prevent host header injection
* Analytics count queries now respect the active date filter

#### **PayRam Frontend `v0.4.4`**

**Added**

* User management, payouts, address book, withdrawals, and wallets all now scoped per project — switch projects to filter what you see
* Payouts table shows the project column and payout creation requires picking a project
* Server-side pagination on payouts, address book, and withdrawal lists — handles large datasets without lag

**Changed**

* MFA and password management consolidated into a single Account Security settings page
* Update Manager temporarily marked as `Coming Soon` while we polish it

**UI**

* Hot wallet page redesigned with project management and a first-time onboarding flow
* Wallet detail page redesigned with a new assets section
* Payments page redesigned with a two-column checkout layout

**Fixed**

* Funds tab now shows an empty state instead of a blank screen when there's no data
* Dropdowns now render via portal so they're never clipped by parent containers
* Old-password error message and visibility toggle fixed in the Change Password dialog
* Sweep history no longer logs spurious errors when requests are cancelled mid-flight

#### PayRam Payments App **`v1.2.1`**

**Added**

* Checkout now pre-fills the buyer's local currency based on geolocation

**Changed**

* Card onramp purchases now enforce a $12 minimum to comply with provider rules

**Fixed**

* Fixed nil-pointer crashes when updating transaction hashes for payments without a sender op hash
* Authentication tokens no longer incorrectly appear expired due to a token-parsing bug
* EIP-7702 delegation user operations are correctly skipped during sponsorship parsing
* Token balance locks and unlocks guarded against zero-value sponsorship operations
* Geolocation database now bundled with the Docker image so country detection works out of the box

#### PayRam MCP Server **`v1.2.1`**

**Fixed**

* Switched to a per-request MCP connection pattern to eliminate a memory leak on serverless deployments

***

### April 1, 2026

#### **PayRam Core `v1.9.4`**

**Added**

* Clearer error codes when the blockchain needs a moment to catch up (409 with retry guidance)

**Fixed**

* Deposit wallet deployment now auto-retries when the network is briefly out of sync

#### **PayRam Frontend `v0.4.3`**

**UI**

* Better error messages during wallet registration — explains what's happening and what to do

**Fixed**

* Wallet setup shows progress spinner, countdown timer, and retry button instead of failing silently
* Payment links now work correctly — fixed broken wallet URLs

#### **PayRam Business App `v1.0.0`**

**Added**

* PayRam Business merchant app now available on [Google Play](https://play.google.com/store/apps/details?id=com.payram.business\&hl=en_US) and the [App Store](https://apps.apple.com/us/app/payram-business-merchant-app/id6759707719)

***

### March 25, 2026

#### PayRam Core `v1.9.3`

**Fixed**

* BTC transaction receipt now surfaces real errors (timeout, auth failure, rate limit) instead of silently marking transactions as not found
* Deposit verification correctly distinguishes missing transactions from transient RPC failures — nil receipts are retried on next cycle
* Removed exponential retry backoff from confirming sweeps — now processed every cycle without age-based delays
* Refresh token endpoint returns correct HTTP status codes (401 for invalid JWT, 404 for deleted members) instead of generic 500
* Database errors in token refresh no longer collapse into incorrect 404 — real DB failures propagate as 500

#### PayRam Frontend `v0.4.2`

**Added**

* System Updater page with version management, upgrade planning, and real-time upgrade monitoring
* Debug panel wallet URL override for testing payments page against custom backends

**Fixed**

* Remove authenticated config call from public payments page and add checkout suffix to wallet URLs
* Improve error handling and type safety in updater API functions
* Normalize upgrade failure state check and fix import paths in updater module

#### PayRam MCP Server `v1.2.0`

**Fixed**

* Auto-discover platform ID so agents no longer need to ask for it during setup

***

### March 21, 2026

#### PayRam MCP Server `v1.2.0`

**Added**

* MCP server discovery tool for agents to find and connect to PayRam instances
* Authentication skill for secure agent access to PayRam APIs
* Authenticated data-fetching MCP tools for merchant dashboards

**Changed**

* Rewritten analytics skill with direct API access for real-time data

***

### March 20, 2026

#### PayRam Core `v1.9.2`

**Added**

* Batch BTC DB queries — reduces \~22,000 queries per block down to 2 using two-pass batch pattern for UTXO and sweep detection

**Changed**

* RPC pool composite node identity uses URL + credential hash as key — fixes credential loss for same-URL nodes with different API keys
* Existing RPC nodes re-hashed via migration for consistency with new hashing scheme
* Processor shutdown changed to graceful termination via context cancellation

**Fixed**

* BTC UTXO batch fallback — on DB error, falls back to per-item lookup instead of dropping sweep detections
* `Stop()` now unblocks correctly by listening on both context and stop channel
* BTC unauthenticated RPC nodes filtered out for remote connections
* Empty batch returns consistent empty slice instead of nil for JSON safety

***

### March 19, 2026

#### PayRam Frontend `v0.4.1`

**Fixed**

* Remove authenticated config API call from public payments page to prevent auth errors
* Use plain axios (unauthenticated) for `reportMissedDeposit` on public payments page

#### PayRam Frontend `v0.4.0`

**Added**

* Default configuration integration for dynamic backend and wallet URLs
* Unified page headers with `PageHeader` component across all screens
* Sidebar logo now clickable to navigate home
* RPC pool frontend alignment with updated backend API changes

**UI**

* Fixed alert bar transparency in page headers
* UI polish for payment links, chart legends, alert bar, and sponsorship copy
* Addressed loading flash, overflow, and accessibility issues in RPC pool

**Fixed**

* Guard against null analytics cells crashing dashboard on login
* Fix `defaultValue` sync issue in RPC pool settings
* Update `PAYMENTS_APP_CONFIG` with new backend and web wallet URLs

#### PayRam Core `v1.9.1`

**Fixed**

* BTC batch size reduced to 2 for per-block height updates to improve stability

#### PayRam Core `v1.9.0`

**Added**

* RPC connection pool with health-based routing, priority ranking, and 60 seed nodes across all supported chains
* RPC node management APIs — create, update, delete, and per-node live connection testing
* ARM64 Docker build and publish workflow for multi-platform image support
* Automatic releases and tag builds via CI pipeline
* Computed `webhookStatus` field in payment search results
* Deposit sponsorship retry timeout configuration
* `CONFIRMING` payment status exposed in API; analytics tightened to processed-only deposits
* Computed `priority` field in RPCNode API response
* Hash-based RPC node gatekeeper (`ConnectionHash`) to prevent duplicate node registration
* BTC fallback node support in RPC pool

**Changed**

* Centralized `BLOCKCHAIN_NETWORK_TYPE` environment reads into `models.GetNetworkType()`
* Removed redundant `network_type` column from `rpc_nodes` table
* Chain ID retrieval refactored — TRX JSON-RPC probe separated into a dedicated function
* Seeder now uses `OnConflict{DoNothing}` for idempotency; syncs non-key fields on duplicate key
* Batch address checking for ETH/BASE blocks for improved performance
* Chain ID cached via `sync.Once` for Received events matching

**Fixed**

* TRX chain ID retrieval — enhanced error handling for unsupported endpoints and improved JSON-RPC probe
* TRX multi API key support — per-node API key used for gRPC calls instead of single client-level key
* TRX URL parsing and pool integration
* TRX timestamp handling
* RPC pool poisoning from "not found" errors — errors no longer incorrectly evict healthy nodes
* RPC pool: removed silent `DefaultFreeNodes` fallback to surface configuration issues explicitly
* Tron node mapping fix — nodes slice initialized to empty instead of nil
* BTC missed deposit flow improved
* BTC testnet connectivity fix
* Sweep retry logic — sweeps no longer incorrectly marked as `not_found` on transient errors
* Dashboard confirming deposits filter accuracy
* `FetchTransactionSponsorship` error handling and logging improvements
* Deposit pipeline stability — prevents silent deposit loss and unsafe height advancement
* External platform blockchain currency approval logic corrected
* Chain ID validation skipped on non-connection RPC node updates
* Signed transaction payload stored for safe re-broadcast on withdrawal failure
* Race condition and goroutine leak fixes in RPC pool management
* Worker restart error handling fixed

#### PayRam Payments App `v1.2.0`

**Added**

* Withdraw transactions support
* Sponsorship calculation endpoint and handler
* Fiat currency and country data integration
* Automated CI/CD release pipeline

#### PayRam Wallet `v2.4.0`

**Changed**

* TypeScript migration and ESLint configuration

**Fixed**

* Improved installation check logic and login redirect on token expiry

***

### March 11, 2026

#### PayRam Frontend `v0.3.1`

**Added**

* Activity Log in settings with breadcrumb navigation
* Missed payments reporting feature with UI components, validation, and error handling
* `excludeActionStatusPairs` filter support for activity logs API and hooks
* `UserMultiSelect` component improvements for activity log filtering

**UI**

* Quick filter style updates with high value filter option removed

**Fixed**

* Update `WEB_WALLET_URL` in `PAYMENTS_APP_CONFIG` to new production URL
* Handle 403 Forbidden separately from 401 to prevent unintended logout
* Update activity log API routes for correctness

#### PayRam Core `v1.8.3`

**Added**

* Polygon listener and broadcast processor registered in system service
* Webhook retry mechanism with exponential backoff — failed webhook deliveries are automatically retried at 30m, 1h, 2h, 4h, 8h, 24h, and 48h intervals before being marked as failed; retry intervals are configurable via system configuration

**Fixed**

* BTC missed deposit flow — improved handling in BTC client
* Sweep approval: temporarily disabled fee transfer and signature broadcasting in run method

#### PayRam Payments App `v1.1.0`

**Changed**

* Country selector and default payment method configuration

**Fixed**

* Card onramp parameter handling improvements

***

### March 5, 2026

#### PayRam Core `v1.8.2`

**Fixed**

* Polygon mainnet RPC connectivity

#### PayRam Payments App `v1.0.0`

**Added**

* Address book service with Ethereum address validation and normalization
* Sponsorship calculation logic with user payable amount computation
* Network fee support for payment calculations

***

### March 1, 2026

#### PayRam Core `v1.8.1`

**Fixed**

* Batch DB query for calldata address checking to fix slow block processing
* Nil guard for `IdentifyOurAddresses` to prevent panic
* Error logging in `identifyOurAddresses` for silent DB failures
* Remove `MaxBlocksPerBatch` cap in polling to eliminate inter-batch sleep
* Prevent genuine deposits from being marked stale on transient RPC errors
* Log error from `MarkStaleConfirmingDeposits` instead of discarding

***

### February 28, 2026

#### PayRam Frontend `v0.3.0`

**Added**

* OnRamp Payments: new `OnrampPaymentsScreen` component integrated into OnrampPayments page
* `ErrorBoundary` for `OnrampPaymentsScreen` to handle rendering errors gracefully
* Confirmation state logic with debug mode and animated transitions for payment flows
* Legacy QR toggle with improved dropdown overflow handling and payment UI enhancements
* PayRam logo embedded in QR codes
* Restart Nodes button in integrations settings
* Refresh icon added to icon components
* Configure MCP nav item with icons in sidebar

**Changed**

* Rolled back Next.js 15 to 14 for stability
* Upgraded CSS and UI dependencies to latest compatible versions
* Cleaned up global CSS, removed redundant configs and duplicate imports
* Refactored icon imports and added new OnrampPayments API

**UI**

* Global design unification — slate color palette, stat strip, settings and payments redesign
* Dashboard design audit — slate color scheme, table redesign, mobile filters, chart theming
* Redesigned dashboard metric cards and updated sidebar color theme
* Mobile hamburger menu, neon green theme, and dashboard polish
* Instant sidebar highlight on navigation click
* Fixed dropdown flash by defaulting to desktop positioning
* Restored credit card icon next to Cards payment method label
* Aligned Crypto icon layout to match Cards payment method
* Settings list layout, sweep-in header and info block reorder

**Fixed**

* Update wallet URL to production domain
* Handle 403 Forbidden separately from 401 to prevent unintended logout
* Prevent automatic logout on transient errors during token refresh
* Improve logic to check availability of USDC token and BASE blockchain in ChannelSelector
* Remove duplicate blockchain case showing incorrect card icons
* Add QR code containers to prevent SVG overflow and fix wallet chain detection race condition
* Revert build optimizations and remove deprecated Next.js 15 config

#### PayRam Core `v1.8.0`

**Added**

* Deposit confirming state support — frontend can now track confirmation progress before deposits are fully confirmed
* Blockchain node validation with mainnet detection (`IsMainnet` method)
* Support for missed deposit webhook approval workflow

**Changed**

* Consolidated webhook processing into single method to prevent duplicate webhook sends
* Improved OnramperPayments API with better pagination, date filtering, and sorting validation
* Refactored blockchain client methods for consistency (`ChainIDUint64` renamed to `GetChainID`)
* Standardized error responses with correct HTTP status codes

**Fixed**

* Context deadline/cancellation handling in blockchain processors
* `EnsureTxConfirmed` polling behavior on `NotFound` status
* TRX sweep transaction field population (Token/From/To/Amount/EventType)
* BTC sweep UTXO processing to include "confirming" status
* Analytics graph colors for New/Recurring metrics
* Payment channel seeder to set Payments App status to active

***

### February 17, 2026

#### PayRam MCP Server `v1.1.0`

**Added**

* Headless setup guide retrieval tool with formatted checklist
* Agent onboarding skill for automated deployment
* Analytics references integrated across all existing skills
* Google Analytics integration on MCP landing page

**Changed**

* Renamed headless setup to agent onboarding for clarity

**UI**

* Integration card layout split into 2-column grid

***

### February 14, 2026

#### PayRam Frontend `v0.2.8`

**Added**

* Added Payments App Channel
* Update Payments Page to support Payments App

**Fixed**

* Payments Page UI fixes

#### PayRam Core `v1.7.9`

**Added**

* Integration of Payments App

***

### February 10, 2026

#### PayRam Frontend `v0.2.7`

**Added**

* Payments page Disclaimer

**Fixed**

* QR code styles and UI improvements
* Recommended token fix
* Dashboard UI fixes

#### PayRam Core `v1.7.8`

**Added**

* Tracking of user activity in the dashboard
* Improved polling logic for the blockchain network processors

***

### January 15, 2026

#### PayRam Frontend `v0.2.6`

**Added**

* Added support for Polygon

**Fixed**

* Recommended token fix in payments page

#### PayRam Core `v1.7.7`

**Added**

* Polygon integration

**Fixed**

* Minor bug fixes

***

### January 6, 2026

#### PayRam Frontend `v0.2.5`

**Fixed**

* Add disclaimer text regarding PayRam software usage and liability
* Add disclaimer text regarding software usage and liability in PaymentScreen

#### PayRam Core `v1.7.6`

**Fixed**

* Bug fix for deposits coming through smart contracts
* Improvement in Tron sweep

***

### December 26, 2025

#### PayRam Frontend `v0.2.4`

**Fixed**

* TRON QR scan fix
* Update precision of amount on scanning QR code on Payments Page
* Filter inactive recipient while creating Payout

#### PayRam Core `v1.7.5`

**Fixed**

* Fix for JWT token based authentication
* Minor fix in Ethereum blockchain listener

***

### December 9, 2025

#### PayRam Frontend `v0.2.3`

**Added**

* Payment channels (TransFi)
* Added support for JWT based authentication

#### PayRam Core `v1.7.4`

**Added**

* JWT token based authentication for all the dashboard APIs
* Swagger documentation for all APIs

***

### November 15, 2025

#### PayRam Core `v1.7.0`

**Added**

* Support for smart contract ETH deposits (e.g. deposits from Coinbase)

***

### November 11, 2025

#### PayRam Frontend `v0.2.2`

**Added**

* Merchant payout: merchant can create a payout request

**Fixed**

* Minor bug fixes and performance improvements

#### PayRam Core `v1.6.9`

**Added**

* APIs for merchant payout (withdrawal)

***

### April 18, 2024

#### PayRam Core `v1.2.6`

**Added**

* APIs to add member
* APIs to add roles
* APIs to add permissions
* APIs to assign roles to members
* API for signing authentication
* APIs to add permissions to roles
* USD adjustment factor of 2%

***

### April 10, 2024

#### PayRam Core `v1.2.5`

**Fixed**

* Removed unwanted log
* Added defer function to avoid nil pointer error

#### PayRam Core `v1.2.4`

**Fixed**

* Added defer to handle abrupt termination of webhook job due to error at network layer

#### PayRam Core `v1.2.3`

**Added**

* Support for notifying customer through email upon BTC credits
* Added necessary logs
* Updated event consumer library

**Fixed**

* Fixed few bugs related to transaction which was causing database locking

***

### April 9, 2024

#### PayRam Core `v1.2.2`

**Added**

* Support to add multiple platforms for a merchant
* Migration to add platform table and updates in the database tables
* Code refactored
* Payment request API no-ok response structured

***

### April 5, 2024

#### PayRam Core `v1.2.1`

**Added**

* Support for Tron listening
* Change in routes and handlers for admin APIs to follow REST API guidelines
* Code refactored

***

### March 29, 2024

#### PayRam Core `v1.2.0`

**Added**

* Feature to send email to merchant on payment request
* Added open source event emitter library
* Added open source event consumer library

***

### March 19, 2024

#### PayRam Core `v1.1.6`

**Added**

* Changed USD amount adjustment factor from 0.988 to 0.984
* Refactored the code
* Removed unwanted comments

***

### March 15, 2024

#### PayRam Core `v1.1.5`

**Added**

* Accounting processor for Bitcoin sweep (withdrawal)
* Updated go.mod and go.sum (showing vulnerability in one of the libraries)

***

### March 14, 2024

#### PayRam Core `v1.1.4`

**Added**

* Audit processor for Bitcoin sweep (withdrawal)
* Changed USD amount adjustment factor from 0.995 to 0.988
* Updated go.mod and go.sum

***

### March 12, 2024

#### PayRam Core `v1.1.3`

**Added**

* Modified withdraw API to take withdraw hash in param rather than JSON params

***

### March 9, 2024

#### PayRam Core `v1.1.2`

**Fixed**

* Removed unwanted webhook call for cancelled payments in create payment request API call

#### PayRam Core `v1.1.1`

**Added**

* Restructured and added few test cases along with makefile
* Separate webhook processor for retrying failed webhooks
* APIs for BTC sweeper (withdrawal)
* Removed unwanted logs
* Migration to copy deposits to `withdra_deposits` table for sweeping
* Migration to mark all cancelled payment requests webhook status to received
* Migration to add two more tables

**Fixed**

* Multiple bug fixes in the code while testing

***

### March 3, 2024

#### PayRam Core `v1.1.0`

**Added**

* Support to pay using Bitcoin
* Bitcoin listener can be run as a separate job
* Created README.md file with installation, configuration and usage details

**Fixed**

* Error in Ether and ERC20 subscription stops abruptly

***

### February 24, 2024

#### PayRam Core `v1.0.8`

**Added**

* Welcome message in the home page

#### PayRam Core `v1.0.7`

**Fixed**

* Small bug fix — added missed return statement in payment request API for all users when it is a pre-prod server

***

### February 23, 2024

#### PayRam Core `v1.0.6`

**Added**

* Added code to copy `created_at` and `updated_at` in DB migration

#### PayRam Core `v1.0.3`

**Fixed**

* Bug fix in URL configuration

#### PayRam Core `v1.0.2`

**Fixed**

* Bug fix

#### PayRam Core `v1.0.1`

**Fixed**

* Bug fix

#### PayRam Core `v1.0.0`

**Added**

* First release with new architecture


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.payram.com/support/change-log.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
