Setting up payment acceptance in Solana (SOL)

Crypto payments get lost during peaks, and transaction reconciliation takes days of manual work. We set up Solana payment acceptance as a turnkey solution: crediting, reconciliation, and reporting that reconcile without manual edits. We reduce reconciliation time and lower the share of disputed operations.

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

Setting up payment acceptance in Solana: where transaction accounting breaks

Accepting payments in Solana looks like a one-evening task: generate an address, show it to the client, wait for the transfer.

In practice, accounting for incoming transactions breaks on nuances — the transfer went through, but the notification never reached the service; the transaction signature exists on-chain, but there is no record in the database.

This is how lost payments appear, and the cause is almost never the network itself, but how the application reads its state.

The most common failure is a stuck confirmation. The client already sees the funds on their side, while the system keeps the payment pending because the status was checked once and never queried again.

Next to it is the second one: duplicate credits, when reprocessing the same event creates a second record in the ledger. Both failures do not surface immediately, but during reconciliation, when the discrepancy has already accumulated.

Then the balance diverges: the payment ledger and the actual balance at the address begin to live separately, and troubleshooting turns into manual review in a network explorer.

Wallet integration alone does not save you here — it shows the movement of funds, but it is not responsible for what is recorded on your side.

Setting up Solana payment acceptance is primarily accounting discipline: how new addresses are tracked, how unfinished transfers are rechecked, how the ledger is reconciled with the chain. Below we break down how this is covered.

What direct integration provides: crediting, reconciliation, reporting

Direct integration is not a "pay" button, but a closed loop: a recipient address with a payment purpose, a network listener that catches a transaction by signature, and a credit ledger.

The key detail here is idempotency: one signature produces exactly one record, so repeated node notifications and network retries do not turn into double credits.

We separate crediting speed into two thresholds. The balance in the user's account is updated immediately after the first confirmation — seconds instead of manual verification once per shift.

Funds become available for withdrawal after the required confirmation depth is accumulated, so a chain rollback remains a network risk, not a client balance risk. We work with Solana in native mode and keep both thresholds configurable.

Ledger-to-balance reconciliation runs in the background, without operator involvement: the task matches signatures from the ledger with the actual wallet state, flags discrepancies, and categorizes them by cause — underpayment, overpayment, payment outside the order window, unconfirmed transaction.

The bulk of reconciliations close automatically, leaving only isolated cases for manual review — those that truly require a human decision.

Transaction reporting is built from the same ledger: exports by periods, statuses, wallets, and orders in CSV or Excel for accounting, plus a separate report on mismatched items.

You can see how many payments arrived, how many were credited, and what remains in review — without manually consolidating statements.

The main measurable effect is the class of failures that disappears entirely: "payment arrived but was not credited" due to a missed notification or backdated reconciliation.

The second is the share of reconciliations closed automatically, instead of line-by-line manual matching.

Solana operating models: gateway, direct integration, custodial scheme

The choice of payment acceptance scheme on the Solana network determines three things: who stores private keys, who confirms crediting, and how deeply your own logic can be embedded.

None of the options is "correct" by itself — a payment gateway saves time at launch, direct integration gives full control over crediting, and a custodial service removes key management and reconciliation from the team. Below are the criteria for choosing.

Option When it fits Limitations
Payment gateway You need to accept payments quickly, with no infrastructure or on-call shift of your own Operator fee, closed set of tokens, crediting logic and delay timelines are set externally
Direct integration You need your own crediting rules, non-standard accounting, or acceptance in multiple tokens You need a full node or trusted data provider; handling retries and confirmations is on your side
Custodial service Keys and reconciliation need to be handed to an operator, and you have no in-house team for crypto payments Funds and keys are with a third party, creating legal and technical dependence on it

A hybrid scheme deserves separate mention: direct integration with non-custodial key storage — credits go to your wallet, and the operator sees only public addresses and transactions.

