[{"data":1,"prerenderedAt":148},["ShallowReactive",2],{"work-/work/fatca-regulatory-reporting":3,"work-siblings-/work/fatca-regulatory-reporting":125},{"id":4,"title":5,"body":6,"client":103,"confidential":104,"description":95,"extension":105,"featured":104,"meta":106,"navigation":107,"order":108,"path":109,"period":110,"secondary":111,"seo":112,"sitemap":113,"slug":114,"stack":115,"stem":121,"summary":122,"track":123,"__hash__":124},"work/work/fatca-regulatory-reporting.md","Reporting to a foreign regulator out of a core banking system",{"type":7,"value":8,"toc":94},"minimark",[9,14,18,22,25,28,31,35,51,55,69,73,81],[10,11,13],"h2",{"id":12},"context","Context",[15,16,17],"p",{},"First Atlantic Bank is a commercial bank in Accra. I joined in October 2018 as a junior software developer, on the team that builds and maintains the bank's internal applications. It was my first job in a regulated institution, and the first time compliance was something I had to build rather than something another department handled.",[10,19,21],{"id":20},"the-problem","The problem",[15,23,24],{},"FATCA obliges financial institutions outside the United States to identify accounts held by US persons and report them to the IRS. Getting it wrong is not a bug report. It is withholding penalties and sanctions against the bank.",[15,26,27],{},"The account data lived in the core banking system. The report the IRS wanted did not, and nobody was going to assemble it by hand every reporting cycle at the accuracy that regime requires.",[15,29,30],{},"Separately, customers had to leave the bank to pay an electricity bill, which meant the bank saw none of that traffic.",[10,32,34],{"id":33},"what-i-did","What I did",[36,37,38,42,45,48],"ul",{},[39,40,41],"li",{},"Built and maintained an application that interfaces with the bank's core banking system, Oracle FlexCube, taking scheduled extracts and assembling the FATCA return for the IRS.",[39,43,44],{},"Put the assembled data behind a dashboard so the compliance team could reconcile it on demand, in their own time, without a developer sitting between them and the numbers they were accountable for.",[39,46,47],{},"Built and maintained a branch module application and a REST API service integrating the Electricity Company of Ghana payments API, so utility payments could be made through the bank.",[39,49,50],{},"Supported and trained bank staff across the applications the development team had built, which is where I learned that an application nobody can operate is an application that does not work.",[10,52,54],{"id":53},"what-it-cost","What it cost",[36,56,57,60],{},[39,58,59],{},"The data had to come out of a live core banking system. FlexCube is what the bank runs on all day, so it does not hand over extracts on demand. You take them on a schedule it can tolerate, and everything downstream inherits that cadence, including how current the numbers are when compliance opens the dashboard.",[39,61,62,63,68],{},"Reconciliation stayed manual. Compliance opened the dashboard and worked through the numbers themselves, every cycle. That does not scale: the effort grows with the account book, and it lands on whoever is free when the deadline arrives. A year later at ",[64,65,67],"a",{"href":66},"/work/reconciliation-automation","ReachAfrika"," I built the automated end-of-day reconciliation I had not built here, and financial errors fell by over 75%. That is the one I would go back and change.",[10,70,72],{"id":71},"outcome","Outcome",[36,74,75,78],{},[39,76,77],{},"FATCA reporting to the IRS delivered off the core banking system, keeping the bank clear of fines and sanctions.",[39,79,80],{},"Revenue collections and commissions up over 10% after the utility payments integration.",[15,82,83,84,88,89,93],{},"This is the oldest work on the site and the smallest in scope. It is here because the thread starts here: every regulated engagement since, from ISO 27001 and a central bank licence at ",[64,85,87],{"href":86},"/work/remittance-rebuild","Fast Pace Transfer"," to ASVS Level 2 and separation of duties on ",[64,90,92],{"href":91},"/work/provider-agnostic-wallet-layer","custody work",", is the same job at a larger size.",{"title":95,"searchDepth":96,"depth":96,"links":97},"",2,[98,99,100,101,102],{"id":12,"depth":96,"text":13},{"id":20,"depth":96,"text":21},{"id":33,"depth":96,"text":34},{"id":53,"depth":96,"text":54},{"id":71,"depth":96,"text":72},"First Atlantic Bank",false,"md",{},true,9,"/work/fatca-regulatory-reporting","2018 to 2019","advisory",{"title":5,"description":95},{"loc":109},"fatca-regulatory-reporting",[116,117,118,119,120],"Java","C#","Oracle FlexCube","SQL Server","REST APIs","work/fatca-regulatory-reporting","FATCA returns assembled out of the bank's core banking system for the US IRS, plus a utility payments integration that lifted collections over 10%.","engineering","ZTg4dI9eMu0tE4oxcFLyN5MHp9W19AcCjEzwdNnlMfw",[126,128,131,134,137,139,142,145,147],{"title":127,"path":86},"Rebuilding a remittance platform, then getting it licensed",{"title":129,"path":130},"What changes between eight engineers and thirty","/work/scaling-to-thirty",{"title":132,"path":133},"Estimating engineering work you then have to deliver","/work/scoping-fixed-price-work",{"title":135,"path":136},"Making a versioned datastore queryable without losing its history","/work/versioned-data-analytics-replica",{"title":138,"path":91},"Making three custody providers interchangeable behind one wallet interface",{"title":140,"path":141},"Onboarding and identity for a regulated crypto platform","/work/identity-and-onboarding",{"title":143,"path":144},"A promotion framework for a consultancy that does not fit product-company ladders","/work/engineering-ladder",{"title":146,"path":66},"Automating end-of-day reconciliation",{"title":5,"path":109},1789350680299]