View Issue Details

IDProjectCategoryView StatusLast Update
0010745Talermerchant 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
PrioritynormalSeveritymajorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version1.0 
Target Version1.3Fixed in Version1.3 
Summary0010745: wrong wire transfer report on order details
Descriptionthe backend returns repeated wire id with different amounts, it should be merged as one

also the sum doesn't match the expected wired amount into the bank account neither the wire transfer result

 * the order details has 2 wire transfer with same id (SJ3BCDN4V41YK8VHDZRFQMX3Z8R0F5B3S2RG2BM9W82DD6RM2K40) it should have one
 * both wire transfer sum KUDOS:1.51 + KUDOS:0.59 = KUDOS:2.1
 * the same wire transfer in the transfer details shows KUDOS:2


side question: when the order may have more than one wire transfer?


$ curl 'http://merchant.taler.test/private/orders/2025.339-61HXY0WMP7QG2' -H 'Authorization: Bearer secret-token:GH0M9R0R5CGQK80TBVYEEWJVJ9QDG3AC3SC2FPJGCQTYRZNW66Y0'
{
  "wire_reports": [],
  "exchange_code": 0,
  "exchange_http_status": 0,
  "exchange_ec": 0,
  "exchange_hc": 0,
  "deposit_total": "KUDOS:2.12",
  "contract_terms": {
    "nonce": "QTTMNQW87BTSJWF73BHH4ZX53C6SVC89KHZQ04TNX48J0VK1J050",
    "amount": "KUDOS:3",
    "h_wire": "DMK7VW5PX646CDFPBRFZ9H1DBDYH9461NH1BC84KB9KAM3YMY1E35WFE804AA5X5AC128WZXZYZQNCQYZ71F3EWZJTGQAGDKFCYW2B0",
    "max_fee": "KUDOS:0",
    "summary": "we",
    "version": 0,
    "merchant": {
      "name": "qwe",
      "address": {},
      "jurisdiction": {}
    },
    "order_id": "2025.339-61HXY0WMP7QG2",
    "products": [],
    "exchanges": [
      {
        "url": "http://exchange.taler.test/",
        "priority": 1024,
        "master_pub": "HJ08A1WQMD7XTB77K3H4XFZ9591EA07BW12XRPR991NR252SQDB0",
        "max_contribution": "KUDOS:3"
      }
    ],
    "timestamp": {
      "t_s": 1764941673
    },
    "minimum_age": 0,
    "wire_method": "iban",
    "merchant_pub": "6E1W70NJVJQ1AAA95CW715JRQ6D4AMRK3J1EC6SCTNZQT9XDSBW0",
    "pay_deadline": {
      "t_s": 1764941731
    },
    "refund_deadline": {
      "t_s": 1764941791
    },
    "merchant_base_url": "http://merchant.taler.test/",
    "wire_transfer_deadline": {
      "t_s": 1764941791
    }
  },
  "order_status": "paid",
  "last_payment": {
    "t_s": 1764941678
  },
  "refunded": true,
  "wired": true,
  "refund_pending": true,
  "refund_amount": "KUDOS:2",
  "wire_details": [
    {
      "wtid": "SJ3BCDN4V41YK8VHDZRFQMX3Z8R0F5B3S2RG2BM9W82DD6RM2K40",
      "exchange_url": "http://exchange.taler.test/",
      "amount": "KUDOS:1.51",
      "execution_time": {
        "t_s": 1764941678
      },
      "confirmed": false
    },
    {
      "wtid": "SJ3BCDN4V41YK8VHDZRFQMX3Z8R0F5B3S2RG2BM9W82DD6RM2K40",
      "exchange_url": "http://exchange.taler.test/",
      "amount": "KUDOS:0.59",
      "execution_time": {
        "t_s": 1764941678
      },
      "confirmed": false
    }
  ],
  "refund_details": [
    {
      "amount": "KUDOS:0.4",
      "pending": true,
      "timestamp": {
        "t_s": 1764941725
      },
      "reason": ""
    },
    {
      "amount": "KUDOS:1",
      "pending": false,
      "timestamp": {
        "t_s": 1764941687
      },
      "reason": "Duplicated"
    },
    {
      "amount": "KUDOS:0.6",
      "pending": true,
      "timestamp": {
        "t_s": 1764941725
      },
      "reason": ""
    }
  ],
  "order_status_url": "http://merchant.taler.test/orders/2025.339-61HXY0WMP7QG2?token=RTMPEEFQEB954SPQ4C4HBEE9DR"
}