This is a compromise when control is needed, but building your own node and confirmation on-call coverage is undesirable.

During task discovery, we look at payment volume, accounting requirements, and acceptable crediting delay — and propose a scheme for them, not the other way around.

Implementation stages: from flow audit to handover of policies

Payment acceptance is not a "pay" button, but a loop: crediting, confirmation, reconciliation, refunds, and discrepancy review. The stages are ordered so that each result is verified before moving to the next — otherwise launch turns into debugging on live clients.

  1. Payment flow audit. We look at where payments come from, who initiates them, where receipt is recorded, and how exceptions are handled: resend, underpayment, cancellation. The result is a flow map and a list of discrepancies with the current order logic.
  2. Funds flow scheme. We define addressing, matching a transaction to an order, and rules for confirming crediting. We separately capture behavior for a stuck transaction — this is the source of most manual reviews.
  3. Setting up payment acceptance in Solana. We implement tracking of incoming transfers and confirmations, accounting for network fees, and protection against re-crediting the same transaction.
  4. Test environment. We repeat the scheme on a test network and a copy of the data: regular payments and failure scenarios — connection loss, confirmation delay, duplicate, refund.
  5. Integration acceptance. We reconcile amounts and statuses with the accounting system, payment recording time, absence of a second payment on repeated delivery, and correctness of rollbacks.
  6. Reconciliation policy. We hand over a document: frequency, exports, discrepancy thresholds, escalation procedure, and actions for a disputed transaction.
  7. Handover and monitoring. We set up failure alerts, describe typical incidents, and train the on-call team — after that, support can be handled in-house.

Handover package: configurations, schemes, policies, documentation

After payment acceptance is launched, all logic should not remain in the head of the engineer who built it. We hand over a package of artifacts that your team can use to make payouts, handle disputed operations, and connect new channels without contacting us.

The package covers the entire Solana payment path — from address generation to incident review:

  • Address scheme. Wallet hierarchy — receiving, intermediate, cold; rules for generating an address for a specific account so that incoming transfers are matched automatically.
  • Access policies. Which employees and services can initiate withdrawals, change limits, and rotate keys; second-person confirmation and an action log.
  • Disputed operations policy. Underpayment, overpayment, stuck transaction, payment to the wrong address — who makes the decision and within what timeframe.
  • Integration documentation. Calls, request and response formats, error codes, behavior on resend, linking an operation to an account number.
  • Support instructions. First-line scenarios: check payment status, find a transaction by account, understand when to escalate to an engineer.
  • Monitoring and recovery. Metrics and alert thresholds, key backups, a verified recovery and rotation procedure in case of compromise.

We verify each artifact on your side: we run the scenario using your on-call staff so that the instruction does not remain theory and access policies match the actual roles in the system.

Case study: how a flow of small transactions stopped getting lost at peaks

The client was a platform with a flow of small transactions: subscriptions, donations, access payments. During peak hours, the number of transactions grew several times above the average level, and a noticeable share of incoming transfers was not confirmed on the first attempt.

Accounting did not reconcile: disputed operations were found manually the next day, and reconciliation stretched over several days.

The review showed three causes: one address for all payers, which made payments merge into a common pile; no unique label in the payment purpose to link a payment to an account; and synchronous status checks, which blocked the queue at peak.

We moved acceptance to Solana, assigned a separate address to each account, added matching by label, and moved confirmations into background processing with repeated checks.

What changed in the numbers

  • The share of accounting discrepancies dropped from 12% of operations to 0.5% — disputed cases close automatically, without manual search.
  • Reconciliation closure time decreased from two business days to 15 minutes: the report is built as payments are confirmed.
  • Peak-hour flow grew six times above the average level — the platform handles it without failures or a manual review queue.

We also separately covered rollback: if an operation is not confirmed within the allotted window, it goes to recheck rather than manual processing.

The client's engineers received the flow scheme, payment matching rules, and reconciliation summary — support no longer depended on one person.

