View Issue Details

IDProjectCategoryView StatusLast Update
0010185Talermerchant portal webuipublic2025-08-31 17:09
ReporterNemael 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
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
PlatformAny (this is just curl requests)OSAnyOS VersionAny
Product Version1.0 
Target Version1.0 stretch goalsFixed in Version1.0 stretch goals 
Summary0010185: Bad response when trying to reach /private/orders endpoint with valid token
DescriptionWhen trying to reach for endpoint https://backend.demo.taler.net/instances/sandbox/private/orders via request, as shown in the documentation, to obtain a list of stored orders, I receive this an error response
ENDPOINT:
https://backend.demo.taler.net/instances/sandbox/private/orders

REQUEST:
curl --request GET \
  --url https://backend.demo.taler.net/instances/sandbox/private/orders \
  --header 'Authorization: Bearer secret-token:J40AKS13K6FX1MG1E5PYQYWB3P1F6F2CDX2142CNVEG843VP4A40' \
  --header 'User-Agent: TalerOdoo/insomnia/11.3.0'

RESPONSE:
{
    "code": 2008,
    "hint": "The contract obtained from the merchant backend was malformed."
}

The supplied token is new and not expired, and I tried plenty of different ways to have the query, but none worked to this endpoint.
As an example, when I use an equivalent request on another endpoint to get a specific OrderId's information, I get a valid response.
ENDPOINT:
https://backend.demo.taler.net/instances/sandbox/private/orders/2025.197-0203D0517RDW0

REQUEST:
curl --request GET \
  --url https://backend.demo.taler.net/instances/sandbox/private/orders/2025.197-0203D0517RDW0 \
  --header 'Authorization: Bearer secret-token:J40AKS13K6FX1MG1E5PYQYWB3P1F6F2CDX2142CNVEG843VP4A40' \
  --header 'User-Agent: TalerOdoo/insomnia/11.3.0'

RESPONSE: (Warning, long text)
{
    "order_status_url": "https://backend.demo.taler.net/instances/sandbox/orders/2025.197-0203D0517RDW0?token=BMW8594AA6WKZE4062VD7NT9PR",
    "contract_terms": {
        "version": 0,
        "summary": "gggga",
        "minimum_age": 0,
        "products": [],
        "h_wire": "M7QJMWQC542YAQMRN78Q3JFG4TZTJVGS2CTR3H1FCYZYAKMKKWRHNV29CWYZP8AEB84NSZ3CVGF6TA21C031V1BM83PJRNCGC9M6AFR",
        "wire_method": "iban",
        "order_id": "2025.197-0203D0517RDW0",
        "timestamp": {
            "t_s": 1752641412
        },
        "pay_deadline": {
            "t_s": 1752645011
        },
        "wire_transfer_deadline": {
            "t_s": 1752727811
        },
        "merchant_base_url": "https://backend.demo.taler.net/instances/sandbox/",
        "merchant": {
            "name": "sandbox merchant",
            "address": {},
            "jurisdiction": {}
        },
        "merchant_pub": "74DV5N6T2ANY1DJFMD41BN7KJYXK70S18CM22TQABEYMA2GSDRD0",
        "exchanges": [
            {
                "url": "https://exchange.demo.taler.net/",
                "priority": 0,
                "max_contribution": "KUDOS:3",
                "master_pub": "F80MFRG8HVH6R9CQ47KRFQSJP3T6DBJ4K1D9B703RJY3Z39TBMJ0"
            }
        ],
        "max_fee": "KUDOS:0",
        "amount": "KUDOS:3",
        "refund_deadline": {
            "t_s": 1752727811
        },
        "nonce": "8HPKXRK4ZQZ54FYTK4RN6XP77Q4997PVRTNBP8ZE96CF15N40EGG"
    },
    "order_status": "claimed"
}
Steps To ReproduceSend request, with valid token, to get the list of Order to endpoint https://backend.demo.taler.net/instances/sandbox/private/orders
Additional InformationPlease reach out to panouillot.mael@gmail.com if you have any questions.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

Christian Grothoff

2025-07-17 11:57

manager   ~0025511

I just did *exactly* the same request, except with a bearer token I got myself because yours had expired. I get:

$ curl --request GET --url https://backend.demo.taler.net/instances/sandbox/private/orders --header 'Authorization: Bearer secret-token:JQSSEEWWWFWT68QY5XE29VAPCFQ1CRDKQFEEH9DZNANQDKJ0WGBG' --header 'User-Agent: TalerOdoo/insomnia/11.3.0'
{
  "orders": [
    {
      "order_id": "2025.198-00W23V9PKE87C",
      "row_id": 7321,
      "timestamp": {
        "t_s": 1752743941
      },
      "amount": "KUDOS:0.7",
      "summary": "Coffee",
      "refundable": false,
      "paid": true
    },
...
  {
      "order_id": "2025.191-03W6G8S5FAT92",
      "row_id": 6182,
      "timestamp": {
        "t_s": 1752130548
      },
      "amount": "KUDOS:0.7",
      "summary": "Coffee",
      "refundable": false,
      "paid": true
    }
  ]
}

Christian Grothoff

2025-07-17 12:00

manager   ~0025512

Ah, I have a theory: a v1-style order was in the list of orders at the time. V1 style order lacked the "amount" field, causing the error (line 397). But, since then, the v1 order went unpaid, was auto-deleted, and thus the API works again. That should explain everything!

Christian Grothoff

2025-07-17 12:27

manager   ~0025513

Fixed in d989aa13..8fc8be0d. Thanks for reporting!!!

Christian Grothoff

2025-07-17 12:28

manager   ~0025514

(Note that the fix has not yet been deployed to demo, so IF v1 contracts re-appear on demo, you may see the problem again.)

Issue History

Date ModifiedUsernameFieldChange
2025-07-16 05:19NemaelNew Issue
2025-07-16 08:02Christian GrothoffAssigned To => Christian Grothoff
2025-07-16 08:02Christian GrothoffStatusnew => assigned
2025-07-17 11:57Christian GrothoffNote Added: 0025511
2025-07-17 12:00Christian GrothoffNote Added: 0025512
2025-07-17 12:27Christian GrothoffNote Added: 0025513
2025-07-17 12:28Christian GrothoffStatusassigned => informing
2025-07-17 12:28Christian GrothoffResolutionopen => fixed
2025-07-17 12:28Christian GrothoffFixed in Version => 1.0 stretch goals
2025-07-17 12:28Christian GrothoffNote Added: 0025514
2025-07-17 12:28Christian GrothoffTarget Version => 1.0 stretch goals
2025-08-31 17:09Christian GrothoffStatusinforming => closed
2026-08-23 14:18Florian DoldCategorymerchant backoffice SPA => merchant portal webui