Bank statement import API in cash management skips transactions with special characters in description

We’re importing daily bank statements into Cash Management via the REST API. The import runs successfully with a 200 response, but when we check the posted transactions, some are missing. After investigation, we found that transactions containing special characters in the description field (like €, £, or accented characters like é, ñ) are silently skipped.

Example API call:

POST /api/v1/cash/bank-statements
{
  "transactions": [
    {"amount": 1500.00, "description": "Payment from Société Générale"},
    {"amount": 2300.00, "description": "Invoice £2300 settled"}
  ]
}

The API returns success, but these transactions don’t appear in Cash Management. Transactions with plain ASCII descriptions import fine. Is this an input validation issue, a character encoding problem, or something with the API error handling? Our reconciliation reports are now unreliable because we can’t trust that all transactions were imported.

We are setting UTF-8 in the Content-Type header, so that’s not it. The silent dropping is concerning - shouldn’t the API return an error or at least a warning in the response? How can we know which transactions were skipped?

This is definitely a character encoding issue. Check what encoding you’re sending in the Content-Type header. The API expects UTF-8, but if you’re not explicitly setting it, your HTTP client might be defaulting to ISO-8859-1 or Windows-1252. Add Content-Type: application/json; charset=utf-8 to your request headers.

The API response should include a warnings array even when the status is 200. Check if there’s a warnings or partialSuccess field in the response body. Sometimes it’s there but applications don’t parse it. If you’re logging the full response, look for a section that lists skipped transactions with reasons. That said, the ICS 2021 version had a bug where warnings weren’t always included.

Another thing to check - are you URL-encoding your JSON payload? Some HTTP clients automatically URL-encode the body, which can mangle special characters even if the original encoding was UTF-8. Make sure you’re sending the raw JSON body without additional encoding layers. Also, try logging the exact bytes being sent on the wire using a tool like Wireshark or Fiddler to verify the encoding is correct.