top | item 41512930

How to Send a Swift Wire for Developers

66 points| svapnil | 1 year ago |iso20022js.com

28 comments

order

chuzz|1 year ago

Cool to see how swift wire payments works in practice, but using JS floating point numbers for money amounts is a disaster waiting to happen

RedShift1|1 year ago

That seems super dumb indeed. I really wish JSON had an actual decimal type, we already have valid "e" notation (like 10e2), why not have a "d" notation, like 5d3 (meaning 5.3) or 5.3d.

krystofee|1 year ago

It would be if it did any arithmetic. But maybe it works without any computation. Then the fp arithmetic is not a problem. Or could you provide an example?

svapnil|1 year ago

Thanks for bringing this up chuzz - we're actually only using base amounts for the money representation for amounts here. (no $2.3232321), only (amount: 232)

See the https://dinerojs.com/ package to see how money is handled (tldr it's a combination of currency and amount which helps us get to the root #)

svapnil|1 year ago

Hey HackerNews,

I published iso20022js.com a few weeks ago, and I was incredibly surprised by the overwhelming traction it received. I wanted to share more about some payments fundamentals that engineers might need in order to run this package - specifically, how sending these types of bank payments actually works.

miki123211|1 year ago

> I published iso20022js.com a few weeks ago

And from the linked article:

> iso20022.js is the most popular open-source library that you can use to create ISO20022 messages programatically

How's that possible?

acheong08|1 year ago

> you will need to configure the bank to allow for direct transmission. This is a process that your bank will need to complete with you.

How easy is this process? Are all banks required to provide such a service? How about countries outside the USA

paperpunk|1 year ago

This is frankly the actually difficult part of the process. ISO20022 is just a way to send messages, your actual commercial and settlement arrangements still need to be done. Banks are not required to provide such a service, you will specifically need an arrangement with a bank that offers that. Or more likely with an intermediary like Wise which will abstract the distractions like ISO20022 away from you.

svapnil|1 year ago

It is non-trivial. Every corporate bank usually provides some type of treasury services, which is how companies programmatically move money.

As far as I know, this is an international phenomenon. Keep in mind this is corporate banking, not consumer banking.

I'd happy answer any other questions you have @ https://cal.com/woodside/iso20022js

CRConrad|1 year ago

> Are all banks required to provide such a service? How about countries outside the USA

I'd be more worried about banks in the USA than outside. You won't get "No, we only take endorsed and double-signed paper checks!" from a European bank...

hansoolo|1 year ago

But sending the transaction is just ONE part of the ISO. There are a lot of other different messages that are part of the standard: https://www.iso20022.org/iso-20022-message-definitions

svapnil|1 year ago

Great point hansoolo,

ISO20022 has a huge namespace and can do all kinds of things. My current focus on making transaction banking namespaces more accessible (think pain.001 002 and 008) aswell as CAMT files

cyberpunk|1 year ago

This is cool; I'd love to hear more about how the actual transfer of money works e.g clearing, r-transactions and so on if you're looking for a follow up blog ;)

kirmerzlikin|1 year ago

Nice article! It's always interesting to look behind the scenes of payment infrastructure.

BTW, when I tried the interactive demo [1] I noticed that it appended "undefined" to the end of the generated XML. Happens both in Firefox and Chrome, so it doesn't seem to be a browser quirk.

[1] https://www.iso20022js.com/demo

svapnil|1 year ago

Thanks for finding this, I will fix it ASAP!

paperpunk|1 year ago

nit: it’s been called ‘Swift’ for a while, not ‘SWIFT’.