summaryrefslogtreecommitdiff
path: root/design-documents/053-wallet-ui.rst
blob: 99640ceb0793728660e41624a43d7550e8a8555a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
DD 53: Wallet UI Design
#######################

Summary
=======

This document proposes designs wallet UI. It defines what Android, iOS and
WebExtension should follow in order to have a coherent UI between platforms.

Motivation
==========

We want user to be able to help each others independent of the implementation
they are using.
We want user to be able to capitalize the effort of learning how to use one
wallet and be able to use a different one without the need to learn
anything new.
Currently development of different platform specific implementation are independent
and every developer needs to choose the layout, texts and buttons and navigation.

Requirements
============

Every screen MUST be defined in a document with the following information:

* **Identifiable UI screens**: every UI should have an unique identifier that will
  be use for development discussion and bug reports. There should be an option
  in the application to enable an active rendering of the id.

* **Description**: the reason to be of the screen, should help to define what will
  be included into, what is going to left for other screens and when and from
  where should be linked.

The screen MAY also have:

* **Predefined assets**: every implementation should resue the same icons, images,
  fonts and sounds.

Additionaly the document COULD defined the components of the UI. If one of this
properties is defined in the spec the implementation must implement it. The specification
should be minimal to achieve the objective in the description.

* **Info**. Spec of information that the user should have access. The type of info
  could be a field (id and value) or a banner (information and instructions).
  The spec will help to reuse the text for i18n across apps and defined

* **Inputs**. Spec of information need to provide in current screen. The type of input,
  range of values and validation should be defined if necessary.

* **Actions**. Spec of buttons and interactable elements that will have a significant
  change in the current state. It should also mention navigation when applicable.

* **Layout**. Spec position of elements when needed. The spec should be "soft" in a sense
  that elements should be easy to find following directions like "close to X" or
  "at the start/end of the screen".

* **Screenshots**. Should be provided for all wallet implementations and kept
  up to date, to ensure that they can be used to aid in UI/UX and QA
  discussions.

Screen should be defined using the most relaxed definition that are good enough to
be clear for the user. Platform will use this definition and adapt to the differences
on the platform taking advantange of platform API and screen sizes.

When a screen have multiple uses for the same purpose, a substate section should be
included with the difference with the main definition.

Part of the screens that are reused shoud also be defined in this document as screen.

Common definition:
 * navigation between screen should not happen if the user didn't take any action


Proposed Solutions
==================

List of all screens with the defined properties.

.. _balance-list-ref:

balance-list
------------

This screen shows a currency-scoped list of the balances stored in the wallet,
and includes information about the total, incoming, and outgoing amounts, as
well as the currency scope information for each item.

Info
^^^^

* List of balances in the wallet, where each item contains:

  * Total amount with currency (see :doc:`051-fractional-digits`).
  * Incoming amount (money pending to arrive).
  * Outgoing amount (money pending to leave).
  * Currency scope information (see :doc:`035-regional-currencies`).

Actions
^^^^^^^

* **View transactions**. Clicking on a balance item should take you to the
  transaction list (:ref:`transaction-list-ref`) associated with that balance.

Screenshots
^^^^^^^^^^^

+-----------+----------------------------------------------------------------+
| Platform  | Screenshot                                                     |
+===========+================================================================+
| WebEx     | .. image:: ../screenshots/balance-list-firefox-latest.png      |
+-----------+----------------------------------------------------------------+
| Android   | .. image:: ../screenshots/balance-list-android-latest.png      |
|           |    :width: 30%                                                 |
+-----------+----------------------------------------------------------------+
| iOS       | .. image:: ../screenshots/balance-list-1-ios-latest.png        |
|           |    :width: 30%                                                 |
|           | .. image:: ../screenshots/balance-list-2-ios-latest.png        |
|           |    :width: 30%                                                 |
+-----------+----------------------------------------------------------------+


.. _transaction-list-ref:

transaction-list
----------------

This screen shows a list of all the transactions associated with a given
currency scope.

Info
^^^^

