Hey everyone!
I’m looking to set up a system for processing deposits but I’m a bit lost on the best method. Right now, I have no interest in running my own node since I’d have to deal with downloading the whole blockchain, which feels way too complicated. So, I’m considering using an external API instead.
Here’s the situation: I’ve got just one address for all incoming deposits. My service operates without user accounts, treating the sender's address as the UserID. I want users to see instantly on the site when their transaction goes through. Plus, I need the confirmation counts to update right away, but only for up to 6 confirmations. Once that’s hit, the deposit is considered good, and I don’t need to check for more confirmations. It’s also crucial that if my web server goes down, deposits are still processed during any downtime.
Currently, I’m not super happy with my approach, which is polling my deposit address every couple of minutes. The issue is that this also picks up older deposits that I've already processed. So, my server has to filter out the new ones to add them to the database. On top of that, I’ve got a websocket running that notifies me when a new block is found. When that happens, I check the transaction details for all deposits that haven’t hit 6 confirmations yet to get the latest count. I only do this when there’s a new block since no new transactions come in between blocks.
Best Way to Handle Bitcoin Deposits with External APIs
14 replies 162 views
coin_sigmaLegendary
Posts: 1275 · Reputation: 5553
#2Nov 12, 2025, 02:13 PM
That's complicated I suggest if this is all about accepting Bitcoin payments you can use BTCpayserver and skip downloading the whole blockchain.
Deploying BTCpayserver in your own hardware is much better if you have Raspi you can run BTCpay without syncing by enabling pruned mode.
Here's how to skip syncing https://docs.btcpayserver.org/FAQ/Synchronization/#can-i-skip-the-synchronization
Instead of using the same address every 2 minutes, BTCpayserver gives a unique BTC address derived from your wallet.
Or if you don't want to run it on your hardware there is an alternative way you can use https://www.blockonomics.co/merchants
The first 20 transactions are free above transaction it ask for a 1% fee for every transaction. This is easier to manage it only requires your xPub or your wallet master public key meaning they don't have full control of your wallet all unique addresses are generated from your wallet.
I've tested both of them on WordPress and Shopify.
I don't understand why it's so complicated. Cryptocurrencies are meant to be used for payments. So why is it so hard to process them? Even the API providers on the market don't seem to offer really optimal solutions. That's strange. I'm going to take a look at BTCpayserver. However, I also need a solution for Ethereum and Litecoin. And I definitely want to use only one deposit address. I don't want new addresses to be generated all the time.
It's very disappointing and incomprehensible that it's so complicated. But if I run my own node, then it's much easier to process deposits, right? Or does it also require a lot of makeshift solutions?
Thank you for your help!
You can use payment gateways to handle this. Sites like CryptoApi and nowpayments offer this service. Hosting the complete blockchain on your server is very resource intensive and harder to code if i'm honest
guru_wizardMember
Posts: 43 · Reputation: 203
#5Nov 12, 2025, 07:03 PM
quicknode (they have option to add bcoin which i've used) . Only somewhat hardcore part is to set up ssl with them. Balance and this stuff is easy then.
i mean that that you need to use SSL_ctrl()
coin_sigmaLegendary
Posts: 1275 · Reputation: 5553
#6Nov 12, 2025, 08:17 PM
Well for me it's complicated it's technical I let handle my payments with BTCpay it's open-source and you can add any coins or tokens you want to accept you just need to learn how to add them.
Read this
Source: https://docs.btcpayserver.org/FAQ/Integrations/
Meaning LTC and Ethereum are both supported.
Using only one deposit address will make the payment gateway confused about who pays you. They fix this to give a unique address to every customer it should be easier to manage than having only a single deposit address. Look what if you have many customers buying something from your website at the same time so how do you know who pays you? That's why this payment gateway came to fix this kind of issue for any store owners.
What do you mean with "they have the option to add bitcoin"? So I can tell them I want to use their Bitcoin API and then they enable it for me? But why don't they offer it regularly?
Unfortunately, they do not offer Litecoin. Many other unknown coins, but no Litecoin, which is used extremely often for payments. Very strange.
Thanks. So with BTCpayserver I can process deposits through Litecoin and Ethereum as well? Without fees? I will look into it. But its strange that the name is btcpayserver, when its not just for Bitcoin.
And I know, but I have to run everything via one payment address. There's no other way. Thanks!
coin_sigmaLegendary
Posts: 1275 · Reputation: 5553
#8Nov 13, 2025, 08:01 AM
BTCpayserver doesn't ask for any fees all transactions go directly to your own wallet if you have a hardware wallet like Trezor then all transactions will be deposited to that wallet.
I agree the name is strange it was created before for Bitcoin only as time passed by they also developed adding other coins.
What wallet do you use why still insist on using one payment address? if you are using a custodial wallet BTCpay will not work because it requires xPub or a master public key.
guru_wizardMember
Posts: 43 · Reputation: 203
#9Nov 14, 2025, 02:27 PM
bcoin is a library that provides tracking of the balance on addresses. So you can use it via api then. Yeah no litecoin there
It's not about the wallet, it's about my project concept. There can only be one deposit address for it. So this won't work with BTCpay, because BTCpay always generates new addresses?
Oh, I see, then I am dependent on a specific client. I thought I could just make a regular API call to request transaction data. That's not so nice. But it could be noted as a temporary solution.
I wonder how Bustabit or Luckybit processes or processed deposits. I'm probably imagining it too simply to process deposits. All I want is to save new deposits into my database and keep checking them until they have 6 confirmations.
RogueDegenFull Member
Posts: 74 · Reputation: 309
#11Nov 14, 2025, 07:50 PM
No. Just no. A bitcoin address is like an invoice number. You give out a new one for every deposit. That way you know exactly who you gave the address to and when. Then when a payment shows up on that address, you know who's deposit it is, since htey are the only one you gave the address to.
If I send you a single deposit in a single transaction, the bitcoins you receive from me will have been received by me at 5 different addresses. How are you going to decide which "sender's address" is my userID? Do I now have 5 userID's, just because I sent you one transaction? this is not the right way to do this. You're making it complicated and you clearly are trying to write software without any understanding of how any of this actually works. This is a bomb with the fuse already lit. Please stop until you've learned a bit more and you've re-architected your service to make the best use of what's available to you.
Quite easy to do if you give out a new address for each depoist.
Another good reason to use new addresses for every deposit, and to build recovery processes into your system for handling downtime.
I wouldn't be either from what I've read so far.
I'd start over. I'd make sure I understood how bitcoin works. I'd take advantage of the tools available. I'd run a node. I'd process transactions and blocks as they are received by the node. I'd create a recovery process that can scan the most recent X blocks. I'd create backups/snapshots of point in time to recover from if needed. I'd receive all deposits into cold wallets whose private keys have never been online. I'd maintain a hot wallet with a small but adequate balance if I need to also send out payments. I'd have very strict and careful process in place to fund the hot wallet.
Again, no.
It's not. You are choosing to MAKE it hard by artificially putting constraints on yourself and refusing to architect your product/service properly.
Then you don't understand how bitcoin works. This would be like saying "I want to accept U.S. physical cash, but I don't want to anything made of metal or or cotton-linen blends. Why is this so difficult to do?"
Easier? That depends on your capabilities, knowledge, and skills. But it's certainly more reliable and less prone to the whims of a service provider.
That depends on how complicated the design and architecture of your product/service is.
guru_wizardMember
Posts: 43 · Reputation: 203
#12Nov 14, 2025, 09:04 PM
you can use it. bitcoin itself has no api for checking balance on external addresses that're outside of node
Thanks @DannyHamilton for the answer. It also feels good to be hit with such clear words. So thank you for that! However, I must remain stubborn and unfortunately cannot be persuaded to use anything but a single deposit address. And the matter with the userID is not a problem either, I just don't want to reveal exactly how I do it. It's not so relevant anyway. The assignment to users would then be a different topic.
It can be thought of as a donation address. And this address remains the same. I would like to now record the donations that come in into my database. But it's also good to hear that it's indeed not so simple. I do know quite a bit about cryptocurrencies, as long as it doesn't get too specialized (like with Bitcoin Core development). It's therefore good to read that I haven't overlooked a simple solution for my problem and that it actually presents a challenge, which I'm happy to take on.
coin_sigmaLegendary
Posts: 1275 · Reputation: 5553
#14Nov 15, 2025, 05:18 AM
If it's a donation address then no need to use BTCpayserver because a single BTC address is enough to receive donations. You don't also need to use 3rd party APIs just to receive donations.
However, if you want to keep track of who donates you then use BTCpayserver. To understand how donation works with BTCpay check this video below.
- https://youtu.be/MIWGvl6_WzI?si=KUD07gAnwdSDG9Dg
And the best solution is to run my own node with bitcoin core where I directly interact with Bitcoin core to get all the data I need, right? Is it really recommended to interact with Bitcoin core directly or do you guys can suggest any other tool for it?
Related topics
- Bitcoin Core displaying coins (UTXOs) in a new tab 13
- Are you in favor of BIP-110? Let's get a Bitcoin poll going. 0
- Erlay seems to have some issues here’s a better proposal for a bitcoin protocol without invites 3
- Ways to earn some sats by contributing to bitcoin core development 5
- Exploring the Potential and Challenges of a Kardashev-Scale Bitcoin Network 3
- What can I do to fix this Bitcoin Core error? 8