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

Record of service

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.

Positions held, most recent first. Scope states the mandate; System states what was actually running.
PeriodEmployerScopeSystem
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

Applications filed at Turkcell with the Turkish Patent and Trademark Office. These are published applications, not granted patents. Corporate filings; co-inventors are named on the register. Titles below are summaries — the register wording governs.
RefClaimStatusRelevance
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

One card authorisation, end to end · worked example · amounts illustrative

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

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

  1. Intentord_88431nothing has moved yet
  2. Authorizedpay_7d1f4chold placed · one row
  3. Capturedpay_7d1f4cfunds committed

Reconciliation

Issuer holds
01
Ledger authorisations
01
State
Balanced
Guard · idempotency key

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

Positions · 6 · disagreement invited

Everything else in an architecture is a trade. These are the ones I will spend political capital defending.

Positions I hold about building payment systems, with the failure each one is there to prevent.
InvariantFails asEnforced 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

0 published · 4 slots reserved · index updates when a date is set

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.

Commissioned in advance. A slot fills with a date when the piece exists; nothing here is dated before then.
SlotTitleWhy it existsStatus
[  ]

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

A filter, not an invitation

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.

Base
Istanbul, Türkiye — UTC+03