* Total amount and currency (see :doc:`051-fractional-digits`).
* List of transactions associated with the currency scope, with pending
  transactions on top, and where each item contains the following:

  * **Title**. It depends on the transaction type. It can be the exchange URL
    (e.g. exchange.demo.taler.net), a description of the type of transaction
    (e.g. Deposit, Invoice, Payment, etc.), the name of the merchant paid
    (e.g. Essay Shop), etc.
  * **Summary**. It provides complementary information about the transaction
    for the user, such as the status of the transaction (e.g. “Waiting for
    confirmation,” “KYC required,” an error message, etc.). (The summary is
    provided by wallet-core, along with internationalized versions.)
  * **Timestamp**. The moment when the transaction was created. Ideally, it
    should be shown with minimal precision, only showing the minutes, hours or
    days that have elapsed.
  * **Amount**. The positive or negative impact that the transaction has in
    the total balance of the currency scope. It should be made clear whether
    the amount of the transaction is positive or negative, ideally with a sign
    (+/-) and a color (green/red).
  * **Pending**. It should be indicated whether the transaction is pending or
    finished. This can be done with a small badge and with different colors,
    however, it should be always clear and communicate the message
    effectively.

Actions
^^^^^^^

* **Send**. The transaction list should include a button that allows the user
  to initiate transactions that result in money being sent, such as deposits
  and peer push payments.
* **Receive**. The transaction list should also include a button that allows
  the user to initiate transactions that result in money being received, such
  as withdrawals and peer pull payments.
* **View transaction details**. When clicking on a transaction, the user
  should be taken to its corresponding transaction details depending on the
  type of the transaction clicked.
* **Select transaction(s)**. The user should be able to select one or more
  transactions to perform specific bulk actions, such as deleting. The
  interaction that triggers this action might differ across platforms. For
  example, in Android this would be achieved by double pressing a transaction
  (to activate selection mode) and then clicking other transactions to be
  selected. On iOS, this could be achieved using an “Edit” button in the
  toolbar that reveals checkboxes that allow the user to select the desired
  transactions.
* **Delete transaction(s)**. This could be achieved in bulk via selection
  mode, or individually for each transaction via a menu or a button. Either
  way, performing a deletion should always show a confirmation menu before
  doing the actual deletion.

Screenshots
^^^^^^^^^^^

+-----------+----------------------------------------------------------------+
| Platform  | Screenshot                                                     |
+===========+================================================================+
| WebEx     | .. image:: ../screenshots/transaction-list-firefox-latest.png  |
+-----------+----------------------------------------------------------------+
| Android   | .. image:: ../screenshots/transaction-list-android-latest.png  |
|           |    :width: 30%                                                 |
+-----------+----------------------------------------------------------------+
| iOS       | .. image:: ../screenshots/transaction-list-ios-latest.png      |
|           |    :width: 30%                                                 |
+-----------+----------------------------------------------------------------+


.. _cta-withdraw-ref:

cta-withdraw
------------

This screen is used for the confirmation of a manual withdrawal,
bank-integrated witdrawals and exchange withdrawals.  the success of this
operation will be an increase of the balance in the wallet.  fee, restrictions
and ETA should be clear for the user.

Info
^^^^

* exchange to be used showing the URL
* table of details of the operation: use the :ref:`operation-table-details-ref` screen
* starting currency: if the exchange has the currency conversion service enabled user should be able to the details based on the wire transfer currency
* taler URI: show copy button or QR to complete the operation with another device

Inputs
^^^^^^

* age restriction: allow the selection of the restriction in the age group possible by the exchange
* service provider: allow the selection of different exchange

Actions
^^^^^^^

* **confirm operation**: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
* **review and confirm ToS**: if the current selected exchange has a version  of ToS that the user didn't yet accepted, use the :ref:`accept-tos-ref` screen
* **cancel**: user will be redirected to ``balance``

.. attention::
  User should be able to play with the amount, not possible in the current design

Screenshots
^^^^^^^^^^^

+-----------+----------------------------------------------------------------+
| Platform  | Screenshot                                                     |
+===========+================================================================+
| WebEx     | .. image:: ../screenshots/cta-withdraw-firefox-latest.png      |
+-----------+----------------------------------------------------------------+
| Android   | .. image:: ../screenshots/cta-withdraw-2-android-latest.png    |
|           |    :width: 30%                                                 |
+-----------+----------------------------------------------------------------+
| iOS       | .. image:: ../screenshots/cta-withdraw-ios-latest.png          |
|           |    :width: 30%                                                 |
+-----------+----------------------------------------------------------------+


.. _cta-wire-transfer-ref:

cta-wire-transfer
-----------------

This screen is used to show the user the information for the wire transfer to
complete a manual withdrawal operation.

Info
^^^^

* wire transfer subject to be used (first, most important)
* target bank account to transfer funds to (e.g. IBAN)
* total amount to transfer in the wire transfer currency
* button to copy ``payto://`` URI with the information to clipboard

