View Issue Details

IDProjectCategoryView StatusLast Update
0010635Talermerchant backendpublic2025-12-21 20:46
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
PriorityhighSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product Version1.1 
Target Version1.3Fixed in Version1.3 
Summary0010635: wrong response doesn't follow spec [3d]
Descriptiontrying to create an order when there is no bank account ready yet

$ curl 'http://merchant.taler.test/private/orders' --compressed -X POST -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:145.0) Gecko/20100101 Firefox/145.0' -H 'Accept: application/json' -H 'Accept-Language: en-US,en;q=0.5' -H 'Accept-Encoding: gzip, deflate' -H 'Referer: http://localhost:8080/' -H 'Content-Type: application/json' -H 'Authorization: Bearer secret-token:1DY5CKWM89HYGZET1N0VDAN13HBCXMJ727AVE7H3AQ9FASYYY09G' --data-raw '{"order":{"amount":"KUDOS:1","summary":"w","products":[],"pay_deadline":{"t_s":1763589074},"wire_transfer_deadline":{"t_s":1763754674},"refund_deadline":{"t_s":1763754674}},"inventory_products":[],"create_token":true}'

and i get

{
  "code": 2513,
  "hint": "The total order amount exceeds hard legal transaction limits from the available exchanges, thus a customer could never legally make this payment. You may try to increase your limits by passing legitimization checks with exchange operators. You could also inquire with your legislator why the limits are prohibitively low for your business."
}

which is understandable but the spa is waiting for what the specs says

https://docs.taler.net/core/api-merchant.html#post-[-instances-$INSTANCE]-private-orders
 
451 Unavailable for Legal Reasons:

    The order could not be created because of legal reasons, specifically no exchange would accept a payment at this time because we have not yet satisfied the respective legal requirements. The KYC status API can be used to determine details about how to proceed with the KYC process. The body is a PaymentDeniedLegallyResponse with details about the exchange(s) causing the failure. Since protocol v17.

interface PaymentDeniedLegallyResponse {

   // Base URL of the exchanges that denied the payment.
   // The wallet should refresh the coins from these
   // exchanges, but may try to pay with coins from
   // other exchanges.
   exchange_base_urls: string[];

}
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Relationships

related to 0010546 closedChristian Grothoff merchant backend should report the status of each exchange for each bank account [3d] 
related to 0010737 closedChristian Grothoff 451 of template creation dont returns a PaymentDeniedLegallyResponse without urls 

Activities

Christian Grothoff

2025-12-21 19:00

manager   ~0027162

112a2c62..e25c28c2 fixes the specification. The implementation remains unchanged, the spec wrongfully re-used a response from /pay while the order creation doesn't (need to) return a list of exchanges. We may return more extensive actual diagnostics in the future, but that is another issue and won't follow this format.

Issue History

Date ModifiedUsernameFieldChange
2025-11-19 20:06sebasjmNew Issue
2025-11-19 20:06sebasjmStatusnew => assigned
2025-11-19 20:06sebasjmAssigned To => Christian Grothoff
2025-11-20 21:42Christian GrothoffRelationship addedrelated to 0010546
2025-11-28 21:17Christian GrothoffSummarywrong response doesn't follow spec => wrong response doesn't follow spec [3d]
2025-12-19 19:06Christian GrothoffRelationship addedrelated to 0010737
2025-12-21 19:00Christian GrothoffNote Added: 0027162
2025-12-21 19:00Christian GrothoffStatusassigned => informing
2025-12-21 19:00Christian GrothoffResolutionopen => fixed
2025-12-21 19:00Christian GrothoffFixed in Version => 1.3
2025-12-21 19:00Christian GrothoffTarget Version => 1.3
2025-12-21 20:46Christian GrothoffStatusinforming => closed