curl 'http://merchant.taler.test/private/incoming?payto_uri=payto%3A%2F%2Fiban%2FDE15970186998345619168%3Freceiver-name%3DHandsome%2520Measurement&limit=-6' \
  -H 'Accept: application/json' \
  -H 'Accept-Language: en-US,en;q=0.9' \
  -H 'Authorization: Bearer secret-token:GH0M9R0R5CGQK80TBVYEEWJVJ9QDG3AC3SC2FPJGCQTYRZNW66Y0' \
  -H 'Cache-Control: no-cache' \
  -H 'Connection: keep-alive' \
  -H 'Origin: http://localhost:8080' \
  -H 'Pragma: no-cache' \
  -H 'Referer: http://localhost:8080/' \
  -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36' \
  --insecure
{
  "incoming": [
    {
      "expected_credit_amount": "KUDOS:2",
      "wtid": "SJ3BCDN4V41YK8VHDZRFQMX3Z8R0F5B3S2RG2BM9W82DD6RM2K40",
      "payto_uri": "payto://iban/DE15970186998345619168?receiver-name=Handsome%20Measurement",
      "exchange_url": "http://exchange.taler.test/",
      "expected_transfer_serial_id": 8,
      "execution_time": {
        "t_s": 1764941795
      },
      "validated": true,
      "confirmed": false,
      "last_http_status": 200,
      "last_ec": 0
    },

// ... other wire transfers here
  ]
}
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

sebasjm

2025-12-08 19:57

developer   ~0026828

Last edited: 2025-12-08 19:58

here is another case, the order doesn't have refunds

STEFAN flag = true

$ curl 'http://merchant.taler.test/private/orders/2025.339-010DA20FKXN88'
{
  "wire_reports": [],
  "exchange_code": 0,
  "exchange_http_status": 0,
  "exchange_ec": 0,
  "exchange_hc": 0,
  "deposit_total": "KUDOS:1.11",
  "contract_terms": {
    "nonce": "62QJPPEC621A74NMMWWSRX32YTJ0J9ZYFJTAMR3WBN9D2KKE82DG",
    "amount": "KUDOS:1",
    "h_wire": "DMK7VW5PX646CDFPBRFZ9H1DBDYH9461NH1BC84KB9KAM3YMY1E35WFE804AA5X5AC128WZXZYZQNCQYZ71F3EWZJTGQAGDKFCYW2B0",
    "max_fee": "KUDOS:0",
    "summary": "w",
    "version": 0,
    "merchant": {
      "name": "qwe",
      "address": {},
      "jurisdiction": {}
    },
    "order_id": "2025.339-010DA20FKXN88",
    "products": [],
    "exchanges": [
      {
        "url": "http://exchange.taler.test/",
        "priority": 1024,
        "master_pub": "HJ08A1WQMD7XTB77K3H4XFZ9591EA07BW12XRPR991NR252SQDB0",
        "max_contribution": "KUDOS:1"
      }
    ],
    "timestamp": {
      "t_s": 1764941022
    },
    "minimum_age": 0,
    "wire_method": "iban",
    "merchant_pub": "6E1W70NJVJQ1AAA95CW715JRQ6D4AMRK3J1EC6SCTNZQT9XDSBW0",
    "pay_deadline": {
      "t_s": 1764941081
    },
    "refund_deadline": {
      "t_s": 1764941141
    },
    "merchant_base_url": "http://merchant.taler.test/",
    "wire_transfer_deadline": {
      "t_s": 1764941141
    }
  },
  "order_status": "paid",
  "last_payment": {
    "t_s": 1764941028
  },
  "refunded": false,
  "wired": true,
  "refund_pending": false,
  "refund_amount": "KUDOS:0",
  "wire_details": [
    {
      "wtid": "DZXCRRWAHZD0TQWHMKJSS3JZ05ZR8D1TWGJAFFNFPSEZDBSNEYVG",
      "exchange_url": "http://exchange.taler.test/",
      "amount": "KUDOS:1.1",
      "execution_time": {
        "t_s": 1764941028
      },
      "confirmed": false
    }
  ],
  "refund_details": [],
  "order_status_url": "http://merchant.taler.test/orders/2025.339-010DA20FKXN88?token=A5W7J2BPY2292Y6WNZMXECGXCC"
}

Christian Grothoff

2025-12-12 20:15

manager   ~0026944

Eh, did consider wire fees? I think the amounts could be totally fine here.

Yes, a single order can have multiple wire transfers, starting with the payment being made with different exchanges.

I agree that we probably should aggregate the amounts (likely currently reported per coin, not just per contract).

Christian Grothoff

2025-12-14 22:29

manager   ~0026977

8ad98a33..2c27aef2 combines multiple coin deposits into one record for the GET /private/orders/$ID API.

Issue History

Date ModifiedUsernameFieldChange
2025-12-08 19:54sebasjmNew Issue
2025-12-08 19:54sebasjmStatusnew => assigned
2025-12-08 19:54sebasjmAssigned To => Christian Grothoff
2025-12-08 19:57sebasjmNote Added: 0026828
2025-12-08 19:58sebasjmNote Edited: 0026828
2025-12-09 06:23Christian GrothoffTarget Version => 1.5
2025-12-12 20:15Christian GrothoffNote Added: 0026944
2025-12-14 22:29Christian GrothoffNote Added: 0026977
2025-12-14 22:30Christian GrothoffStatusassigned => informing
2025-12-14 22:30Christian GrothoffResolutionopen => fixed
2025-12-14 22:30Christian GrothoffFixed in Version => 1.3
2025-12-14 22:30Christian GrothoffProduct Version => 1.0
2025-12-14 22:30Christian GrothoffTarget Version1.5 => 1.3
2025-12-21 20:46Christian GrothoffStatusinforming => closed