Accepting XMR payments: node and RPC gateway setup

Accepting Monero breaks down on small details: the node lags behind the network, the gateway loses confirmations, payments get stuck. We set up the infrastructure turnkey — node, gateway, and procedures — so payments go through without failures and the team doesn't waste time manually sorting out stuck transactions.

Blockchain Development Services

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1376
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1350
  • B2B Advance company logo design
    B2B Advance company logo design
    795
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1088
  • AIDER company logo development
    AIDER company logo development
    1034
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1130

Accepting Monero payments: where the node and the gateway break

Accepting Monero payments breaks not at the "connected the wallet" stage, but in operation: the node falls behind the network, the RPC gateway loses connection to the daemon, a transaction hangs in the mempool longer than expected.

At that moment the owner sees not an error, but silence — the order is paid, yet the status in the system does not change.

The most common cause is blockchain desynchronization. A node that cannot keep up with the network serves a stale block height, and the gateway either fails to see an incoming transfer or confirms it against the wrong chain.

The second class of failures is confirmation delay: under network congestion or a suboptimal fee choice, the payment hangs, while the business logic has already marked the order as unpaid.

The third scenario is a break between the wallet and the RPC gateway: the daemon is alive, but the connection to it is dropped, and requests to create an address or check status go into the void.

Separately, there is the loss of synchronization between the wallet and its own node — the balance on screen diverges from the real state of the network.

All three failures share one thing: they manifest on the money, not in the logs. Below we break down how this is closed at the level of payment acceptance architecture — from the resilience of the Monero node to the logic of the RPC gateway and confirmation control.

What a properly configured Monero infrastructure delivers

A properly configured Monero node is not a "set it and forget it" affair.

The key metric here is stable RPC gateway response time under load: as long as the node is synchronized and not bottlenecked by the disk, the wallet returns a response in fractions of a second, and the payment service does not queue incoming operations.

As soon as synchronization falls behind, response time grows exponentially, and some payments get stuck in the "unconfirmed" status.

The second effect is the absence of transaction loss. When the gateway correctly tracks block height and persists state across restarts, not a single incoming transfer is lost during a connection drop or service restart.

We verify this with a dedicated check: we reconcile the number of accepted operations against the number of records in the database after every failure.

The third is predictable recovery. A node with configured Monero monitoring and automatic restart comes back up in minutes rather than hours, and continues from the same block height.

We track synchronization lag, RPC availability, and the depth of the backlog — the operator sees the problem before it affects the client.

Together, these three properties deliver what the infrastructure is built for: the payment flow runs smoothly, without manual interventions and without investigations into "where the transfer disappeared to."

Deployment options: local node, remote, hybrid

The choice between local, remote, and hybrid placement of a Monero node and RPC gateway determines three things: payment confirmation latency, the privacy of the "client — transaction" link, and the scope of maintenance. Below are working configurations that are realistically chosen when accepting payments.

Option When it fits Limitations
Local node Full control over data, accepting payments without external intermediaries Blockchain synchronization takes hours, requires a dedicated disk and memory headroom
Remote node Quick start, no infrastructure of your own Payment privacy depends on the provider, RPC latency under peak load
Hybrid scheme Your own node for sensitive operations, remote — for backup More expensive to maintain, requires state synchronization between environments

Gateway load

The RPC gateway maintains a connection to the node and accepts incoming requests from the point-of-sale or backend. With local placement, response latency is predictable, but load peaks fall on the same server as synchronization. A remote node removes this load, but adds network latency and the risk of provider-side limits.

Payment privacy

A local node does not expose the link between addresses and amounts to the outside — all traffic stays within the environment. In a remote scheme, this data passes through someone else's infrastructure, which is often unacceptable for accepting payments. A hybrid setup addresses this by keeping sensitive operations on your own node.

We break down how to choose a scheme for your load profile and privacy requirements.

Implementation stages: from audit to handover to operations

Work on accepting payments in Monero begins not with deploying a node, but with surveying what already exists: where the services will be located, how the network between them is structured, what the wallet isolation requirements are, and who will get access to the keys.

A skipped infrastructure audit almost always surfaces at the fault-tolerance testing stage — when it turns out that the standby node cannot see the network or that the keys are sitting next to the public interface.