Actions
^^^^^^^

* **abort**: aborts the withdrawal operation
* **menu**: go back to the main balances list (operation continues in background)
* **automatic**: screen changes to "cta-withdraw-done" upon completion

Screenshots
^^^^^^^^^^^

+-----------+------------------------------------------------------------------+
| Platform  | Screenshot                                                       |
+===========+==================================================================+
| WebEx     | .. image:: ../screenshots/cta-wire-transfer-firefox-latest.png   |
+-----------+------------------------------------------------------------------+
| Android   | .. image:: ../screenshots/cta-wire-transfer-1-android-latest.png |
|           |    :width: 30%                                                   |
|           | .. image:: ../screenshots/cta-wire-transfer-2-android-latest.png |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+
| iOS       | .. image:: ../screenshots/cta-wire-transfer-1-ios-latest.png     |
|           |    :width: 30%                                                   |
|           | .. image:: ../screenshots/cta-wire-transfer-2-ios-latest.png     |
|           |    :width: 30%                                                   |
|           | .. image:: ../screenshots/cta-wire-transfer-3-ios-latest.png     |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+


.. _cta-withdraw-done-ref:

cta-withdraw-done
-----------------

This screen is used to show the user the information for a completed withdraw
operation (bank-integrated or manual)

Info
^^^^

* amount wired  (hidden if no fees)
* fees paid (hidden if no fees)
* total amount withdrawn into wallet (effective balance change)
* exchange base URL
* date

Actions
^^^^^^^

* **delete**: deletes information about the withdrawal operation

Screenshots
^^^^^^^^^^^

+-----------+------------------------------------------------------------------+
| Platform  | Screenshot                                                       |
+===========+==================================================================+
| WebEx     | .. image:: ../screenshots/cta-withdraw-done-firefox-latest.png   |
+-----------+------------------------------------------------------------------+
| Android   | .. image:: ../screenshots/cta-withdraw-done-android-latest.png   |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+
| iOS       | .. image:: ../screenshots/cta-withdraw-done-ios-latest.png       |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+


.. _cta-url-entry-ref:

cta-url-entry
-------------

This screen allows the user to scan a QR code, scan an NFC tag, or enter a
taler://-URL.  Its implementation may differ significantly between
platforms. For example, scanning NFC tags may be fully automated, scanning QR
codes may involve some system applications, and maybe the dialog only allows
the URL entry *or* the camera but not both at the same time, depending on
implementation specifics.

Info
^^^^

* camera with current image to enable user to focus on QR code
* current URL, with information if it is not well-formed for GNU Taler
* possibly status information on NFC reader (if available)

Actions
^^^^^^^

* **open**: if entered manually, open URL as-entered (otherwise open is automatic)
* **back**: return to previous view

Screenshots
^^^^^^^^^^^

+-----------+------------------------------------------------------------------+
| Platform  | Screenshot                                                       |
+===========+==================================================================+
| WebEx     | .. image:: ../screenshots/cta-url-entry-firefox-latest.png       |
+-----------+------------------------------------------------------------------+
| Android   | .. image:: ../screenshots/cta-url-entry-1-android-latest.png     |
|           |    :width: 30%                                                   |
|           | .. image:: ../screenshots/cta-url-entry-2-android-latest.png     |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+


.. _cta-payment-ref:

cta-payment
-----------

This screen is used for the confirmation of a payment to a merchant.  the
success of this operation will be an decrease of the balance in the wallet and
save a ticket/invoice of the purchase.  fee, restrictions and ETA should be
clear for the user.

Info
^^^^

* merchant offering the order showing the URL
* order summary
* table of details of the operation: use the :ref:`operation-table-details-ref` screen
* receipt: order id
* payment deadline: absolute time before the claimed order expires
* taler URI: show copy button or QR to complete the operation with another device
* cant pay desc: if the user has enough balance but unable to use it
* payment status: if the

Actions
^^^^^^^

* **confirm operation**: if the payment is possible, on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
* **get more cash**: if there is not enough balance, it will be redirected to :ref:`cta-withdraw-ref`
* **cancel**: user will be redirected to ``balance``

Screenshots
^^^^^^^^^^^

+-----------+------------------------------------------------------------------+
| Platform  | Screenshot                                                       |
+===========+==================================================================+
| WebEx     | .. image:: ../screenshots/cta-payment-firefox-latest.png         |
+-----------+------------------------------------------------------------------+
| Android   | .. image:: ../screenshots/cta-payment-android-latest.png         |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+
| iOS       | .. image:: ../screenshots/cta-payment-ios-latest.png             |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+


