This article will explore the differences between invoices and channels, shedding light on their unique features and providing a comprehensive comparison.
Invoices
An invoice is a request for a cryptocurrency payment which is linked to its unique cryptocurrency address and the amount that has to be paid while the invoice is valid. The invoice amount can be expressed either in cryptocurrency or fiat currency.
As cryptocurrency payments are made over a separate network, when creating an invoice, we generate a unique payment address for each cryptocurrency so we can match customers to their payments. When a customer makes a cryptocurrency payment, the transaction is then broadcast to the cryptocurrency network for validation/confirmation.
Once the invoice is created, we start monitoring its unique address to identify the incoming transaction. Invoices have statuses and each time the invoice changes its status, Cryptopay sends callbacks to the Callback URL.
Every time the customer sends cryptocurrency to the invoice address, we send the first callback with the transaction_created event. It means that the payment has just been identified, but it has not been validated by the network yet. When the transaction is completely verified and confirmed by the network, we send another callback with the transacion_confirmed event, and the invoice automatically changes its status from new to completed.
The invoice is only valid for a limited time (10 minutes max). This is due to the fact that for each invoice, Cryptopay freezes the exchange rate for 10 minutes.
In some cases, customers make payments after the invoice has expired. In this case, the invoice status will be updated to unresolved with the paid_late context.
There are also cases where customers may overpay or underpay the invoices. When this happens, the invoice changes its status to unresolved with an overpaid or underpaid context. In any of the above user scenarios, the unresolved payment status can be updated to completed or refunded manually, or Cryptopay will automatically update the status as soon as the payment is validated by the network if the appropriate settings have been selected on the Settings > API > How to handle unresolved invoices in your account. More info on that can be found here.
Key Features of Invoices
Structured information: invoices provide a clear and structured breakdown of the transaction details, ensuring transparency between the parties involved.
Payment request: they serve as a formal request for payment, indicating the amount due, currency, and the recipient's address.
Fixed exchange rate: once the invoice is created, the exchange rate is frozen for 10 minutes, which allows the user to be sure about the exact amount of funds to be credited, provided that the invoice is paid correctly and in time.
Record keeping: Invoices contribute to record-keeping and accounting processes, helping both buyers and sellers keep track of financial transactions.
Channels
A channel is a static cryptocurrency address that may be assigned to each one of your customers. They can send cryptocurrency to these addresses, and it will be automatically exchanged into EUR or other fiat currency of your choice.
Primarily, the premise of a channel is that the customer is shown the information in the Cashier the first time, and they can then re-use it, which is highly convenient – they can deposit funds without going to the Cashier, or even logging in.
One key thing to make sure of: once a channel has been created for a customer (when they've made their first deposit request through the Cashier), it's important that if they go back to the Cashier and initiate another deposit, that you display the same channel details to them and do not create a new channel - this is the best user experience.
As cryptocurrency payments are made over a separate network, when creating a channel, we generate a unique payment address for each cryptocurrency so we can match customers to their payments. When a customer makes a cryptocurrency payment, the transaction is then broadcast to the cryptocurrency network for validation/confirmation.
It means that if you want to give the customer an opportunity to make payments not only in Bitcoin, but also in other cryptocurrencies, then in addition to the BTC channel you will need to create more channels for such customers. Once the channel is created, we start monitoring the unique address of the channel to identify any incoming transactions. When we locate an incoming transaction at the channel address, we create a Channel Payment and process it.
Key Features of Channels
Static/fixed address: users can save the address and use it later for further deposit, which generally allow for a simpler workflow when depositing.
No need for recalculation: the customers receive the exchange rate at the moment when the transactions are confirmed on the network, not when they first send them. The exchange is made at the moment when we receive the funds. Therefore, it’s also important to note that the amount of fiat the user would receive might be slightly smaller or bigger than anticipated.
Minimal customer support required: compared with invoices where if customers send funds to a previously used address, you will have to manually reconcile and communicate with the customer. Channels don’t require any manual reconciliation.
If you have any questions, please feel free to contact us in the live chat or via email at b2bsupport@cryptopay.me