# Wallet-to-Wallet, "P2P" payments in GNU Taler

**URL:** <https://ich.taler.net/t/wallet-to-wallet-p2p-payments-in-gnu-taler/256>\
**Category:** Glossary\
**Tags:** explanation, docs\
**Created:** [26 June 2024 12:22 UTC](https://ich.taler.net/t/wallet-to-wallet-p2p-payments-in-gnu-taler/256 "2024-06-26T12:22:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![oec](https://ich.taler.net/user_avatar/ich.taler.net/oec/32/169_2.png) [@oec](https://ich.taler.net/u/oec)\
**Post date:** [26 June 2024 12:22 UTC](https://ich.taler.net/t/wallet-to-wallet-p2p-payments-in-gnu-taler/256/1 "2024-06-26T12:22:31Z")

</div>

Hi @ShadeOW,

> [@Introduce yourself here](https://ich.taler.net/t/introduce-yourself-here/58/29):
>
> At [this](https://docs.taler.net/taler-merchant-api-tutorial.html#architecture-overview) par you say there are 2 differents back-end but why ? Wich differences there are between the backend of the public interface and the other backend ?

As for your first question: I think that the picture in the documentation is slightly misleading us thinking that there are _two_ different processes running as merchant backend. There is only _one_ process (`taler-merchant-httpd`) serving _two_ types of REST-API’s: 1) the public facing API used by browsers and 2) the _internal_ API used by the backoffice of the merchant. The administrator of the merchant-side has to separate those REST-API’s via some http-routing mechanism (nginx, squid, etc.).

> [@Introduce yourself here](https://ich.taler.net/t/introduce-yourself-here/58/29):
>
> At the same part, you say : “As a result, the frontend never has to directly communicate with the exchange, and also does not deal with sensitive data.” But how do you do that ?

Regarding your second question: What exactly is it that you want to know?

---

<div class="post-metadata">

**Author:** ![Ada](https://ich.taler.net/user_avatar/ich.taler.net/ada/32/213_2.png) [@Ada](https://ich.taler.net/u/Ada)\
**Post date:** [27 June 2024 13:50 UTC](https://ich.taler.net/t/wallet-to-wallet-p2p-payments-in-gnu-taler/256/2 "2024-06-27T13:50:44Z")

</div>

> [@oec](#):
>
> Regarding your second question: What exactly is it that you want to know?

I guess @ShadeOW only wanted to understand the dark magic behind this P2P payment feature of GNU Taler. Am I right?

> [@Introduce yourself here](https://ich.taler.net/t/introduce-yourself-here/58/29):
>
> “As a result, the frontend never has to directly communicate with the exchange, and also does not deal with sensitive data.” But how do you do that ?

~~Indeed, Taler is a P2P service despite the existence of the Exchange. The exchange is only there to convert money to tokens and vice versa. Once your wallet contains tokens withdrawn from the bank, you can pay to a merchant.~~ The payment process is extensively described in [the Payment processing section of the Merchant Backend API](https://docs.taler.net/core/api-merchant.html#id24):

> To process Taler payments, a merchant must first set up an order with the merchant backend. The order is then claimed by a wallet, and paid by the wallet. The merchant can check the payment status of the order. Once the order is paid, the merchant may (for a limited time) grant refunds on the order.

Thanks for asking anyway, it was a nice opportunity for me to dig in further in the docs and to suggest some improvements to bring to the docs 🙂

---

<div class="post-metadata">

**Author:** ![oec](https://ich.taler.net/user_avatar/ich.taler.net/oec/32/169_2.png) [@oec](https://ich.taler.net/u/oec)\
**Post date:** [28 June 2024 18:18 UTC](https://ich.taler.net/t/wallet-to-wallet-p2p-payments-in-gnu-taler/256/3 "2024-06-28T18:18:59Z")

</div>

I would not use the term “P2P” for the purchase operation with the merchant (which was the context of ShadeOW’s question). “P2P” in the GNU Taler lingo has nothing to do with the merchant-protocols or components. (“P2P” is designed in [12.13. DD 13: Wallet-to-Wallet Payments — GNU Taler](https://docs.taler.net/design-documents/013-peer-to-peer-payments.html) and has its own API on the _exchange_ : [1.3. The Exchange RESTful API — GNU Taler](https://docs.taler.net/core/api-exchange.html#wallet-to-wallet-transfers))
