To bridge the world's financial infrastructure, Stellar makes it easy for regulated financial institutions to set up anchor services, which are fiat on/off ramps for the network. Anchors accept deposits and withdrawals via traditional rails, and convert them to and from digital currency. They also interoperate with one another — and with other Stellar-built applications — to empower users to transact across borders and across currencies.
Currently, there are two standard transaction flows Stellar anchors and applications rely on to interoperate with each other, and for each, there is a technical spec explaining how to set up and consume a set of uniform APIs:SEP-24 specifies how anchors interoperate with wallets to allow users to deposit and withdraw assets. SEP-31 specifies how anchors interoperate with other anchors to allow users to make bank-to-bank cross-border payments.
If you're building an application, you can think of these two different flows as creating two different experiences for your end users. With SEP-24, your users interact directly with the anchor service you’ve integrated when depositing or withdrawing funds. If a user sends a remittance payment to another user, for example, the receiver needs to actively withdraw their digital asset balance to end up with money in the bank or cash in hand.
With SEP-31, your users will only ever interact with your application when depositing or receiving funds. This is because the anchor services you have integrated communicate the necessary KYC/AML details directly, and execute the transaction on behalf of the users on the back-end, as seen in more traditional remittance or corporate payments.
If you're building on Stellar and want to take advantage of the worldwide network of anchors, you'll likely need to implement one or both of these standards. To help you understand which one applies to your use case, this post offers high-level explanations and po...