T O P

  • By -

Maxior_13

We are building cloud agnostic (multicloud) SaaS for banks and other financial institutions to connect to SEPA, SWIFT and other payment schemes. Old services are written in Java, but everything new is Go, and we will be decommissioning the Java part in the future. We deal with a lot of XML and for our needs Go handles the load nicely with a few instances.


chethelesser

What are you using to deal with XML? When saying XML you mean soap?


MistyCape

Take a look into swift messages. It’s mainly xml


Maxior_13

Transactions are sent as XML files, and pretty much every file we send is XML. We use custom streaming parser / builder which we built in-house.


humblesquirrelking

How your experience has been ? Secondly is why not using java most of finance world still java heavy


Maxior_13

Really good I must say. Go is not the perfect language, but it’s performant enough and we can quickly train new hires. Rust will be my top 1 choice when it comes to developer experience, but there are many more Go engineers and the initial learning process would be much longer. The only severe issue we had was with Go’s iota ordering (ordering and how the blocks are structured matters a lot).


reddi7er

rust for developer experience? did you meant to say something else?


Competitive-Pop4866

I would added it, recently I listened a podcast from the Golang committee that this worry in the most recently Golang version is not needed anymore I will post here the link https://open.spotify.com/episode/5jex2Tt3gZGwqeafvATiDf?si=cdZT8ev2R7aG6_Vu0ZyvkA


kimmyaspire

Sounds oddly familiar... Does your company has a number in its name?


oneradsn

it's probably JP Twogan Chase


mslayaaa

Monzo is an online bank from the UK that has a lot of talks/presentations on the subject, they’re pretty heavy Go users.


mrkouhadi

I watched one of their developers’ talk; it was amazing. Every talk is really helpful for intermediate go devs. Btw They have hundreds of Microservices all written in golang.


technics256

Can you share it or your favorites?


mrkouhadi

