Sellix for Platforms

One of the latest features we have released is the Wallet for Platform.

It enables platforms and marketplaces to issue non-custodial wallets to their merchants, then create payments from those wallets and charge merchants any custom fee whilst doing so.

It essentially is Stripe Connect but for Cryptocurrencies.

GitHub Repository

See the README and documentation for the Wallet for Platforms, now released in closed access.

Logic flows

createMerchant

  • implementation here
  • the platform frontend calls the platform server to create a new user that will be associated with the Sellix merchant_id
  • the platform server calls Sellix API using the Sellix API key (/wallet/createWalletMerchant) that returns a merchant_id and a merchant_token that will be used to authenticate the merchant
  • the platform frontend will render Sellix Wallet’s /setup page in an iframe with the merchant_token as a query param
  • the merchant will proceed with a regular wallet setup
  • when the setup is completed the wallet makes a call directly to Sellix API (instead of using postMessage) to upload the addresses using the merchant_token:
    • /wallet/address for all the primary addresses
    • /wallet/reusable_addresses for NANO and SOLANA reusable addresses
  • Concordium will not be set up at this point because it requires a different setup flow (see below)

getMerchantDashboard (merchant sees his wallet/dashboard)

  • implementation here
  • the merchant calls the platform server to get the wallet URL
  • the platform server calls Sellix API using the Sellix API key (/wallet/getWalletMerchant) that returns a merchant_id and a merchant_token that will be used to authenticate the merchant
  • the platform frontend renders the wallet iframe using the wallet URL with the merchant token
  • the wallet uses the merchant token (instead of receiving postMessage) to make the /wallet/self API call to get the merchant addresses created during the setup phase
  • the wallet uses the merchant token (instead of receiving postMessage) to make the /wallet/estimate/<currency>/reusable_addresses API call to check if there is a need to upload new addresses
  • now the wallet is able to perform the following operations in a seamless way like you would do in the Sellix dashboard: