View Issue Details

IDProjectCategoryView StatusLast Update
0010635Talermerchant backendpublic2025-12-21 21:46
Reportersebasjm Assigned ToChristian Grothoff  
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.

Relationships

related to 0010546 confirmedChristian 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 20: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 Modified Username Field Change
2025-11-19 21:06 sebasjm New Issue
2025-11-19 21:06 sebasjm Status new => assigned
2025-11-19 21:06 sebasjm Assigned To => Christian Grothoff
2025-11-20 22:42 Christian Grothoff Relationship added related to 0010546
2025-11-28 22:17 Christian Grothoff Summary wrong response doesn't follow spec => wrong response doesn't follow spec [3d]
2025-12-19 20:06 Christian Grothoff Relationship added related to 0010737
2025-12-21 20:00 Christian Grothoff Note Added: 0027162
2025-12-21 20:00 Christian Grothoff Status assigned => resolved
2025-12-21 20:00 Christian Grothoff Resolution open => fixed
2025-12-21 20:00 Christian Grothoff Fixed in Version => 1.3
2025-12-21 20:00 Christian Grothoff Target Version => 1.3
2025-12-21 21:46 Christian Grothoff Status resolved => closed