View Issue Details

IDProjectCategoryView StatusLast Update
0010907Talermerchant backendpublic2026-02-04 19:00
Reportersebasjm 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
PriorityhighSeveritymajorReproducibilityhave not tried
Status closedResolutionfixed 
Product Versiongit (master) 
Target Version1.4Fixed in Version1.4 
Summary0010907: can create order on demo after adding bank accoutn
DescriptionI created my account with self-provision (sebasjm)
added a fake bank account

I expect to be able to create order after that

What happens is that KYC state is triggered even if exchange demo does not require KYC

the kyc page of the backoffice shows "exchange unreachable" so I think we are doing 2 things wrong:

1) assuming that KYC is required: this confuse the user
2) not triggering exchange contact just after and ON-SYNC with the bank account addition. The exchange should be contact to validate that the this bank account is supported.
Additional Information{
  "kyc_data": [
    {
      "payto_uri": "payto://iban/DE1231231231?receiver-name=seba",
      "h_wire": "8R76BJZGF7EA8JY507YKTB106NMR1G4HYQFYSGXQJ252GFQNFA4RT43PJ2Q97SAYC9P3DBEKWV3GJPNKQ884MJY2TJB3TT3BYJMEQD0",
      "status": "exchange-unreachable",
      "exchange_url": "https://exchange.taler-ops.ch/",
      "no_keys": true,
      "auth_conflict": false,
      "exchange_http_status": 0
    },
    {
      "payto_uri": "payto://iban/DE1231231231?receiver-name=seba",
      "h_wire": "8R76BJZGF7EA8JY507YKTB106NMR1G4HYQFYSGXQJ252GFQNFA4RT43PJ2Q97SAYC9P3DBEKWV3GJPNKQ884MJY2TJB3TT3BYJMEQD0",
      "status": "exchange-unreachable",
      "exchange_url": "https://exchange.demo.taler.net/",
      "no_keys": true,
      "auth_conflict": false,
      "exchange_http_status": 0
    }
  ]
}
TagsNo tags attached.
Attached Files
image.png (40,114 bytes)   
image.png (40,114 bytes)   

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

sebasjm

2026-01-22 14:44

developer   ~0027309

this is related https://ich.taler.net/t/cant-connect-selfhosted-merchant-to-official-kudos-exchange/622

sebasjm

2026-01-22 16:14

developer   ~0027312

my demo instance is still in this state, so something seems to be broken. the merchant may not be checking the connection to the exchaneg

sebasjm

2026-01-22 16:15

developer   ~0027313

increasing priority since this may mean that non self provisioning instances are working

sebasjm

2026-01-22 17:21

developer   ~0027314

we found an unrecoverable state in logs which is not treated as error

Jan 22 16:18:50 d0f55933210e taler-merchant-kyccheck[1616621]: INFO Found account payto://iban/DE1231231231?receiver-name=seba of instance sebasjm with H_PAYTO RVMJAC
Jan 22 16:18:50 d0f55933210e taler-merchant-kyccheck[1616621]: INFO Account payto://iban/DE1231231231?receiver-name=seba not eligible at exchange https://exchange.taler-ops.ch/
Jan 22 16:18:50 d0f55933210e taler-merchant-kyccheck[1616621]: INFO Account payto://iban/DE1231231231?receiver-name=seba not eligible at exchange https://exchange.demo.taler.net/

Christian Grothoff

2026-01-22 23:30

manager   ~0027316

Can we have a taler-harness test?

sebasjm

2026-01-22 23:58

developer   ~0027317

yes

# taler-harness run-integrationtests merchant-bank-bad-wire-target

Christian Grothoff

2026-01-23 02:10

manager   ~0027318

I'm not sure what the report is about anymore. The issue the test surfaces is that you have an "IBAN" account and a TESTKUDOS currency with an x-taler-bank exchange. So that cannot work.