Direct integration or third-party service: what to choose under load

The short answer: up to moderate volume, a ready-made acceptance service is more advantageous — it enables launch in just a few days and removes maintenance from the team.

As soon as crediting delay or acceptance rules begin to affect revenue, your own Solana payment acceptance scheme with a direct connection becomes cheaper.

Approach When it fits Limitations
Ready-made acceptance service Flow up to several hundred operations per day, fast launch needed, no infrastructure of your own Crediting delay is set by the provider, the network fee is hidden in its pricing, and acceptance depends on its availability and rules
Direct integration High or uneven flow, your own confirmation and crediting rules, multiple asset types You need your own node, redundancy, and maintenance; launch timeline is longer

A ready-made service takes on confirmations, retries, and reconciliation — but its internal logic determines crediting delay: until the operation is marked successful, there is no money for the business.

A direct connection shortens this window to network confirmation time, and the network fee can be shown to the client as a separate line rather than hidden in a markup.

Dependence on a contractor shows up not in refusal to work, but in details: the list of supported wallets changed, minimum amounts increased, refund rules changed — and you learn about it after the fact.

With your own scheme, these decisions remain with you, but they come with your own node, redundancy, stuck operation review, and daily reconciliation with accounting.

Both approaches should be compared by one question: how much a minute of crediting delay costs. If it is not critical, start with a service, but design the transition to direct integration in advance so that it takes days and does not break the transaction history.

Common concerns: confirmations, refunds, key storage

Final crediting is determined not by the fact that a transaction appeared on-chain, but by the achieved confirmation level.

In Solana, finality arrives quickly, so we explicitly define the boundary between "I see the transfer" and "the goods can be released" — otherwise an order will go out against a payment that the network never accepts.

How many confirmations should be considered final crediting?

We credit only on finalized status, after verifying the amount and recipient address. Until then, the payment remains in "pending" state and does not open access to the order — false positives during network congestion are excluded.

What happens if the connection to the node is lost?

The payment handler keeps several independent network access providers and a queue of outgoing requests.

Unconfirmed operations are rechecked by transaction signature, and reprocessing is idempotent — a payment will not be credited twice or lost if one of the nodes is unavailable.

How are refunds handled?

The network does not reverse a transfer: a refund is a new transaction from the recipient address, signed by the wallet key. The scheme includes a payment ledger and protection against double refunds so that accounting sees sent and completed operations in one place.

Who holds the private keys?

Keys are stored on the client's side — in secure storage with role separation and operation confirmation by a keeper wallet. We are responsible for address acceptance, incoming transfer tracking, and notifications; the contractor has no access to the funds.

Let's discuss your task: what to clarify before work begins

To come back with an estimate and implementation plan, rather than general wording, we need input on your infrastructure and crediting logic.

Using these points, we calculate timelines, scope of work, and integration points — usually they remove most of the uncertainty before the start.

  • Acceptance scenario: one-time payments, recurring charges, a fixed amount per invoice, or a deposit with automatic crediting to the user's balance.
  • How accounting is handled now: manual reconciliations, spreadsheets, an accounting system — and exactly where the payment should go after network confirmation.
  • Crediting requirements: how many confirmations we consider sufficient, what to do with underpayments and payments that arrive after the invoice expires.
  • Wallets and access: who owns the keys, whether a separate address is needed for each client, and whether there are cold storage requirements.
  • Notification channels: whether incoming payment notifications are needed in CRM, chat, or email, and who on your side receives them.
  • Refunds and disputed operations: who initiates a refund, by what procedure, and how the decision is recorded.
  • Network and environment: whether we work only on Solana mainnet or need a separate environment for test operations.

After that, we come back with an estimate, a staged implementation plan, and a list of documentation handed over at launch: payment flow scheme, confirmation processing rules, and support procedures for incidents. Describe the task in any convenient format — we will come back with an estimate and plan.