View Issue Details

IDProjectCategoryView StatusLast Update
0009684Talerexchange AML officer webuipublic2025-05-10 02:11
Reportersebasjm 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
PrioritynormalSeveritymajorReproducibilityhave not tried
Status closedResolutionfixed 
Product Versiongit (master) 
Target Version1.0Fixed in Version1.0 
Summary0009684: AML officer should set "account name" when doing a decision of a no-yet-known account
Descriptionwas: can't post a decision to an account without a decision yet

exchange supports "payto_uri" for this case, but returns 400

Response

< HTTP/1.1 400 Bad Request
< Server: nginx/1.24.0 (Ubuntu)
< Date: Tue, 01 Apr 2025 13:07:00 GMT
< Content-Type: application/json
< Content-Length: 259
< Connection: keep-alive
< Access-Control-Allow-Origin: *
< Access-Control-Expose-Headers: *
< Access-Control-Allow-Credentials: true
<
{
  "hint": "The JSON in the client's request was malformed. This is likely a bug in the client implementation. Check if you are using the latest available version and/or file a report with the developers.",
  "code": 22,
  "field": "payto_uri",
  "line": 2
* Connection #0 to host exchange.taler.test left intact
}

Request

curl 'http://exchange.taler.test:1180/aml/8RTE8VXBYDTR6P20T77NGQCJXRD5RJ4RGVASWBKFJNRMSGKBKQT0/decision' \
  -H 'Accept: application/json' \
  -H 'Taler-AML-Officer-Signature: FB77QSM31RFTASFEH9QYCNH3AV22VNGGT31MKB80DVD0BPPPJRHT6WZ28Y90T74EKJN4CTNY7DF0ZCB5EYXG8ZTS8ZDBY58S8FANE1R' \
  --data-raw '{"officer_sig":"RZ7JXVX9MT7Q5ZQGQCT4VP5MNW5WMP99J6FRX2CFWNW5Q8H576Z137AZA8VYWBJPTFNRXSJHAY6AVJ2J5NZW7ZSGQP050J606HAD020","h_payto":"RVMJAC602NH8D756ERYZCW6YGBN3340M8N8PFMYVVTGR6E780C50","decision_time":{"t_s":1743512468},"justification":"asd","payto_uri":"payto://iban/DE1231231231","keep_investigating":false,"new_rules":{"expiration_time":{"t_s":"never"},"rules":[{"operation_type":"WITHDRAW","threshold":"JRSL:100","timeframe":{"d_us":2592000000000},"measures":["VERBOTEN"],"display_priority":1},{"operation_type":"DEPOSIT","threshold":"JRSL:100","timeframe":{"d_us":2592000000000},"measures":["VERBOTEN"],"display_priority":1},{"operation_type":"MERGE","threshold":"JRSL:100","timeframe":{"d_us":2592000000000},"measures":["VERBOTEN"],"display_priority":1},{"operation_type":"AGGREGATE","threshold":"JRSL:100","timeframe":{"d_us":2592000000000},"measures":["VERBOTEN"],"display_priority":1},{"operation_type":"BALANCE","threshold":"JRSL:100","timeframe":{"d_us":"forever"},"measures":["VERBOTEN"],"display_priority":1},{"operation_type":"REFUND","threshold":"JRSL:100","timeframe":{"d_us":2592000000000},"measures":["VERBOTEN"],"display_priority":1},{"operation_type":"CLOSE","threshold":"JRSL:100","timeframe":{"d_us":2592000000000},"measures":["VERBOTEN"],"display_priority":1},{"operation_type":"TRANSACTION","threshold":"JRSL:100","timeframe":{"d_us":"forever"},"measures":["VERBOTEN"],"display_priority":1}],"successor_measure":"","custom_measures":{}},"events":[],"attributes":{"CUSTOMER_TYPE":"NATURAL_PERSON","FULL_NAME":"Sebastian Marchano","DOMICILE_ADDRESS":"Balcarse 129","DATE_OF_BIRTH":"2025-04-16","NATIONALITY":"AR","PERSONAL_IDENTIFICATION_DOCUMENT_COPY":{"CONTENTS":"<removed>","ENCODING":"base64","FILENAME":"primero.pdf","MIME_TYPE":"application/pdf"},"CORRESPONDENCE_LANGUAGE":"en","CUSTOMER_TYPE_VQF":"NATURAL_PERSON","FORM_ID":"vqf_902_1_customer","FORM_VERSION":1},"properties":{"AML_ACCOUNT_OPEN":true},"new_measures":"nothing"}' \
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

sebasjm

2025-04-01 17:31

developer   ~0024364

i will check the differences on how the validation of payto is implemented.

the checksum of DE1231231231 is valid but not the length, an it seems that this was some new check added somewhat recently

sebasjm

2025-04-01 20:44

developer   ~0024368

I found that the exchange is doing full payto validation in the payto_uri field.
The usecase where this is a problem is when the AML officer Search for an IBAN account and tries to make a decision on an account that is not yet known to the exchange.

Asking for the full payto require the `receiver-name` of the account.
The problem is that if the name provided by the AML officer is wrong by a letter or space then the hash of the payto (a) provided by the aml officer and the payto (b) calculated by the bank wire transfer will not match.
From the AML officer perspective is a decision that land in nowhere, lost in the vacuum of an dark and mysterious database.

IMO the payto_uri should be the normalized version.

sebasjm

2025-04-01 21:50

developer   ~0024371

Talking with Florian:
 * exchange handles if the customer change the receiver name
 * in case of sanction list we have a receiver name for a decision

So, I'm adding a "account name" in the decision wizard

sebasjm

2025-04-02 19:49

developer   ~0024381

60c162a57..dd9dc8c52

Issue History

Date ModifiedUsernameFieldChange
2025-04-01 13:07sebasjmNew Issue
2025-04-01 13:07sebasjmStatusnew => assigned
2025-04-01 13:07sebasjmAssigned To => Florian Dold
2025-04-01 17:30sebasjmAssigned ToFlorian Dold => sebasjm
2025-04-01 17:31sebasjmNote Added: 0024364
2025-04-01 20:44sebasjmAssigned Tosebasjm => Christian Grothoff
2025-04-01 20:44sebasjmStatusassigned => feedback
2025-04-01 20:44sebasjmNote Added: 0024368
2025-04-01 21:50sebasjmNote Added: 0024371
2025-04-01 21:50sebasjmStatusfeedback => assigned
2025-04-01 21:50sebasjmAssigned ToChristian Grothoff => sebasjm
2025-04-01 21:51sebasjmStatusassigned => implementing
2025-04-02 14:40sebasjmCategoryexchange => exchange AML backoffice (SPA)
2025-04-02 14:40sebasjmSummarycan't post a decision to an account without a decision yet => AML officer should set "account name" when doing a decision of a no-yet-known account
2025-04-02 14:40sebasjmDescription Updated
2025-04-02 19:49sebasjmStatusimplementing => informing
2025-04-02 19:49sebasjmResolutionopen => fixed
2025-04-02 19:49sebasjmNote Added: 0024381
2025-04-08 06:59Christian GrothoffFixed in Version => 1.0
2025-05-10 02:11Christian GrothoffStatusinforming => closed
2026-08-23 14:17Florian DoldCategoryexchange AML backoffice (SPA) => exchange AML officer webui