commit 1a7dff6c8ddf0a143797f8790887858cf900ee2e
parent 80399cdaf0b98d9b6b16cab5eaf0b48e9e540c42
Author: Hernâni Marques <hernani+clementine@vecirex.net>
Date: Sat, 5 Sep 2026 03:20:47 +0200
10989/docs: explain stage e2e onboarding (mostly manual)
Diffstat:
1 file changed, 51 insertions(+), 46 deletions(-)
diff --git a/deployments/tops-stage-devtesting.rst b/deployments/tops-stage-devtesting.rst
@@ -1,72 +1,77 @@
-Testing in the TOPS Staging Environment
-=======================================
-This document contains a detailled, step-by-step instructions for testing
-with the staging environment for the Taler Operations deployment.
-The staging environment (on host ``rusty``) is almost equivalent to the production
-environment. It is, however, not connected to a real bank account.
+Merchant: End-to-end onboarding (staging)
+-----------------------------------------
-Prerequisites
--------------
+Stage-specific glue for the merchant path already described elsewhere:
+:ref:`taler-merchant-backend-operator-manual` (SPA) and *Merchant:
+Onboarding* in :doc:`tops` (bank account → KYC auth → accept exchange
+terms of service → accept payments). Wire faking reuses ``geniban`` /
+``fake-incoming`` from *Deposits: Deposit with KYC Auth* above.
-An administrator needs to enable your SSH key for testing
-in the staging environment.
+This section is the **mostly manual** path (merchant portal / SPA).
+Variables used below (set your own values):
-Withdrawals: Basic Withdrawal
------------------------------
+.. code:: none
-1. Scan the following QR code to start a withdrawal from the `stage exchange <https://exchange.stage.taler-ops.ch/>`_:
+ BASE=https://stage.my.taler-ops.ch
+ INSTANCE=my-shop # instance id (slug)
+ INSTANCE_PASSWORD=… # password chosen at signup
+ IBAN=… # from geniban
+ DEBIT_PAYTO=payto://iban/$IBAN
- .. image:: ./qr-withdraw-tops-stage.png
+``$BASE/`` redirects to ``$BASE/webui/``. Use the
+`stage exchange <https://exchange.stage.taler-ops.ch/>`_ for payments.
+Check ``have_self_provisioning`` and ``mandatory_tan_channels`` on
+``$BASE/config``.
- ``taler://withdraw-exchange/exchange.stage.taler-ops.ch/``
+Shared bank / KYC steps
+^^^^^^^^^^^^^^^^^^^^^^^
-2. Confirm the withdrawal in the wallet.
-
-3. Run the following command to fake a wire transfer, using a randomly
- generated creditor IBAN. The ``$AMOUNT`` and ``$SUBJECT`` should be
- taken from the wire transfer instructions in the wallet UI.
+1. Generate an IBAN for the merchant bank account:
.. code:: none
- ssh -T devtesting@rusty.taler-ops.ch "fake-incoming --amount $AMOUNT --subject '$SUBJECT'"
-
-4. Check that the withdrawal succeeded in the wallet.
-
-
-Deposits: Basic Deposit
------------------------
+ IBAN=$(ssh -T devtesting@rusty.taler-ops.ch geniban)
+ DEBIT_PAYTO="payto://iban/$IBAN"
-1. Do a basic withdrawal.
-2. Initiate a deposit in the wallet UI, using the receiver account known to the wallet from the withdrawal.
-3. The deposit transaction should now ask for KYC information. Fill out the corresponding form(s).
-4. The deposit transaction should finish.
+2. Register that IBAN in the portal under **Bank account**
+ (:ref:`instance-account-setup`). Skip revenue-API credentials
+ unless an administrator provided stage ones.
-Deposits: Deposit with KYC Auth
--------------------------------
-
-1. Do a basic withdrawal.
-
-2. Generate an IBAN via:
+3. When the exchange requires the KYC auth transfer (*Merchant:
+ Onboarding* in :doc:`tops`), satisfy it like *Deposits: Deposit with
+ KYC Auth*. Take ``$AMOUNT`` and ``$SUBJECT`` from the KYC UI:
.. code:: none
- ssh -T devtesting@rusty.taler-ops.ch geniban
+ ssh -T devtesting@rusty.taler-ops.ch \
+ "fake-incoming --amount $AMOUNT --subject '$SUBJECT' --debit-payto '$DEBIT_PAYTO'"
-3. Initiate a deposit in the wallet UI to the randomly generated IBAN.
+4. If the deposit limit is still zero, accept the TOPS exchange terms
+ of service on the exchange KYC page (*Merchant: Onboarding* in
+ :doc:`tops`). For stuck account validation, see
+ :doc:`tops-troubleshooting`.
-4. The deposit transaction should now ask for a KYC auth transfer. Satisfy the auth transfer by running:
-
- .. code:: none
+5. Fund a wallet via *Withdrawals: Basic Withdrawal* above, then pay
+ the order (*Paying an order* in the merchant manual).
- ssh -T devtesting@rusty.taler-ops.ch "fake-incoming --amount $AMOUNT --subject '$SUBJECT' --debit-payto '$DEBIT_PAYTO'"
+SPA (login with password)
+^^^^^^^^^^^^^^^^^^^^^^^^^
- with the information shown in the wallet UI, where the ``$DEBIT_PAYTO`` must contain the IBAN generated in step (2).
+Normal interactive path (:ref:`Instance-setup`, *Self-provisioning*,
+*Manually creating an order using the SPA*).
+1. Open ``$BASE/webui/``. **Sign up** or **log in** with ``$INSTANCE``
+ and ``$INSTANCE_PASSWORD``. Confirm e-mail and SMS TAN when asked
+ (both channels are mandatory on this backend).
-5. The deposit transaction should now ask for KYC information. Fill out the corresponding form(s).
+2. Complete *Shared bank / KYC steps* in the portal (**Bank account**,
+ KYC links).
-6. The deposit transaction should finish.
+3. **Orders** → create (summary + amount). Keep the payment QR / pay
+ link from the order status page.
+4. Pay from the wallet (shared step 5) and confirm paid status in the
+ SPA.