View Issue Details

IDProjectCategoryView StatusLast Update
0010724Talermerchant portal webuipublic2025-12-21 20:46
Reporterhtgoebel Assigned Tosebasjm Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product Version1.0 
Target Version1.3Fixed in Version1.3 
Summary0010724: Refund "pending" even after wire deadline
DescriptionIf a refund was not obtained be the customer, the order status still reports refund_pending as true and the refund's pending state as true.
Steps To ReproduceCreate an order with short deadlines, pay it and create a refund, but DO NOT obtain the refund in the wallet.
After the wire deadline passed use e.g. curl to query the order status.

Except from the order status:
                    'order_id': '2025.338-00247EBTGAGNR',
                    'pay_deadline': {'t_s': 1764874500},
                    'refund_deadline': {'t_s': 1764874560},
                    'timestamp': {'t_s': 1764874391},
                    'wire_transfer_deadline': {'t_s': 1764874560}},
 'last_payment': {'t_s': 1764874399},
 'order_status': 'paid',
 'order_status_url': 'https://backend.demo.taler.net/instances/sandbox/orders/2025.338-00247EBTGAGNR',
 'refund_amount': 'KUDOS:0.02',
 'refund_details': [{'amount': 'KUDOS:0.02',
                     'pending': True,
                     'reason': 'duplicate',
                     'timestamp': {'t_s': 1764874434}}],
 'refund_pending': True,
 'refunded': True,
 'wire_details': [{'amount': 'KUDOS:0.02',
                   'confirmed': False,
                   'exchange_url': 'https://exchange.demo.taler.net/',
                   'execution_time': {'t_s': 1764874399},
                   'wtid': '312S1C67R87PMBGASP4RNA2RJGBM7ANVNG23QAXV32QFGQCZ1RBG'}],
 'wire_reports': [],
 'wired': True}
Additional InformationTaler Backoffice 1.2.2 (23:1:11)
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Relationships

related to 0010695 closedsebasjm Can create refund for wired order 
related to 0010725 closedsebasjm UX: Refund URL shown even after wire deadline 
related to 0010726 informingFlorian Dold Wallet pseudo-accepts refunds even after wire deadline 

Activities

Christian Grothoff

2025-12-04 21:40

manager   ~0026745

That's correct. Refund_pending = false means that the wallet *did* get the refund.

The point is that here now "wired = true", and that means that any pending refund can no longer succeed. So you do need to consider all the bits in combination: if refund_pending = true *and* wired = true, it means the wallet will never get it.

Christian Grothoff

2025-12-04 21:40

manager   ~0026746

This is, however, something the SPA needs to show nicely, so for example no longer showing the refund as "pending" but as "failed".

sebasjm

2025-12-05 13:45

developer   ~0026783

This is how it looks when a merchant
1) create an order of KUDOS 3
2) merchant refund KUDOS 1
3) customer takes the refund
4) merchant refund KUDOS 1
5) customer DON'T take the last refund
6) wire transfer deadline passes

I think is clear that the first one was taken in the UI, the second one didn't, the wiredeadline passed. The refund URI is not shown anymore.

The merchant backend reports KUDOS:0.4 and KUDOS:0.6 which I think is wrong (!) because the merchant specified KUDOS:1 and I think this is a details of the coins used by the wallet should not be relevant here and backend should return KUDOS:1
image.png (86,389 bytes)   
image.png (86,389 bytes)   

sebasjm

2025-12-05 13:46

developer   ~0026784

i think the spa is ok and backend should not return refund by coin

Christian Grothoff

2025-12-05 13:51

manager   ~0026785

Well, customer/protocol picks up refunds by coin, so little choice there in terms of data model. But SPA could reconcile, maybe?

Christian Grothoff

2025-12-05 13:51

manager   ~0026786

Let's see if Vlada has good design ideas here...

vlada.svirsh

2025-12-14 11:53

developer   ~0026961

Better to show the refund amount specified by the merchant, by coins too confusing

For each event in the timeline, we need a better description. Name for states of refund proposed in related bug 0010695

sebasjm

2025-12-14 23:43

developer   ~0026980

the SPA was already merging but the refunded list is returned with a wired order of the items, I expected this to be order by time (asc or desc)

ordering on the spa after 50f768fa601e4a891cecd122687553fe89a72606

Issue History

Date ModifiedUsernameFieldChange
2025-12-04 19:11htgoebelNew Issue
2025-12-04 19:13htgoebelRelationship addedrelated to 0010725
2025-12-04 19:24htgoebelRelationship addedrelated to 0010726
2025-12-04 21:40Christian GrothoffNote Added: 0026745
2025-12-04 21:40Christian GrothoffAssigned To => sebasjm
2025-12-04 21:40Christian GrothoffStatusnew => assigned
2025-12-04 21:40Christian GrothoffRelationship addedrelated to 0010695
2025-12-04 21:40Christian GrothoffNote Added: 0026746
2025-12-04 21:41Christian GrothoffSeverityminor => major
2025-12-04 21:41Christian GrothoffCategorymerchant backend => merchant backoffice SPA
2025-12-04 21:41Christian GrothoffProduct Version => 1.0
2025-12-04 21:41Christian GrothoffTarget Version => 1.3
2025-12-05 13:45sebasjmNote Added: 0026783
2025-12-05 13:45sebasjmFile Added: image.png
2025-12-05 13:46sebasjmAssigned Tosebasjm => Christian Grothoff
2025-12-05 13:46sebasjmStatusassigned => feedback
2025-12-05 13:46sebasjmNote Added: 0026784
2025-12-05 13:51Christian GrothoffNote Added: 0026785
2025-12-05 13:51Christian GrothoffAssigned ToChristian Grothoff => vlada.svirsh
2025-12-05 13:51Christian GrothoffNote Added: 0026786
2025-12-05 13:52Christian GrothoffStatusfeedback => assigned
2025-12-05 13:52Christian GrothoffTarget Version1.3 => 1.5
2025-12-14 11:53vlada.svirshNote Added: 0026961
2025-12-14 11:53vlada.svirshAssigned Tovlada.svirsh => sebasjm
2025-12-14 23:43sebasjmNote Added: 0026980
2025-12-14 23:43sebasjmStatusassigned => informing
2025-12-14 23:43sebasjmResolutionopen => fixed
2025-12-15 10:45Christian GrothoffTarget Version1.5 => 1.3
2025-12-15 10:46Christian GrothoffFixed in Version => 1.3
2025-12-21 20:46Christian GrothoffStatusinforming => closed
2026-08-23 14:18Florian DoldCategorymerchant backoffice SPA => merchant portal webui