HMAC
Every request is signed with SHA-256. A 5-minute window and protection against replays.
Service is up·70 banks in the catalog
DGMOS's bank movement infrastructure. It collects every statement, from MT940 to Excel, parses it and turns it into one model without ever writing the same movement twice.
Main account · TR33 •••• 1326
23,484.06TRY
Closing balance · consistent with opening and movements
It never
moves money.
Read only. No payment orders, no transfers, no approval flows.
No guessing. If the account is not certain, the statement goes to quarantine and a person decides.
No rewriting. What the bank sent is what is stored; the raw file is kept too.
Channels
SFTP_PULLSFTP_PUSHMANUAL_UPLOADThe same content arriving twice is recognised by its SHA-256 digest and not processed again.
One line, split into its fields
:61:2511041104C15000,00NTRFREF001//BNK0001
Quarantine
ACCOUNT_UNRESOLVED
The account in the file did not match any known account with certainty. No movements were written.
A statement whose currency does not match is never written to the account, not even with a forced assignment.
Same day, same amount
−1,000.00−1,000.00Two real payments are not collapsed into one. Both are stored; the second is flagged with duplicate_candidate_of. A pending intraday movement is updated in place when the end-of-day statement books it.
RabbitMQ · banking.events
{
"eventType": "banking.transactions.imported.v1",
"customerId": 1001,
"aggregateType": "account",
"schemaVersion": 1,
"payload": { "accountId": 42, "fileId": 4182, "count": 3 }
}
The event is queued in the same database transaction that stores the movements, so it cannot get lost before it is published.
Formats it reads
Every bank's format is a little different. The differences live in versioned profiles, not in code; PGP-encrypted and signed files are opened too.
HMAC
Every request is signed with SHA-256. A 5-minute window and protection against replays.
1:1
Every record belongs to exactly one customer. A key only sees its own customer's data.
KMS
Raw files are stored encrypted; SSH and PGP keys live only in the secret store.
Audit
Every change is in the audit log: who, when and from which IP.