The sequence then looks like this:

  1. Infrastructure audit. We record the current servers, network segments, access policy, and failure points. The output is a placement map of the node, wallet, and gateway with explicit trust boundaries.
  2. Scheme design. We define the topology: full node, storage wallet, RPC gateway, and confirmation queue. We decide in advance how the gateway will survive node unavailability and what will happen to a payment at the moment of a chain reorganization.
  3. RPC setup. We bring up the node, close off RPC from the outside world, configure authentication, request limits, and logging. The gateway receives only the methods needed for accepting payments — everything else is cut off at the configuration level.
  4. Fault-tolerance testing. We run through the scenarios: node crash, loss of network connectivity, repeated notification delivery, chain rollback. We check that a payment is neither lost nor credited twice.
  5. Documentation. We describe the configurations, network scheme, key rotation procedure, and recovery from backup — so that an on-duty engineer can bring the service up without the original author of the solution.
  6. Handover to operations. We hand over the credentials, run an incident review on a training scenario, and record who is responsible for node updates.

Each stage ends with an artifact rather than a verbal agreement: a scheme, a configuration file, a verification report.

This makes it possible to return to any step without reconstructing the context in your head — and to hand the system over to another team without rewriting it from scratch.

Access policies, keys, and maintenance regulations

Operating a payment node begins not with starting a daemon, but with a set of artifacts that make it reproducible and transferable. Below is a checklist that our engineers complete before putting the gateway into production.

  • Node and gateway configurations — files with explicit RPC limits, public access to the wallet disabled, and separate profiles for reading and writing.
  • Network diagram — topology with exit points, separation of the public and private perimeter, and locations for storing view and spend keys.
  • Access policies and IAM roles — a "who can do what" matrix: the gateway's service account has no withdrawal permissions, the operator can see the balance but does not touch the keys.
  • Key rotation instructions — a regulation with frequency, the procedure for changing view and spend keys, and verification that old addresses have stopped receiving.
  • Backup regulation — what we back up (wallet, configs, state), how often, where we store copies, and how we verify restoration.
  • Monitoring and alerts — thresholds for synchronization delay, number of confirmations, and balance discrepancies between the node and the accounting system.
  • Incident response plan — the procedure for stopping acceptance, isolating the node, and notifying responsible parties.

Each item does not exist on its own: key rotation without a backup is meaningless, and monitoring without a response regulation turns into noise.

That is why we link the artifacts into a single loop — a configuration change entails updating the diagram and access rights, rather than living as a separate file on someone's disk.

Describe your task — we will come back with an estimate and a plan, including a list of artifacts for your perimeter.

Case study: how we eliminated payment gateway downtime

The client came to us with a Monero payment gateway that would "stick" every few days: the node would drop out due to memory, the RPC gateway would lose its connection to the daemon, and payments at that moment would hang in the "awaiting confirmation" status.

The on-call engineer would restart the service manually, but every downtime meant delayed crediting and a stream of support requests. The goal was not to patch symptoms but to eliminate the entire class of failures.

What it was before

The node ran on a single instance with no memory consumption limits, the wallet gateway talked to it directly and did not survive a daemon restart.

Blockchain synchronization after a crash started from scratch, and the queue of unconfirmed transactions accumulated and was processed sequentially. Downtime reached 40-90 minutes, recovery after a failure took hours, and the share of stuck payments was noticeable.

What we changed

We separated the node and the gateway: the daemon got memory limits and auto-restart, the gateway got a pool of persistent connections with retries and idempotent processing.

We added monitoring of blockchain height and RPC response latency: if the node falls behind, traffic goes to a standby instance. The payment queue was switched to parallel processing with deduplication by transaction hash.

What it became

Downtime was reduced from hours to just a few minutes — when a node fails, the gateway switches to the standby without manual intervention. The "stuck payment" class of failures is gone: idempotency and deduplication eliminated reprocessing.

Processing speed increased severalfold thanks to the parallel queue, and recovery time after a daemon failure dropped to an automatic restart. The on-call engineer is no longer part of the process.

Monero is important here as an example: the same scheme — limits, standby, idempotency, monitoring — transfers to any node-based payment loop.

How does a public node differ from a private one when accepting payments?

