taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

026-refund-fees.rst (2298B)


      1 DD 26: Refunds and Fees
      2 #######################
      3 
      4 :Design status: Accepted
      5 :Implementation status: Implemented
      6 :DD shepherd: TBD
      7 :Historical contributors: Christian Grothoff, Florian Dold
      8 :First published: 2021-12-07
      9 :Last substantive change: 2023-09-15
     10 :Implementation evidence: merchant (2022-07-09)
     11 :Normative references: :doc:`../core/api-exchange`
     12 
     13 .. note::
     14 
     15    This is implemented (as of 2023-09-15).
     16 
     17 Summary
     18 =======
     19 
     20 This document discusses what should happen with deposit fees when a
     21 deposit is refunded.
     22 
     23 
     24 Motivation
     25 ==========
     26 
     27 When a user receives a refund, we have to decide what happens to the deposit
     28 fee that was originally paid on the associated deposit.  Originally, we said
     29 that the deposit fee is waived when any refund happens.  However, if the
     30 refund fee is zero and the deposit fee is non-zero, this results in a
     31 problematic scenario where merchants issue minuscule refunds that primarily
     32 enable customers to effectively obtain the deposit fee.
     33 
     34 
     35 Requirements
     36 ============
     37 
     38   * If the refund and refresh fees are zero, it should be possible for
     39     consumers to get 100% of their digital cash back on refunds.
     40   * This should not result in a problematic situation where merchants
     41     conspire with consumers and issue minuscule refunds to allow consumers
     42     to work around deposit fees.
     43 
     44 Proposed Solution
     45 =================
     46 
     47   * Only waive the deposit fee for full refunds where for the
     48     specific coin (!) the refunded amount is the total value of the
     49     refunded deposit.
     50 
     51 Alternatives
     52 ============
     53 
     54   * Only waive the deposit fee for full refunds where for the
     55     specific coin the refunded amount is the total value of the
     56     denomination of the coin. This may slightly simplify the
     57     logic, but has the problem that it does not enable 100%
     58     refunds if the original payment already required a refresh
     59     because the coin's value exceeded the paid amount.
     60   * Waive the deposit fee on any (including partial) refund.
     61     This creates a bad incentive structure if combined refresh
     62     and refund fees are below deposit fees.
     63 
     64 Drawbacks
     65 =========
     66 
     67   * We need to update and test an already complex fee calculation
     68     logic.
     69 
     70 
     71 Discussion / Q&A
     72 ================
     73 
     74 (This should be filled in with results from discussions on mailing lists / personal communication.)