{"id":2917557,"url":"https://alion.io/job/payforge-principal-net-engineer","title":"Principal .NET Engineer","company":{"id":4435458,"name":"Payforge","domain":"payforge.ai","url":"https://alion.io/company/payforge","size_band":null,"is_staffing_agency":false,"employer_type":"direct","is_intermediary":false,"listed_via":null,"ats_vendor":"BambooHR","truth_index":null},"role":"Backend","role_family":"Backend","seniority":"lead","employment_type":null,"work_mode":"on_site","remote_scope":null,"remote_scope_basis":null,"remote_working_hours":null,"hiring_geo_confidence":"structured","locations":[],"countries":[],"hiring_countries":[],"hiring_countries_total":0,"salary":null,"salary_estimate":null,"experience_years_min":null,"visa_sponsorship":false,"relocation_package":false,"has_equity":false,"technologies":[{"name":"Apache Kafka","optional":false},{"name":"ASP.NET Core","optional":false},{"name":"Azure","optional":false},{"name":"C#","optional":false},{"name":"PostgreSQL","optional":false},{"name":"RabbitMQ","optional":false},{"name":"Dapper","optional":true},{"name":"Go","optional":true},{"name":"Hangfire","optional":true},{"name":"Linux","optional":true},{"name":"Proxmox VE","optional":true},{"name":"Redis","optional":true},{"name":"Rust","optional":true},{"name":"SQL","optional":true},{"name":"WebSockets","optional":true}],"status":"live","first_seen_at":"2026-10-20T10:58:27Z","employer_posted_date":"2026-10-20","last_verified_at":"2026-10-23T11:24:24Z","board_verified":true,"closed_at":null,"days_open":3,"trust":{"level":"ok","repost_count":null,"flags":[],"days_open":3},"description":"We are looking for a Principal .NET Engineer to join Payforge as part of a very small team responsible for the backend of a client’s live, multi-tenant payments platform. Merchants on the platform take card payments online, through payment links, and - with a new physical terminal about to launch - in shops, restaurants, and venues. Volumes are growing week on week, and card-present traffic will add constant, bursty load from thousands of concurrent devices that cannot be asked to wait. The decisions made now have to hold at several times today’s load, so database performance, correctness under retries, and the cost of every request are commercial concerns rather than housekeeping. This is a hands-on role with no direct reports, by design: there is no separate architecture team, and the engineer who builds a feature designs it. You will work alongside the client’s technical lead on the parts of the system where design decisions have a direct financial consequence.\nKey Responsibilities:\nOwn features end to end - the business conversation, the design, the schema, the API, the tests, the deployment, and the follow-up when something behaves unexpectedly in production.\nBuild and harden online payment flows across multiple acquirers and payment providers, including hosted payment pages, card authentication, provider callbacks, and webhooks.\nKeep a payment and its order consistent when a provider is slow, a callback never arrives, or a customer loses connection mid-checkout, and make refunds and repeat payments safe to retry.\nHelp carry the new card-present terminal product into production: ingest sales, refunds, and settlement data from thousands of concurrent devices and provider webhooks through Kafka into PostgreSQL as set-based batch writes.\nEnsure transaction processing stays correct under bursty traffic, replay, duplicate delivery, partial failure, and rolling deploys, with idempotency and uniqueness guaranteed where they actually hold.\nOwn read performance for merchant-facing pages and reports over hundreds of thousands of rows per tenant, including a two-tier cache (local memory plus a ValKey cluster) with correct invalidation across nodes.\nTreat database performance as a commercial concern: understand what a statement costs, measure it against production-sized data rather than estimating, and treat a slow query as a defect.\nProvide design input early where small savings compound - milliseconds per request, avoided round trips, and avoided reads - including challenging designs specified by others before they ship.\nInvestigate unexplained production behaviour through to root cause, rather than closing work at the first passing test.\nTake part in direct, written code review: give clear, constructive scrutiny and expect the same on your own work.\nManage your own delivery against agreed goals, and flag at-risk dates early rather than on the day.\nSkills & Experience:\nExperience: 10+ years in backend engineering across several companies, technologies, and sectors - enough to have seen more than one way of building a system and watched some of them fail.\nC# and .NET in production (ASP.NET Core; recent .NET versions), in systems with real users and real money or equivalent consequences.\nExperience designing distributed backends across multiple application servers, with a shared cache and a database with a single writer and read replicas.\nReal-world use of queues or event streams (Kafka, RabbitMQ, SQS, Azure Service Bus, or equivalent), including handling replay, duplicate delivery, and partial failure.\nFluency with async and await in .NET, and a clear understanding of the difference between waiting on I/O and consuming CPU.\nStrong PostgreSQL (or similar) skills: reading query plans, choosing what to index and which index type suits a query shape, understanding why an index is or is not used, and recognising when a design will not survive a large tenant.\nExperience with caching in multi-node environments, including invalidation strategies and staleness trade-offs.\nSound judgement on architecture, asynchronous processing, and event-driven systems - including when synchronous is the right answer - and the ability to estimate what a proposed design will cost per request before it is built.\nA habit of measuring performance changes against realistic, production-sized data before shipping.\nPractical, day-to-day use of AI coding assistants and LLMs for writing code, tests, and benchmarks, combined with the engineering judgement to own every design decision and to explain and defend any code you submit, however it was produced.\nComfortable receiving and giving direct written feedback, including being told that an approach should be replaced.\nExperience working in distributed or remote teams, with strong written and verbal communication.\nPreferred Qualifications:\nPayments experience: card processors and acquirers, 3-D Secure, refunds, settlement, and idempotent money movement.\nExperience with card-present or terminal payments, or with integrations such as Worldpay, Stripe, Fiserv, or Verifone.\nDeep SQL and index tuning experience.\nHands-on experience with Dapper, EF Core, Hangfire, Redis or ValKey, and Centrifugo or another websocket layer.\nComfortable on Linux and self-hosted infrastructure (bare metal, Proxmox), including the operational side when something breaks.\nExperience with Rust, Go, or another systems language.\nHas led a team before and would now rather be building.\nExperience in a consultancy or professional-services environment working with client engineering teams.\nWhat we value?\nOwnership - engineers own what they submit. Any AI tooling is welcome; what matters is that the author understands the code and can justify it in review.\nJudgement over tools - AI is used for writing code, tests, and benchmarks, but deciding what to build, how a system fits together, and which trade-off is right stays with the engineer.\nMeasure before you ship - changes that touch the database are benchmarked against production-sized data, and a slow query is treated as a defect.\nDirect, written reviews - feedback is given plainly and in writing, and the same scrutiny is expected in return, including on the technical lead’s own work.\nSmall team, limited process - a short regular sync and no ceremony for its own sake.\nGoal-based work - we agree what is being delivered and roughly when, the time is yours to manage, and a date at risk is flagged early rather than on the day.\nGoing further than the ticket - investigating an unexplained log entry until the cause is found, rather than closing the work at the first green test.\nAbout Payforge\nPayforge is a specialist professional-services company focused exclusively on payments and fintech. We help clients deliver high-quality, scalable technology solutions in an evolving global financial landscape.\nEqual Opportunity Statement\nPayforge is proud to be an equal-opportunity employer. All qualified applicants will receive consideration without regard to race, colour, religion, sex, sexual orientation, gender identity, national origin, disability or veteran status. We welcome applicants from all backgrounds.","description_format":"text","description_chars":7153,"description_truncated":false,"requirements":{"experience_years_min":null,"management_years_min":null,"team_size_min":null,"manages_managers":false,"education":null,"security_clearance":false,"languages":[]},"benefits":[],"hiring_locations":[],"hiring_excludes":[],"relocation_offered":false,"industries":["Financial Services","Science & Engineering","Engineering Services"],"lifecycle":[{"event":"open","at":"2026-10-20T10:58:27Z"}],"visa":[],"liveness":{"score":90,"band":"hot","label":"Hiring now","p_open":1,"p_active":0.903,"p_room":1,"age_days":2,"expected_fill_days":27,"reasons":["conf:3","velocity","win:early"],"computed_at":"2026-10-23T05:54:15Z"},"pay":null,"html_url":"https://alion.io/job/payforge-principal-net-engineer","json_url":"https://alion.io/job/payforge-principal-net-engineer.json","meta":{"generated_at":"2026-10-23T15:12:29Z","cache_seconds":300,"methodology":"https://alion.io/methodology","terms":"https://alion.io/terms","contact":"https://alion.io/contact","api":"https://alion.io/developers","about":"Alion is a live layer of people, companies and AI agents: who they are, whether they are real and active right now, what they do and how to work with them, readable by people and by agents and paid per call.","catalog":"https://alion.io/catalog.json","usage":{"tier":"crawler_verified","counted_by":"address","units_charged":1,"used_today":22884,"day_limit":null,"remaining_today":null,"minute_limit":300,"resets_at":"2026-10-24T00:00:00Z"}},"offers":[{"id":"company.slices","title":"One company in depth, by slice","status":"live","price":{"credits":0.02,"usd":0.002,"plus_per_slice":{"credits":0.05,"usd":0.005}},"unit":"per company, plus each slice with data","note":"the employer in depth","call":{"mcp_tool":"get_company","arguments":{"id":4435458},"rest":"https://alion.io/mcp/rest/get_company?id=4435458"},"human":"https://alion.io/catalog?offer=company.slices&for=job%2Fpayforge-principal-net-engineer"},{"id":"market.stats","title":"A market slice: pay, demand and time to fill","status":"live","price":{"credits":1,"usd":0.1},"unit":"per slice","note":"pay, demand and time to fill for this role and place","call":{"mcp_tool":"market_stats"},"human":"https://alion.io/catalog?offer=market.stats&for=job%2Fpayforge-principal-net-engineer"},{"id":"job.search","title":"Open jobs by role, technology, place, pay and visa","status":"live","price":{"credits":0.02,"usd":0.002},"unit":"per posting in a list","note":"similar open postings","call":{"mcp_tool":"search_jobs"},"human":"https://alion.io/catalog?offer=job.search&for=job%2Fpayforge-principal-net-engineer"},{"id":"company.verify","title":"Is this company real and active right now","status":"pilot","price":null,"unit":"per company","request":{"url":"https://alion.io/catalog/request","method":"POST","body":"{\"offer\": \"company.verify\", \"for\": \"job/payforge-principal-net-engineer\", \"note\": \"what you need it for\"}"},"human":"https://alion.io/catalog?offer=company.verify&for=job%2Fpayforge-principal-net-engineer"}]}