A public node is someone else's server that your gateway contacts via RPC to broadcast transactions and read the state of the network.

It's fast and doesn't require your own infrastructure, but you hand over your clients' IP addresses, amounts, and the "wallet — payment" link.

For Monero this is critical: the network itself is built to hide the sender, recipient, and amount, while a public node gives that privacy back — the operator sees the correlation of requests and, if they wish, ties them to your service.

On top of that, you depend on its availability and policy: the node can be rate-limited, overloaded, or suddenly shut off.

A private node is your own instance of the daemon and wallet, deployed on your own hardware. RPC requests never leave your perimeter, view and spend keys stay under your control, and payment logs don't end up with a third party.

You set the rules yourself: which RPC methods are exposed, who has access, how logs are stored. This is data control in its purest form — not a declaration, but a configuration.

Resilience differs too. A public node is a single point of failure: if it goes down or starts dropping your requests, payment acceptance stops.

A private node synchronizes the blockchain locally, survives network restrictions, and keeps accepting transactions even when external services are unavailable.

Hence the practical conclusion: a public node is fine for tests and one-off checks, but for production payment acceptance you need your own — with redundancy and monitoring.

Common technical concerns when setting up Monero

Monero nodes are incompatible with light clients: a full node stores the entire blockchain history and requires space for it, so "just spinning it up on a weak machine" won't work.

To accept payments, you need your own node with an open RPC — public gateways don't guarantee availability and expose your addresses. Below is a breakdown of typical concerns that come up before starting.

How much will the load on the server and network grow?

A full node syncs with the network and constantly maintains connections with peers — this is background load on the disk and channel, not spikes.

Accepting payments itself is light: the RPC gateway handles wallet requests and transaction verification without loading the node beyond synchronization. We separate the node and the gateway so that growth in the number of payments doesn't hit a single process.

How do you ensure security and access to the wallet?

Private keys never leave the secure perimeter: the gateway works only with the public part, and transaction signing is isolated. The RPC is closed off with authorization and accessible only to trusted services, never exposed externally. Such a perimeter survives the compromise of a single node without leaking funds.

What happens during a failure and how do you recover?

The node is restored from a backup of the data and re-syncs with the network; the wallet — from the seed phrase on a clean node.

We document the recovery procedure in advance so that getting back to work takes a predictable amount of time, rather than depending on who first remembers the commands.

How do you scale for growth in the number of payments?

The gateway scales horizontally: several instances behind a load balancer, while the node scales vertically to accommodate the growing history. This allows increasing the throughput of payment acceptance without rebuilding the wallet logic and without touching the keys.

Describe your task — we'll come back with an estimate and a deployment plan for your payment volume.

Let's discuss your Monero payment acceptance task

Accepting Monero payments is a task where the cost of a configuration error is higher than in most integrations.

A node that falls behind the network, miscounts confirmations, or loses incoming transactions during reindexing produces not an "inconvenience" but a discrepancy between the balance and the actual state of the blockchain.

That is why we start not with code, but with an analysis of your current setup: how order accounting is structured, who initiates the payment, and where the boundary lies between your system and the node.

To come back with an estimate and an implementation plan rather than generalities, we need to understand a few things about your environment:

  • the current acceptance setup: manual confirmation, your own node, a third-party gateway, or a combination of these;
  • how an incoming payment is currently matched to an order — by amount, by identifier, by address;
  • the confirmation requirements and what happens to the order before they are collected;
  • who holds the private keys and how access to the wallet is organized;
  • the load: how many payments per day and what peak you handle;
  • the infrastructure for the node — where it will live and who is responsible for its availability;
  • what already exists for monitoring and how you find out about a node failure.

Based on these answers, our engineers will put together a plan: the node topology and its redundancy, an RPC gateway scheme with idempotent payment processing, a confirmation and rollback policy, the procedure for withdrawing funds, and access segregation.

The estimate for the work is tied to specific stages rather than an abstract scope — you see what you are paying for and what you get as a result.

If it is more convenient to start with a conversation rather than a questionnaire, describe the task in free form: the current setup, the bottleneck, and what you want to achieve.

We will come back with an estimate, an implementation plan, and the questions that need to be resolved before the start.