View Issue Details

IDProjectCategoryView StatusLast Update
0010617Talermerchant backendpublic2025-11-15 21:50
Reporterhtgoebel Assigned ToChristian Grothoff 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
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionno change required 
Product Version1.0 
Target Version1.2Fixed in Version1.2 
Summary0010617: 200 response even if refund was not done
DescriptionIn the SPA, successive refunds are added, thus I did the same using the API: refunding 5 KUDOS and then 3 KUDOS. The result code of both was 200 and a MerchantRefundResponse was returned
Anyhow, the second refund did not show up.
Steps To Reproduce1) Create an order (either using the SPA or the API), choose some KUDOS to have room for two refunds.
2) Create an refund (either using the SPA or the API)
3) Create an refund with an amount below the amount of the first refund using the API.
==> Statuscode 200 and MerchantRefundResponse
4) Inspect the order (either using the SPA or the API)
==> the second refund will not show up.
Additional Informationa) I'm fine with the SPA and API behaving different. Anyhow, no. 3 above should return some error, since the value was not changed

b) The documentation for POST [/instances/$INSTANCE]/private/orders/$ORDER_ID/refund says "Increase the refund …". This should be clarified, esp. since the API behaves different than the SPA.

Taler Backoffice 1.1.1-dev.2 (22:0:10)
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

Christian Grothoff

2025-11-15 21:49

manager   ~0026476

The value not changing is fine, requests are supposed to be idempotent. And if you lower the refund amount from a previous refund, we just assume that there is some concurrency going on. So IMO 200 OK is correct, even if there is no change.

Christian Grothoff

2025-11-15 21:50

manager   ~0026477

So this is per design, refunds cannot be lowered, but requests are idempotent and the semantic basically is: if the refund is at or above the specified level, we consider your request successful.

Issue History

Date ModifiedUsernameFieldChange
2025-11-15 19:39htgoebelNew Issue
2025-11-15 21:49Christian GrothoffNote Added: 0026476
2025-11-15 21:50Christian GrothoffAssigned To => Christian Grothoff
2025-11-15 21:50Christian GrothoffStatusnew => closed
2025-11-15 21:50Christian GrothoffResolutionopen => no change required
2025-11-15 21:50Christian GrothoffFixed in Version => 1.2
2025-11-15 21:50Christian GrothoffNote Added: 0026477
2025-11-15 21:50Christian GrothoffProduct Version => 1.0
2025-11-15 21:50Christian GrothoffTarget Version => 1.2