Subject · G. Gök — Software Engineering Manager, Payments · Getir · Istanbul
Göktürk
Gök
Authorised is not captured. Captured is not settled. I own the distance between them.
Nine years inside transactional software: core banking at Softtech, carrier-scale telephony at Turkcell, and since 2021 the payment methods behind Getir's checkout, where I now run the payments engineering team. My job is the guarantee under the button: the money moved exactly once, or it visibly did not move at all, and either way there is a record you can hand to a bank.
[ ] marks a field left open — a date or a figure that is not published here. Figures my employers have not published stay open rather than estimated.
Career
Read it bottom to top and it is one continuous move: from money at rest, to traffic at scale, to money in motion. Core banking taught me what a balance owes you. Telecom taught me what happens at volumes where a rounding error is a business unit. Payments is where those two bills arrive at the same time.
| Period | Employer | Scope | System |
|---|---|---|---|
| 2021 — present Active | GetirQ-commerce · Türkiye |
Accountable for whether an integration should exist, not just whether it returned 200. Software Engineering Manager, Payments I own the payment-method surface end to end and the engineers who keep it up: hiring, the architecture calls, the on-call rota, provider selection, and the incident review afterwards. The diagram below is the day job. |
Payment-method integrations behind checkout: authorisation, capture, refund, reconciliation. Java, Spring Boot, Kafka and MongoDB. |
| ↑ What changedSame domain, wider blast radius: from being the person who fixes the integration to being the person accountable for whether it should exist. | |||
| 2021 — [ ] | GetirGlobal Payments |
The hardest part of a new market is never the API document. Lead Software Engineer & Acting Engineering Manager One checkout contract against many acquirers, where the real integration is the ten local rules nobody bothered to write down in English. It is where I started deciding which of a provider's failures we absorb and which we refuse to hide from the customer. |
Cross-border payment integrations: one checkout contract, many acquirers, per-market method sets. |
| ↑ What changedTelecom scale arrived in commerce. The same retry that used to cost a dropped session now costs a customer a charge they did not agree to. | |||
| [ ] — 2021 | TurkcellTürkiye's largest mobile operator |
At carrier volume the rare case is a schedule, not an exception. Senior Software Engineer The one-in-a-million path arrived several times an hour, on time, forever. I learned to give the improbable branch an owner and a name, and the filings in the annex came out of that work. |
Call-path and subscriber data systems, plus inventions filed with the Turkish Patent and Trademark Office. ↑ See annex |
| ↑ What changedFrom a ledger read by auditors to a network read by millions per hour. Correctness stayed the requirement; latency became one too. | |||
| 2017 — [ ] | SofttechTechnology arm of İşbank |
A balance is not a number. It is an argument you have to win four years later. Senior Software Engineer Core banking, where you do not update a figure. You append the event that changed it, and you accept that someone whose entire job is doubting you may open that row long after you have left. |
Core banking systems: double-entry discipline, batch windows, and code reviewed by people who are allowed to say no. |
[ ] marks a field left open: exact month boundaries between posts are not published here.
Annex † — filings
Filed at Turkcell · Turkish Patent and Trademark Office
| Ref | Claim | Status | Relevance |
|---|---|---|---|
| Pat-01 | Synthesised speech delivered inside a live callTelephony · speech | Filed · TRTR 2021/011083 | Generating audio inside a latency budget that cannot be renegotiated, the same constraint as authorising a card while someone stands at a checkout. |
| Pat-02 | Reporting system driven by automated image analysisImage analysis · reporting | Filed · TRTR 2019/19840 | Turning an unreliable signal into a figure somebody will act on, with the confidence stated rather than implied. |
| Pat-03 | Method for presenting call lists to a subscriberTelephony · subscriber data | Filed · TRTR 2019/19641 | Presenting a record so that a person who was not there can reconstruct what happened, which is the whole of reconciliation. |
A patent filing is not a proxy for engineering ability. It is a proxy for describing a system precisely enough that a stranger can attack it: no shared context, no benefit of the doubt, every term defined. That is the same skill a payment design document needs.
Fig. 1
The guard is one switch. Turn it off and watch who pays for it. Every checkout button is a distributed transaction wearing a costume: five systems, one number that has to end up the same in two places that cannot see each other.
Card authorisation · sequence
Drag the sequence sideways to follow it →
A sequence diagram across checkout, orchestrator, provider, issuer and ledger. With the idempotency guard on, one authorisation reaches the issuer, one hold is placed and one ledger row is written. With the guard off, a lost response causes the client to retry without a key, the issuer reads the retry as a new customer intention and places a second hold, while the ledger still records one authorisation, leaving the customer holding two charges and the record showing one.
Ledger — append only
- Intentord_88431nothing has moved yet
- Authorizedpay_7d1f4chold placed · one row
- Capturedpay_7d1f4cfunds committed
- Missinghold #2the issuer has it · the ledger does not
Reconciliation
- Issuer holds
- 01
- Ledger authorisations
- 01
- State
- Balanced
Twelve messages, five systems, one number that has to end up the same in two places that cannot see each other.
The bracket means the same thing here as it does on the record above: nobody has verified this number. On a career sheet that is honesty. On a ledger it is somebody's money.
Fig. 1 — drawn for this page. Illustrative amounts; no employer data.
Invariants
Everything else in an architecture is a trade. These are the ones I will spend political capital defending.
| Invariant | Fails as | Enforced by |
|---|---|---|
Our ledger is the truth. The provider is a rumour. |
A support agent reads a dashboard that queries the provider, and tells the customer something the books do not say. | Every provider response is an event we record, never a value we display. One read model, ours. |
Never a boolean called isPaid. |
Authorised, captured, partially refunded and disputed all collapse into true, and the bug is found by finance. | A state machine with named transitions, and a compile error where a boolean used to be. |
Reconciliation runs on a calendar, not on suspicion. |
The break is a fortnight old before anyone looks, and the evidence has rotated out of the logs. | A scheduled job that must produce a signed-off number daily, including the days nothing looks wrong. |
The engineer who built the integration takes the first rotation on it. |
The failure modes stay in one head, and the runbook is written by someone guessing. | The on-call schedule, which I own, and which is not negotiable in the week after a launch. |
When we cannot complete a payment, the customer is told which door is closed. |
“Something went wrong”, so they retry, three times, and now you have three problems. | Declines are mapped to causes at the boundary; an unmapped code is a defect with an owner. |
Open a design review with your failure modes, not your diagram. |
An hour is spent admiring the happy path, and the timeout policy is decided in a corridor. | The review template. The first section is what breaks; the diagram comes after it. |
| 6 invariants | ||
Writing
Remit. Payment correctness, reconciliation, provider contracts, and what managing that work actually consists of. It will not hold framework opinions, tutorials, or career advice from a man with one career. Cadence. One piece when it is finished, and no schedule I cannot keep.
| Slot | Title | Why it exists | Status |
|---|---|---|---|
| [ ] | What a settlement file tells you about your architecture |
The file is the only description of your system written by someone with no incentive to be kind about it. | Drafting |
| [ ] | Idempotency keys are a contract, not a header |
The write-up of the switch in Fig. 1, and of what the retry looked like from the issuer's side. | Drafting |
| [ ] | The refund that outran its capture |
An ordering bug that is invisible in every test you would think to write, until finance finds it. | Outlined |
| [ ] | How I run a payments incident review |
The part of this job with no diagram, and the part that decides whether the next one is shorter. | Reserved |
| 0 published · 4 slots reserved | |||
I would rather show you an empty shelf than a full one I did not stock. Nothing here is dated until it exists.
Contact
If you have a reconciliation break, lead with the file.
If you are building the payment surface for a company that has outgrown one provider, that is the conversation I am most useful in.
Recruiters are welcome, with one honest filter: whether the role owns money movement or reports on it. I answer messages that contain a concrete problem, and I answer them slowly and properly rather than quickly.
- hello@gokturkgok.com
- linkedin.com/in/gokturkgok
- GitHub
- github.com/gokturkgok
- Base
- Istanbul, Türkiye — UTC+03