View Issue Details

IDProjectCategoryView StatusLast Update
0011158Talerexchangepublic2026-11-03 14:42
ReporterAntoine A Assigned ToResolution deadline
ImplementerAntoine A ReviewerChristian Grothoff  
Release signed byAntoine A Deployed byFlorian Dold  
VerifierAntoine A Communicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PriorityhighSeveritymajorReproducibilityN/A
Status implementingResolutionopen 
Target Version1.7 
Summary0011158: Clarify incoming wire transfer subject constraint
DescriptionThe current unspecified rule is that only a public reserve key can be used only once, whereas a KYC key can be reused and the same key can therefore be used once for the reserve and several times for KYC.
We need to specify this formally somewhere (in the wire gateway API?) and ensure that the exchange and wire gateway implementations behave consistently.
Tagsdiscussion-needed

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

Christian Grothoff

2026-02-25 12:40

manager   ~0027884

Ah, we only allow ONE KYC AUTH transfer per unique subject AND origin account. Which makes sense, as more than one is clearly redundant. ;-).

Now, we could relax that constraint, or libeufin can just 'hide' those duplicate transactions from the exchange. Is the latter hard to do?

Antoine A

2026-02-25 12:44

manager   ~0027885

So a different account can reuse the key ?
I would prefer to enforce the rule of one key can only be used once, this make everything simpler and I guess it's what we currently have in the database as it never crashed before

Antoine A

2026-02-25 12:48

manager   ~0027886

We could allow the same key to be used once for KYC and once for reserve as it can be stored in different DB tables, but most wire gateway would be more restrictive and clients should not try reuse them

Antoine A

2026-02-25 12:49

manager   ~0027887

With the new registration endpoint, wallet can check for reuse before making a transfer. This means bounces should never happen under normal use after this change

Christian Grothoff

2026-02-25 13:15

manager   ~0027891

Yes, another account can reuse the key. In fact MUST: you can have a single merchant instance (=key) with multiple bank accounts. So for that scenario, the merchant would have to use the same key from multiple accounts.

Christian Grothoff

2026-02-25 13:17

manager   ~0027892

As for new endpoint: you still must handle the case where you do get duplicate incoming wire transfers -- say from clients that don't use the new endpoint.

Antoine A

2026-02-25 13:20

manager   ~0027894

Ok, let's keep the same logic then

Christian Grothoff

2026-02-25 14:28

manager   ~0027895

Ok, so assign bug to you or consider resolved or what?

Antoine A

2026-02-25 14:36

manager   ~0027896

How hard would it be for the exchange to tolerate many KYC per account ? Doing so at libeufin level is a bit of a pain

Christian Grothoff

2026-11-03 14:41

manager   ~0030215

What do you mean? Multiple KYC auth wire inputs are OK, but we have only one KYC *record set* per account and would only do the KYC process once.

Issue History

Date ModifiedUsernameFieldChange
2026-02-25 12:35Antoine ANew Issue
2026-02-25 12:35Antoine AStatusnew => assigned
2026-02-25 12:35Antoine AAssigned To => Christian Grothoff
2026-02-25 12:40Christian GrothoffNote Added: 0027884
2026-02-25 12:44Antoine ANote Added: 0027885
2026-02-25 12:48Antoine ANote Added: 0027886
2026-02-25 12:49Antoine ANote Added: 0027887
2026-02-25 13:15Christian GrothoffNote Added: 0027891
2026-02-25 13:16Christian GrothoffTag Attached: discussion-needed
2026-02-25 13:17Christian GrothoffNote Added: 0027892
2026-02-25 13:20Antoine ANote Added: 0027894
2026-02-25 14:28Christian GrothoffNote Added: 0027895
2026-02-25 14:35Christian GrothoffAssigned ToChristian Grothoff => Antoine A
2026-02-25 14:35Christian GrothoffStatusassigned => feedback
2026-02-25 14:36Antoine ANote Added: 0027896
2026-08-29 19:44Florian DoldTarget Version => 1.7
2026-11-03 14:41Christian GrothoffNote Added: 0030215
2026-11-03 14:42Christian GrothoffAssigned ToAntoine A =>
2026-11-03 14:42Christian GrothoffImplementer => Antoine A
2026-11-03 14:42Christian GrothoffReviewer => Christian Grothoff
2026-11-03 14:42Christian GrothoffRelease signed by => Antoine A
2026-11-03 14:42Christian GrothoffDeployed by => Florian Dold
2026-11-03 14:42Christian GrothoffVerifier => Antoine A
2026-11-03 14:42Christian GrothoffStatusfeedback => implementing