.. _cta-payment-paid-ref:

cta-payment-paid
----------------

This screen is used to show information with details about a historic payment.

Info
^^^^

* merchant offering the order showing the URL
* order summary
* table of details of the operation: use the :ref:`operation-table-details-ref` screen
* receipt: order id
* payment status: if the order was refunded

Actions
^^^^^^^

* **delete**: delete information about the transaction
* **back**: user will be redirected to ``balance``

Screenshots
^^^^^^^^^^^

+-----------+------------------------------------------------------------------+
| Platform  | Screenshot                                                       |
+===========+==================================================================+
| WebEx     | .. image:: ../screenshots/cta-payment-paid-firefox-latest.png    |
+-----------+------------------------------------------------------------------+
| Android   | .. image:: ../screenshots/cta-payment-paid-android-latest.png    |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+
| iOS       | .. image:: ../screenshots/cta-payment-paid-1-ios-latest.png      |
|           |    :width: 30%                                                   |
|           | .. image:: ../screenshots/cta-payment-paid-2-ios-latest.png      |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+


.. _cta-deposit-ref:

cta-deposit
------------

This screen is used for the confirmation of a deposit.  the success of this
operation will be an decrease of the balance in the wallet and save a deposit
ticket for reference.  fee, restrictions and ETA should be clear for the user.

Info
^^^^

* bank account where the money is going to
* table of details of the operation: use the :ref:`operation-table-details-ref` screen

Actions
^^^^^^^

* **confirm operation**: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
* **cancel**: user will be redirected to ``balance``

.. attention::
  User should be able to play with the amount, not possible in the current design

Screenshots
^^^^^^^^^^^

+-----------+------------------------------------------------------------------+
| Platform  | Screenshot                                                       |
+===========+==================================================================+
| WebEx     | .. image:: ../screenshots/cta-deposit-firefox-latest.png         |
+-----------+------------------------------------------------------------------+
| Android   | .. image:: ../screenshots/cta-deposit-android-latest.png         |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+
| iOS       | .. image:: ../screenshots/cta-deposit-1-ios-latest.png           |
|           |    :width: 30%                                                   |
|           | .. image:: ../screenshots/cta-deposit-2-ios-latest.png           |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+


.. _cta-peer-pull-initiate-ref:

cta-peer-pull-initiate
----------------------

This screen is used for the confirmation of the creation of a peer pull
transaction or invoice to request money from another wallet.  the success of
this operation will not change the balance immediately in the wallet and allow
the user to share a taler URI to the payer.  fee, restrictions and ETA should
be clear for the user.

Info
^^^^

* exchange to be used showing the URL
* table of details of the operation: use the :ref:`operation-table-details-ref` screen

Inputs
^^^^^^

* **subject**: short description of the transaction
* **expiration**: absolute time/date after which the invoice is not valid anymore
* **service provider**: allow the selection of different exchange

Actions
^^^^^^^

* **confirm operation**: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
* **review and confirm ToS**: if the current selected exchange has a version  of ToS that the user didn't yet accepted, use the :ref:`accept-tos-ref` screen
* *cancel*: user will be redirected to ``balance``

.. attention::
  Is the invoice creation always free of charge or does the exchange have a mechanism
  to impose a fee to pay on creation?

Screenshots
^^^^^^^^^^^

+-----------+----------------------------------------------------------------------+
| Platform  | Screenshot                                                           |
+===========+======================================================================+
| WebEx     | .. image:: ../screenshots/cta-peer-pull-initiate-firefox-latest.png  |
+-----------+----------------------------------------------------------------------+
| Android   | .. image:: ../screenshots/cta-peer-pull-initiate-android-latest.png  |
|           |    :width: 30%                                                       |
+-----------+----------------------------------------------------------------------+
| iOS       | .. image:: ../screenshots/cta-peer-pull-initiate-ios-latest.png      |
|           |    :width: 30%                                                       |
+-----------+----------------------------------------------------------------------+


.. _cta-peer-pull-confirm-ref:

cta-peer-pull-confirm
---------------------

This screen is used for the confirmation of the payment of a peer pull
transaction or invoice to send money from another wallet.  the success of this
operation will be an will decrease the balance in the wallet.  fee,
restrictions and ETA should be clear for the user.

