commit e25c28c264b3d5eafb2402efda9051e4e9e145fd
parent 112a2c62df10e9b04a042258498dd41b750736cb
Author: Christian Grothoff <christian@grothoff.org>
Date: Sun, 21 Dec 2025 19:59:22 +0100
clarify spec: PaymentDeniedLegallyResponse only applies on /pay, not on order creation (#10737/#10635)
Diffstat:
1 file changed, 14 insertions(+), 20 deletions(-)
diff --git a/core/api-merchant.rst b/core/api-merchant.rst
@@ -871,11 +871,16 @@ Making the payment
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[];
+ // Numeric `error code <error-codes>` unique to the condition.
+ // Error code, must be
+ // TALER_EC_MERCHANT_POST_ORDERS_ID_PAY_EXCHANGE_LEGALLY_REFUSED.
+ code: Integer;
+
+ // 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[];
}
@@ -1263,15 +1268,6 @@ the contract. Refunds must be approved by the merchant's business logic.
:http:statuscode:`410 Gone`:
The wire deadline has past and it is too late to grant a refund.
Since protocol **v24**.
- :http:statuscode:`451 Unavailable for Legal Reasons`:
- The refund could not be awarded because of legal
- reasons (an exchange refused). The wallet should
- show an error message and suggest to the user to
- get in touch with the merchant to try to get the
- refund in a different way.
- The body is a `PaymentDeniedLegallyResponse` with
- details about the exchange causing the failure.
- Since protocol **v17**.
**Details:**
@@ -3600,9 +3596,8 @@ Creating orders
The :ref:`KYC status <merchantkycstatus>` 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**.
+ The body is an `ErrorDetail` with an error
+ code of `MERCHANT_POST_ORDERS_ID_PAY_EXCHANGE_LEGALLY_REFUSED`.
**Details:**
@@ -4371,9 +4366,8 @@ Approving Refunds
reasons (an exchange would refuse). The merchant
staff needs to find another way to give a refund
to the customer.
- The body is a `PaymentDeniedLegallyResponse` with
- details about the exchange causing the failure.
- Since protocol **v17**.
+ The body is an `ErrorDetail` with an error
+ code of `MERCHANT_POST_ORDERS_ID_REFUND_EXCHANGE_TRANSACTION_LIMIT_VIOLATION`.
**Details:**