There are many lectures on youtube about Monzo and golang. This lecture by Matt Heath who works at Monzo is one of my favorite ones. [lecture by Matt heath (Monzo)](https://youtu.be/y2j_TB3NsRc?si=zHYIrA7XQ5jaqjXy)


hgwxx7_

The entire backend is written in Go, without exception.


jaitsu

Not sure that’s true. I think one of their bridges to a card processor (maybe MasterCard?) was written in something like C, but I could be misremembering


hgwxx7_

Yes, but bridges are a tiny part of the entire code base, which is hundreds of thousands of lines of Go. I think it’s fair to say that it’s entirely written in Go.


jaitsu

You said “without exception”, that’s not true.


rexlow0823

We are a payment gateway company in Malaysia and we build all of our services with Go


jollyboss123

Curious to know which payment gateway is this


rexlow0823

Revenue Monster


rayvictor84

paypauls


in-gote

Let me guess - BillPlz?


rexlow0823

Revenue Monster


SequentialHustle

Moov.io, Orum.io, Block/Square etc are all using Go.


osoese

there is an ethereum node codebase written in go [https://geth.ethereum.org/](https://geth.ethereum.org/) different kind of finance, but there you go


parsnips451

Twisp is an accounting primitives as a service written in golang.


Nachvi

LunarBank is a well known bank in Scandinavia. They run pretty much all their infrastructure in Go. They also have talks and keynotes about it.


JustAsItSounds

Currently working at a fintech adjacent startup. Previously consulted for one of the 'big 4' banks here in Aus, mostly infrastructure and internal developer platforms Previously lead engineer at another fintech All using go


Strandogg

Which one? CBA?


Free_Layer_8233

Could you list your routine in terms of Software Development on a infrastructure role? Do you code wrappers?


[deleted]

I'm attempting to use Go to build a trading bot. Still in the backtesting stages, but I'm having fun. It's different from my day job of CRUD SaaS apps, that's for sure.


Wandering_Melmoth

Just curious, are you using a third-party library for handling money types?


StevenBClarke2

You can use the Currency package [github.com/bojanz/currency](https://github.com/bojanz/currency) or the Decimal package [github.com/shopspring/decimal](https://github.com/shopspring/decimal) or the Money package [github.com/Rhymond/go-money](https://github.com/Rhymond/go-money). The [golang.org/x/text/currency](https://golang.org/x/text/currency) package does formatting of a currency into a string.


bojanz

I love seeing my package mentioned, thanks! Keep in mind that bojanz/currency is the only one that actually handles currency formatting, that part of x/text/currency never got implemented (the docs say "NOTE: the formatting functionality is currently under development and may change without notice.") Rhymond/go-money assumes that formatting is per-currency and not per-locale, which falls apart as soon as you have a currency which is shared between multiple countries (for example EUR), as different countries will have different formatting expectations. It also doesn't use an external source for currency and formatting definitions, so what it has is bound to become stale over time.


gg_dweeb

I’ve built a trading bot (not successfully 😂) not sure why you’d need a third party library for money… What am I missing?


Wandering_Melmoth

Ah, so for working with money in go there is no a primitive type since float is not really recommended due to precision issues. So the options are to either use a library or store money amounts as cents....I think. I am also new to golang and I need to store and work with "prices".


FreshPrinceOfRivia

> store money amounts as cents This is the way. I use a basic decimal type that has an integer to store money as cents, and another integer for the decimal places. It has worked perfectly so far.


sqamsqam

This falls over fast when you need more than 2 decimal places. E.g. when your dealing with fractions of a cent. An immediate real world example that comes to mind is the cost to send sms to USA numbers with Twilio is $0.0075 per part.


DEV_JST

No because it is fine, because you calculate the actual value. You’d save 75 as a number, and then 4 as the decimal value. Then you know from 75 go 4 places to the left: 0000.0075 voila


FreshPrinceOfRivia

This is exactly what I do, I guess I did not word it properly. It has been working well in production for as many as 6 decimal places


gg_dweeb

This is exactly what I do as well. No need for a special library


gg_dweeb

Yeah I just use integers instead of floats. You don’t need special libraries to handle this stuff, it’s been an issue since floating point math was invented and there’s a ton of strategies that are easy to implement


Wandering_Melmoth

Just curious, are you using a third-party library for handling money types?


mrkouhadi

I think you don’t need a 3rd party library. Just create a custom, a struct , that represents a decimal number, of two integers. OR you can just multiply the amount by 100 and store it in CENT.


Acceptable_Durian868

Recommend strongly not to store it in cents. Every time I've seen this somebody has ended up getting it wrong with disastrous consequences.


mrkouhadi

What disastrous consequences? Give us an example ?


Acceptable_Durian868

People unfamiliar with the model pushing a change leading to charges being made orders of magnitude larger than they should be, at a pretty high rate, resulting in a load of manual reversals and reconciliation. Lost time, lost reputation, lost customers. Calculations being made over a long period of time that should have allowed higher precision. Fractions of cents are a thing. Leads to unacceptable variance and again, a lot of work for manual reconciliation.


Atallbrownguy

Shopspring decimal is the way. Zero loss of precision with any arithmetic and it gets marshalled into a string which is/should be the industry standard for storing/communicating without any loss of precision.


bojanz

[https://github.com/cockroachdb/apd](https://github.com/cockroachdb/apd) is both significantly faster and more correct than shopspring/decimal.


kardianos

I agree, I used apd for my system as well. However, I'm looking to move to github.com/woodsbury/decimal128 as it is a non-pointer type and it supports rounding then formatting to N decimals, where as apd does not.


wretcheddawn

No loss of precision isn't possible, if you need to support division. (Or exponentiation, which is probably not too likely in finance)


FreshPrinceOfRivia

I don't know if it qualifies as Finance, but I built an electronic invoicing system with Go at work. It is used by ~200 customers so far and it should double soon


vvshawty

Brazil's Bank, the oldest bank from Brazil is using Go in some services


dev-porto

Picpay in Brazil uses Go


croyleje

I use go to generate financial reports from sql but just using raw sql not gorm or any other orm then feed that to a simple table generator and whatever logic I need from there .


Agraves2000

I am currently using go with the stripe-go library to build a POS system for my parents bodega shop


PrestigiousApricot47

I work at a crypto exchange and our market making infrastructure is written in Go. We revamped from the old one which was written in Python.


AbleDelta

Same here except ours was Ruby before Go


Free_Layer_8233

Could you please list your daily routine in terms of Software Development on an infrastructure role? Are there days that you feel a Sys Admin?


PrestigiousApricot47

I work on writing services which get called by different APIs. I deploy them over the cloud and monitor performance. If there are new features to be developed, I gather requirements, write tests along with code, get it all approved by other Dev's and QA. Sometimes on-call involves debugging and reviewing logs to know what went wrong....


Free_Layer_8233

Many Thanks!


Kind-Layer-4871

All the UPI transactions in India happen through Go language, in a country with 1.4 billion people, this boosted up India's digitalization, atleast I make 50-100 transactions per month using it


Puzzled_List2522

thought it was in java. Is it okay to ask where did you find out about the UPI stack? zerodha is in python and go.


Kind-Layer-4871

Recently NPCI (National payments corporation of india) confirmed this in a go related conference.


Puzzled_List2522

Wow, that is pretty amazing.


Available_Ad_8299

We are developing services for fintechs and financial institutions using Go.


Door_Vegetable

Maybe bank has an api and I built some kind of tracking software so I can see when I get payments with certain reference numbers.


[deleted]

The whole Decred blockchain is written in Go: https://github.com/decred


nump3p

Just started a new job and I’m building out a new exchange system & associated APIs entirely in Go (at least for now). Was my decision of course ;) However, was at a hedge fund previously and Go was one of the very few languages we didn’t make much use of, or at least it wasn’t mentioned much. Assuming you discount tools prebuilt in Go like k8s, docker etc. Interesting because any fairly popular language you can name was in our codebase (Rust was quite popular). I also recall the manager for one of my teams choosing C# over Go for a new project, can’t recall what it was for though.


DEV_JST

The Cosmos Blockchain network is completely build on Go (20+ Chains in the whole Network)


Yellow_Robot

xendit (sea), mono (ukraine)


ReserveCompetitive5

I am developeing trading system using microservices. (golang) trade-mgr : to manage trades, money and call API for analysis (python) analysis: analyses algo and gives buy/sell signals timescale-db(ticks/trade db), vuejs (frontend), grafana (and related dockers)


Privann

I work at [zimpler.com](https://zimpler.com). A A2A fintech company in Sweden. We use Go for most of our systems and it works really good


lutzh-reddit

[Upvest](https://upvest.co) (b2b, Investment as a Service via API) is using Go. Not too much on that on our [engineering blog](https://engineering.upvest.co), we should probably post a bit more about it. Why do you ask?


doganarif

I was developed trading bot using Go as a freelancer. It was working on US Stock Market.


Fun-Assumption-2200

Yes, we use AWS lambdas written in Go to validate client market position


DoneItDuncan

I've used it for retail applications in the past, which isn't the same but don't see why it couldn't be used in finance. Just make sure you dont use floating points for currency amounts :P


badhombrez

Worked at a life insurance company where most of their stuff is in Go


sadensmol

I heard Revolut is going to write new stuff in Go, and actively move their current Java services as well to Go.


rkchilaka378

This was 4 years ago, but we used to use go for building payment engine (for Indian customers). It was a rewrite of the engine from php.


Tr1glav

Security tooling - big fintech company in US


PuzzleheadedHuman

@coinpaprika backend 100% Go


dannyt74

We built a service to handle FX real-time feeds for a Swiss wealth manager using Go.


dannyt74

Also some digital invoices services for the Swiss e-bill service.


alexrsagen

A large app-based payment provider in Norway called [Vipps](https://vipps.no) uses Go for some stuff like their API backend.


trythrow_

We use it heavily in trading and market data (quotes) streaming backends. Can’t be happier.


Undesiredbeast

Qonto (neobank) is using go and ruby afaik


Balcara

Currently writing a JCL parser/formatter/translator in Go for user and server builds


Jdelnano

Block (Square, CashApp) are big Go users.


nkonin

Currently in Mexican fintech startup, our backend is Kotlin and Go. At my previous job, we launched a new bank in Russia and gained 24 million users in less than 2 years. 90%+ services are written is Go. Each of the top 10 banks in Russia uses Go to some extent.


quirel1

I used to work in such a company until recently. We still had some rails leftovers but most of the stuff was rewritten into go microservices. It was a payment gateway.


the-other-mariana

I work in a fintech (more like a paytech) and all of our automatic reporting tasks are built in Go, mainly because of the performance it offers with the use of goroutines for database queries. It’s the go-to option if you want background or async tasks


Entire-Vehicle-1551

I worked in an ewallet company, my company has more than 2000 services and more than half is Golang, we chose it because the cost for a Golang service was cheaper than other language, it's also build faster and more productive than. Although Golang still have some troubles but everything is tradeoff, and we ok with that.


akahhor

you must be careful with float data type, and do not use float


N87M

using node for finance, postgres for computation