Info
^^^^

* exchange to be used showing the URL
* subject: short description of the transaction
* table of details of the operation: use the :ref:`operation-table-details-ref` screen
* expiration: absolute time/date after which the invoice is not valid anymore

Actions
^^^^^^^

* **confirm operation**: if the payment is possible, on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
* **get more cash**: if there is not enough balance, it will be redirected to :ref:`cta-withdraw-ref`
* **cancel**: user will be redirected to ``balance``

cta-peer-push-initiate
----------------------

This screen is used for the confirmation of the creation of a peer push
transaction or transfer money to another wallet.  the success of this
operation will reduce the balance immediately in the wallet and allow the user
to share a taler URI to the receiver.  fee, restrictions and ETA should be
clear for the user.

Info
^^^^

* table of details of the operation: use the ``operation-table-details`` screen

Inputs
^^^^^^

* **subject**: short description of the transaction
* **expiration**: absolute time/date after which the transfer is not valid anymore

Actions
^^^^^^^

* **confirm operation**: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
* **cancel**: user will be redirected to ``balance``

Screenshots
^^^^^^^^^^^

+-----------+----------------------------------------------------------------------+
| Platform  | Screenshot                                                           |
+===========+======================================================================+
| WebEx     | .. image:: ../screenshots/cta-peer-push-initiate-firefox-latest.png  |
+-----------+----------------------------------------------------------------------+
| Android   | .. image:: ../screenshots/cta-peer-push-initiate-android-latest.png  |
|           |    :width: 30%                                                       |
+-----------+----------------------------------------------------------------------+
| iOS       | .. image:: ../screenshots/cta-peer-push-initiate-ios-latest.png      |
|           |    :width: 30%                                                       |
+-----------+----------------------------------------------------------------------+


.. _cta-peer-push-confirm-ref:

cta-peer-push-confirm
---------------------

This screen is used for the confirmation of the acceptance of a peer push
transaction or transfer money to this wallet.  the success of this operation
will be an will decrease the balance in the wallet.  fee, restrictions and ETA
should be clear for the user.

Info
^^^^

* subject: short description of the payment
* expiration: absolute time/date after which the invoice is not valid anymore
* table of details of the operation: use the ``operation-table-details`` screen

Actions
^^^^^^^

* **confirm operation**: on success will be redirected to the ``transaction-details`` screen where the detail of the current transaction will be displayed
* **review and confirm ToS**: if the current selected exchange has a version of ToS that the user didn't yet accepted, use the :ref:`accept-tos-ref` screen
* **cancel**: user will be redirected to ``balance``

.. _operation-table-details-ref:

operation-table-details
-----------------------

With the table it should be clear how much the operation will cost, the
initial amount and the final amount with all the items related to the
operations (like fee)

Labels
^^^^^^

Initial amount of the operation, and final amount are always shown. Fee should
be shown as an extra row in the table if it is non-zero. Converted amount
should be shown as an extra row if initial amount currency is not the same as
the final amount currency.

Initial amount label by operation:

 * payment -> Price
 * deposit -> Send
 * peer-pull-credit -> Invoice
 * peer-pull-debit -> Invoice
 * peer-push-debit -> Send
 * peer-push-credit -> Transfer
 * withdrawal -> Transfer
 * refund -> Refund


.. _accept-tos-ref:

accept-tos
----------

This screen can be use everytime that the user is going to interact with an
exchange. since at any moment wallet may find that ToS changed the user needs
to be prevented from continue before reading/accepting new rules. If possible,
this screen should be used inplace of other actions and hidden if not required
(for example, user already accepted ToS)

Inputs
^^^^^^

* **format**: allow the selection of a ToS format
* **languange**: allow the selection of a languange different from system lang

Actions
^^^^^^^

* **accept tos**: will mark this version as accepted in wallet core and redirect the user to the screen from where it was invoked
* **save/print tos**: will save the ToS outside of the wallet

Screenshots
^^^^^^^^^^^

+-----------+------------------------------------------------------------------+
| Platform  | Screenshot                                                       |
+===========+==================================================================+
| WebEx     | .. image:: ../screenshots/cta-accept-tos-firefox-latest.png      |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+
| Android   | .. image:: ../screenshots/cta-accept-tos-android-latest.png      |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+
| iOS       | .. image:: ../screenshots/cta-accept-tos-ios-latest.png          |
|           |    :width: 30%                                                   |
+-----------+------------------------------------------------------------------+


Q / A
=====