I updated the POST /private/orders specification to extend the 451 error response with details about every exchange why it did not work. Note that nothing changes if the amount is simply too high, but if exchanges were not considered at all you get to see exactly why (currency, no keys, no wire method, zero deposit limit). Anyway, this at best should improve diagnostics.

Second, with respect to that "unrecoverable state in logs", I again don't see how it is "unrecoverable": adding an exchange that supports the account should immediately make it work. Anyway, I did now modify the code to *expose* the status more clearly that the account is not supported by a particular exchange, so you now get a new "unsupported-account" case in the /kyc status response for the respective account and exchange (which was previously not communicated).

Please clarify if anything else is required and otherwise adjust the test to make it pass...

sebasjm

2026-01-23 13:18

developer   ~0027320

this is better
image-2.png (29,206 bytes)   
image-2.png (29,206 bytes)   

sebasjm

2026-01-23 13:33

developer   ~0027321

There is still a problem. The result of the /kyc is now kyc-wire-impossible which is wrong since the exchange has kyc disabled

    {
      "status": "kyc-wire-impossible",
      "h_wire": "B1QA0CSQ44M0ZWZK13CJNH3TM19T6XFVRPPE8FQMV3C6PZDR4A8QS3C6ADK5DT23NJCHMAKVN7WMR3HW87Z6Y2P73C32MVKBN1FYBA8",
      "payto_uri": "payto://iban/DE1231231231?receiver-name=random",
      "exchange_url": "http://localhost:8081/",
      "exchange_http_status": 0,
      "no_keys": false,
      "auth_conflict": true,
      "exchange_code": 2628,
      "limits": [],
      "payto_kycauths": []
    }


I have updated the integration test to fix the assertion: now it check that the exchange has kyc disabled and expect the account to end in MerchantAccountKycStatus.UNSUPPORTED_ACCOUNT state. It still fails.

 # taler-harness run-integrationtests merchant-bank-bad-wire-target

sebasjm

2026-01-23 13:34

developer   ~0027322

the spa has been updated to handle the expected case

Christian Grothoff

2026-01-24 08:24

manager   ~0027331

Test now passes.

Issue History

Date ModifiedUsernameFieldChange
2026-01-22 14:44sebasjmNew Issue
2026-01-22 14:44sebasjmStatusnew => assigned
2026-01-22 14:44sebasjmAssigned To => Christian Grothoff
2026-01-22 14:44sebasjmFile Added: image.png
2026-01-22 14:44sebasjmNote Added: 0027309
2026-01-22 16:14sebasjmNote Added: 0027312
2026-01-22 16:14sebasjmPrioritynormal => high
2026-01-22 16:15sebasjmNote Added: 0027313
2026-01-22 17:21sebasjmNote Added: 0027314
2026-01-22 23:30Christian GrothoffNote Added: 0027316
2026-01-22 23:58sebasjmNote Added: 0027317
2026-01-23 02:10Christian GrothoffNote Added: 0027318
2026-01-23 02:10Christian GrothoffAssigned ToChristian Grothoff => sebasjm
2026-01-23 02:10Christian GrothoffStatusassigned => feedback
2026-01-23 02:10Christian GrothoffProduct Version => git (master)
2026-01-23 02:10Christian GrothoffTarget Version => 1.4
2026-01-23 13:18sebasjmNote Added: 0027320
2026-01-23 13:18sebasjmFile Added: image-2.png
2026-01-23 13:33sebasjmNote Added: 0027321
2026-01-23 13:33sebasjmAssigned Tosebasjm => Christian Grothoff
2026-01-23 13:34sebasjmStatusfeedback => assigned
2026-01-23 13:34sebasjmNote Added: 0027322
2026-01-24 08:24Christian GrothoffStatusassigned => informing
2026-01-24 08:24Christian GrothoffResolutionopen => fixed
2026-01-24 08:24Christian GrothoffFixed in Version => 1.4
2026-01-24 08:24Christian GrothoffNote Added: 0027331
2026-02-04 19:00Christian GrothoffStatusinforming => closed