Release Details

Release Date: June 7th, 2024

Release Type

Informational – Optional action from platforms

Summary

Zero Hash has created a new endpoint: POST /liquidity/rfq. Its fundamental purpose is identical to the existing GET /liquidity/rfq endpoint, however the POST variation allows the submission of fees. Platforms should use the same execution endpoint, POST /liquidity/execute, to execute on the quotes requested via POST /liquidity/rfq.


It's worth calling out this endpoint has 3 additional features compared to its GET counterpart:

  • Custom Spreads: A platform that is configured to do so can specify the spread on each individual order via the spread parameter
  • Transaction Fees: A platform that is configured to do so can specify fees on each individual order via the fees object
  • Per-order quote expiries: A platform can specify the quote length of the order. Acceptable values are:
    • 5 seconds: 5s
    • 30 seconds: 30s
    • 1 minute: 1m
    • 5 minutes: 5m
    • 15 minutes: 15m

Action Required

  • POST /liquidity/rfq is immediately available for all platforms that are configured to use our liquidity endpoints.
  • Your platform must be configured by a Zero Hash employee to use custom spreads and fees, so get in touch with your rep if interested in these features.

Endpoints Impacted

  • POST /liquidity/rfq

Example Request

  • Platform (PLAT01) requests a quote on behalf of its customer (CUST01): POST /liquidity/rfq
{
    "side": "buy",
    "participant_code": "CUST01",
    "underlying": "ETH",
    "quoted_currency": "USD",
    "total": "20",
    "spread": "200",
    "fees": [
        {
            "amount": "2.50",
            "name": "fee_1"
        }
    ]
}
  • Zero Hash responds:
{
    "message": {
        "request_id": "9e910f82-4d23-410f-bebd-a3e6e9d93abb",
        "participant_code": "PLAT01",
        "quoted_currency": "USD",
        "side": "buy",
        "quantity": "0.00451975",
        "price": "3871.8955694452126777",
        "quote_id": "9b31abce-6427-45a0-9086-d861a11cdaa7",
        "expire_ts": 1717780227909,
        "account_group": "00SCXM",
        "account_label": "general",
        "obo_participant": {
            "participant_code": "CUST01",
            "account_group": "PLAT01",
            "account_label": "general"
        },
        "total_notional": "20",
        "underlying": "ETH",
        "asset_cost_notional": "17.5",
        "spread_notional": "0.35",
        "spread_bps": "200",
        "fees": [
            {
                "name": "fee_1",
                "amount": "2.50"
            }
        ]
    }
}
  • Platform executes the quote:
{
    "message": {
        "request_id": "94cfc7fb-162e-4a83-beac-cc8861aaf353",
        "quote": {
            "request_id": "9e910f82-4d23-410f-bebd-a3e6e9d93abb",
            "participant_code": "PLAT01",
            "quoted_currency": "USD",
            "side": "buy",
            "quantity": "0.00451975",
            "price": "3871.8955694452126777",
            "quote_id": "9b31abce-6427-45a0-9086-d861a11cdaa7",
            "expire_ts": 1717780227909,
            "account_group": "00SCXM",
            "account_label": "general",
            "obo_participant": {
                "participant_code": "CUST01",
                "account_group": "PLAT01",
                "account_label": "general"
            },
            "total_notional": "20",
            "underlying": "ETH",
            "asset_cost_notional": "17.5",
            "spread_notional": "0.35",
            "spread_bps": "200",
            "fees": [
                {
                    "name": "fee_1",
                    "amount": "2.50"
                }
            ],
            "transaction_timestamp": 1717780227734
        },
        "trade_id": "9d7fe862-e4a0-4a2e-8d66-26f8b70e3c59",
        "status": "Completed",
        "trade_ids_list": [
            "9d7fe862-e4a0-4a2e-8d66-26f8b70e3c59"
        ]
    }
}

Relevant Documentation

Release Details

Release Date: June 3rd, 2024

Release Type

Informational – Optional action from platforms

Summary

Zero Hash has announced a new feature, Prefunded Transfers. These can be used to fund an end customer's account directly on our ledger. The sole use case is taking funds from a funded float account at Zero Hash and transferring funds to an end customer's account.

Action Required

To initiate a prefunded transfer, use the new boolean field called prefunded on the existing POST /transfers endpoint.

Endpoints Impacted

  • POST /transfers
  • GET /transfers - responses that have "parent_link_id_source": "LINK_SOURCE_PREFUNDED_TRANSFER" indicate that the transfer was a prefunded one.

Relevant Documentation

Release Details

  • Release Date: May 29, 2024

Release Type

Informational – Optional action from platforms

Summary

Zero Hash is pleased to announce support an additional options to send Bitcoin. BTC withdrawals can now be sent either on the L1 or L2 Lightning Network by submitting a valid destination address or invoice.

Note that Lightning Network withdrawals are NOT allowed for New York participants at this time.

Action Required

BTC withdrawals on the Lightning Network testnet are immediately available to all platforms in the certification (CERT) environment.

Please reach out to your Zero Hash team to will enable this functionality for your platform in the production (PROD) environment.

Endpoints Impacted

There are no changes to existing endpoints as a result of this launch, however a Lightning Network invoice will need to be input instead of an L1 destination address.

The asset symbol used for these transactions is still BTC however the destination address format will determine the network used.

Relevant Documentation

Please see the full Lightning Network Testing Guide to enabling withdrawals and additional functionality on this network:

Release Details

  • Release Date: May 28, 2024

Release Type

Informational – Optional action from platforms

Summary

Zero Hash is pleased to announce adding support for the SUI blockchain including the ability to buy, sell, deposit, and withdraw the native SUI token.

Action Required

The SUI token is immediately available in the certification and production environments.

The asset symbol for the native token in both environments is: SUI

Endpoints Impacted

There are no changes to existing endpoints as a result of this launch. Use the new SUI symbol to create or view deposit addresses, initiate a withdrawal, request a quote, or execute a trade.

Relevant Documentation

For a full list of supported assets and instruments, please use the links below.

We are pleased to announce that 4 new assets are available for testing in the Certification environment and 2 in the Production environment.


May 3, 2024 - CERT

The following assets are available in CERT to send, receive, buy, and sell:

  • USD Coin on Base (USDC.BASE)
  • USD Coin on Arbitrum (USDC.ARBITRUM)
  • USD Coin on Op Mainnet (USDC.OPTIMISM)
  • Ethereum on the Base Network (ETH.BASE)

May 7, 2024 - PROD

The following assets are available in PROD to send, receive, buy, and sell:

  • USD Coin on Base (USDC.BASE)
  • Ethereum on Base (ETH.BASE)


Further Reading

To see the full list of supported Assets, please refer to our new documentation pages:

Release Information

  • Release Date: May 1, 2024

Release Type:

  • Actionable - Updates required for Platforms
  • Breaking - If appropriate IP and other preventive measures are not made by the relevant dates, Platforms will have newly submitted participants located in certain countries declined by Zero Hash:
    • Existing Participants: The Platform must ensure that any existing participants in the West Bank sell or withdraw all existing assets held with Zero Hash by May 31, 2024.
    • New Participants: Platforms must immediately ensure no new participants located in these jurisdictions are submitted to Zero Hash. Zero Hash will decline any such submitted participants.

Summary

To ensure compliance with its targeted financial sanctions obligations and mitigate identified Anti Money Laundering/Countering the Financing of Terrorism/Countering the Financing of the Proliferation of Weapons of Mass Destruction (AML/CFT/CFP) risks, Zero Hash prohibits or restricts business activity involving certain jurisdictions and countries. Zero Hash also identifies other permitted geographies that are considered higher risk. Zero Hash reviews both of these lists at least annually and based upon relevant changes in legal and regulatory requirements and applicable AML/CFT/CFP risks.

Zero Hash is issuing this notice to inform Platforms and other stakeholders of updates to the jurisdiction and country lists, which are effective within 30 days of this notice (May 31, 2024) unless otherwise noted.

Additions

  • West Bank
  • Germany¶
  • Spain¶
  • Italy¶

Removals

  • The Netherlands

¶ Since November 1, 2023, no new customers have been or will be permitted from Germany, Spain, or Italy until Zero Hash has obtained the necessary licensing. Existing customers have and will continue to be permitted to withdraw/sell existing assets. The West Bank has been added to the list as a result of various new targeted financial sanctions. This restriction no longer applies to The Netherlands as Zero Hash received its license to operate there on March 18, 2024.

Explanation of Treatment of Prohibited and Restricted Jurisdictions

Except as otherwise explicitly noted, Zero Hash will not do business with any entity or person located or formed in a prohibited or restricted jurisdiction. This applies to Platform partners and institutional or individual customers of Zero Hash LLC and Zero Hash Liquidity Services LLC and its various affiliates (collectively, Zero Hash) and the natural person or non-natural person (NNP) customers of any Platform partner.

Handling of Participants in Newly Listed Prohibited or Restricted Countries or Jurisdictions

When a country or jurisdiction becomes listed, all existing Zero Hash direct or indirect business relationships will be revoked (immediately, if required by law or regulation) and accounts closed. Platform participants will be permitted to withdraw/sell their cryptocurrency holdings (unless prohibited by law or regulation).

Process for Restarting Relationships Involving Delisted Countries/Jurisdictions:

When a country or jurisdiction is removed from the list (delisted), Zero Hash will begin to permit the establishment of new business relationships, including with new Platform participants. Establishment of any new relationships will be subject to enhanced due diligence measures , unless the restriction was based solely on Zero Hash first having to obtain a license or registration in that jurisdiction.

Zero Hash is updating its list of Permitted Higher Risk Geographies based upon the FATF’s “Grey List” updates of February 23, 2024, and other public and proprietary assessments of AML/CFT/CFP, fraud, corruption, and other relevant risks:

Additions

  • Kenya
  • Namibia

Removals

  • Barbados
  • Gibraltar
  • Uganda
  • Jordan
  • Panama

Related Documentation

For additional general information regarding the U.S. jurisdictions that Zero Hash supports, please refer to Permitted and Prohibited/Restricted Jurisdictions.

Release Date

Tuesday, April 30, 2024

Updated July 18, 2024


Summary

Zero Hash is incrementally releasing Lightning Network functionality into the CERT environment as these flows pass our internal testing. This document will be updated as new functionality is released.

Note: Lightning Network transactions use the BTC symbol however are NOT available in NY at this time.


Lightning Network Validation

It is important to note some validations in place for Lightning support at Zero Hash:

  • The CERT environment points to Lightning Network's Testnet. If you want to create invoices to test withdrawals in CERT, they will need to be gnerated on Testnet (not on Regtest which is the other test network).
  • Adhere to Zero Hash’s withdrawal amount minimums.
  • Zero Hash does not support units smaller than satoshis such as millisatoshis.
  • Lightning Network invoice lengths can grow to significant sizes depending on the amount of data being encoded. Zero Hash will not accept invoices greater than 1,000 characters long. More information on invoice structures can be found on this page.
  • BTC is the asset symbol used for Lightning Network transactions, where the value being transferred and the Lightning Network fee will be deducted from the participant’s BTC wallet (unless different network fee payor configurations are used).
  • A Lightning Network invoice input as the destination address will specify that it is a Lightning Network withdrawal. If an L1 BTC destination address is used, funds will be sent across the L1 Bitcoin Network.
  • Until LNURL support is added, only BOLT11 invoices will be initially supported for CERT testing.


Timeline of Features in CERT and PROD (Updated May 15, 2024)

Bold items are live and have an expanded explanation section below.


CERT Launch (Testnet)

The CERT launch will happen in iterative releases that unlock additional functionality:

  • April 29: Estimate fee to send payment to BOLT11 invoice on REGTEST
  • May 6: BOLT11 Lightning Network BTC withdrawals via /withdrawals/
  • May 8: Migrate CERT environment to Lightning Network's TESTNET (off of REGTEST)
  • May 21: UMA Deposits and invoice generation
  • May 30: Universal Money Address (UMA) support for deposits
  • July 17: BOLT11 Lightning Network withdrawals via /convert_withdraw/
  • tba: Universal Money Address (UMA) support for withdrawals
  • tba: LNURL Lightning Network BTC withdrawals via /withdrawals/and /convert_withdraw/
  • tba: LNURL and BOLT11 Lightning Network Deposits and invoice generation

PROD Launch (Mainnet)

The PROD launch will happen in weekly releases:

  • May 21: BOLT11 Lightning withdrawals via /withdrawals/
  • May 23: UMA deposits and invoice generation
  • July 18: BOLT11 Lightning Network withdrawals via /convert_withdraw/
  • tba: Universal Money Address (UMA) support for withdrawals
  • tba: LNURL Lightning Network BTC withdrawals via /withdrawals/and /convert_withdraw/
  • tba: LNURL and BOLT11 Lightning Network Deposits and invoice generation


CERT Release Details (Live)


Estimate Network Fee

To estimate the cost to send a payment to an invoice, call GET /withdrawals/estimate_network_fee.


BOLT11 Lightning Network BTC Withdrawals


To send BTC that is already held in a wallet:

  • Lock a network fee and return a quote ID by calling GET /withdrawals/locked_network_fee.
  • Execute the locked network fee quote by calling POST /withdrawals/execute. The destination address needs to be a Lightning Invoice to identify the transaction as one that should be sent on the Lightning Network.

To convert fiat to BTC then send to a Lightning invoice using convert_withdraw:

Convert_withdraw can typically be used ByTotal or ByQuantity. For Lightning Network invoices, only ByQuantity is allowed.

  • Get RFQ quote using POST /convert_withdraw/rfq
  • Execute the Quote by calling POST /convert_withdraw/execute

For Lightning Network withdrawals, the destination address must be a Lightning Invoice and

More information on convert_withdraw can be found using this guide.


Generate UMA Invoice

An invoice must be generated in order to receive a deposit over the Lightning Network. This step currently assumes you would like to use your own domain and manage your own UMA server, which will require working with the Zero Hash team to setup (support for ZH-managed available soon).

Once your UMA server is setup, a user must first be registered by your server and then sent to Zero Hash via POST /deposits/uma

Once successfully registered, that participant can then generate an invoice in CERT by calling: uma.cert.zerohash.com/.well-known/lnurlp

Note: if you will see the error message "UMA recipient not found" if attempting to generate an invoice without registering the participant first.


Update UMA username

After an UMA address is registered, it is possible to later update that address using the PATCH /deposits/uma endpoint.






PROD Release Details (Live)

Note that it is recommended to test these flows in CERT first. All platforms must be allow-listed to use Lightning Network functionality in Production.


Estimate Network Fee

To estimate the cost to send a payment to an invoice, call GET /withdrawals/estimate_network_fee.


BOLT11 Lightning Network BTC Withdrawals

To lock a network fee and return a quote ID, call GET /withdrawals/locked_network_fee.

To execute a locked network fee, call POST /withdrawals/execute. The destination address should be an invoice address to identify the transaction as one that should be sent on the Lightning Network.


Generate UMA Invoice

An invoice must be generated in order to receive a deposit over the Lightning Network. This step currently assumes you would like to use your own domain and manage your own UMA server, which will require working with the Zero Hash team to setup (support for ZH-managed available soon).

Once your UMA server is setup, a user must first be registered by your server and then sent to Zero Hash via POST /deposits/uma

Once successfully registered, that participant can then generate an invoice in PROD by calling: uma.zerohash.com/.well-known/lnurlp

Note: if you will see the error message "UMA recipient not found" if attempting to generate an invoice without registering the participant first.




Upcoming Features (Not Yet Live)

Upcoming features that will be updated and marked LIVE once they can be tested in CERT:

  • [Upcoming] LNURL Lightning Network withdrawals via /withdraw/
  • [Upcoming] BOLT11 and LNURL Lightning Network withdrawals via /convert_withdraw/
  • [Upcoming] Lightning Network Deposits
  • [Upcoming] Universal Money Address (UMA) Domain Registration
  • [Upcoming] Universal Money Address (UMA) Withdrawals
  • [Upcoming] Universal Money Address (UMA) Deposits


Additional Information


Invoice Formats

There are different types of Lightning Network invoices. Zero Hash plans to first support BOLT11 and then add support for LNURL and UMA. Initial testing in April will only support BOLT11 with the remainder added according to the timeline above.


Launching in Production

CERT functionality is open to all platforms testing in this environment however PROD must be enabled by Zero Hash. If you wish to enable Lightning transactions in your PROD environment please contact the Zero Hash team and we will work with you to enable this network. Please see the following note if you also wish to enable UMA functionality.


Universal Money Address (UMA) Domains

UMA allows you to register end customers to a specific human-readable handle such as an email address (such as $[email protected]). By default, participants will be registered to a Zero Hash-owned domain. If you wish to use your own domain, or want a custom sub-domain instead of the Zero Hash default, please reach out to your Zero Hash team.


Questions

What if I have additional questions? Please reach out to your Zero Hash team who will be happy to support you or refer to one of the following documents:

Release Date

Thursday, April 18, 2024

Summary

Zero Hash is close to launching BTC withdrawals across the Lightning Network. This note serves as an update to the initial Lightning Network support note from January 16, 2024. The launch will occur in phases, each unlocking additional functionality:

  • April: Lightning Network Withdrawals to invoices
  • June: Universal Money Address invoice generation
  • Q3: Lightning Deposits, UMA support for withdrawals and deposits

API Endpoints

Are there new API endpoints I need to use?

  • NO, the API will use the existing withdrawals endpoints (/withdrawals/ and /convert_withdraw/) to perform these functions. For Lightning Network withdrawals, input an invoice address instead of a destination address. Destination addresses will continue to send BTC across the Bitcoin Network.
  • For Deposits and additional functionality, please refer to the Lightning Network Testing Guide

Asset Symbol

Is there a new asset symbol?

  • NO, Zero Hash's API will use the existing BTC symbol because that is the asset being sent across the Lightning Network. The destination or invoice address format that is input will be used to differentiate between networks automatically.

Lightning Balance

Will my platform or end customers have a separate Lightning balance?

  • NO, BTC is being transferred and will be deducted from the wallet before being sent.
  • When deposits are enabled in a later phase, any BTC sent across the Lightning Network will appear in the BTC wallet.
  • In the case of /convert_withdraw/ where an RFQ purchase is completed before the withdrawal, BTC is always the asset being purchased regardless of which network (Bitcoin or Lightning) is used.

Destination Address

What do I input as the destination address?

  • For Lightning Network withdrawals, input the destination INVOICE address generated to send BTC across the Lightning Network.
  • For regular BTC withdrawals, input an L1 destination address to continue to send BTC across the Bitcoin Network.
  • The address formats for invoices and addresses are unique, and the format will determine the intended network that is used.

Assuming the destination crypto address below is an LNURL invoice, a frontend could look like the following where the network would be inferred and would not need to be selected but is shown for illustration purposes.

Advantages of Using Lightning Network

What is the advantage of using Lightning Network to send BTC?
The Lightning Network is designed to facilitate fast and inexpensive transactions compared to Layer 1 blockchains like the Bitcoin Network. It achieves these goals by enabling network participants (nodes) to create channels with each other. When payments are made, they route along these paths. Note that network fees on the Lightning Network increase with the amount of value being sent, so for larger amounts a network fee estimate should be called for each network to determine the optimal network to use.

Channel Management

Do I need to do any channel management?
NO - Zero Hash abstracts away the complexity of Lightning Network channel management. You only need to worry about supplying the correct invoice address to the endpoints you are already using!

Supported Invoice Formats

What invoice formats are supported?
There are different types of Lightning Network invoices. Zero Hash plans to support withdrawals for two of these initially at launch: BOLT11, UMA, will follow in June, and LNURL in Q3.

Invoice Generation for Deposits

When will I be able to generate invoices in order to receive deposits?
The ability to generate invoices to receive deposits from the Lightning Network will follow the launch of withdrawals and is planned in June for UMA and Q3 for non-UMA Lightning Network deposits.

Support for UMA

Do you plan to support withdrawals and deposits using UMA?
Yes, the ability to register UMA names and use this format for Lightning Network transactions is planned for June. Zero Hash is open to beginning discussions with your team if this is something you may be interested in offering to your customers.

Geographic Restrictions

Will Lightning transactions be enabled in New York?
No - at this time Lightning Network transactions are not allowed for New York participants.

Additional Questions

What if I have additional questions?
Please reach out to your Zero Hash team, who will be happy to support you.

Release date

Apr 3, 2024

Release type

Actionable – Updates impact platform experience

Summary

Zero Hash is introducing identity checks for ACH account creation, along with fraud and risk checks for ACH transaction requests.

Identity checks ensure that the Zero Hash participant on file matches the bank account owner information. Zero Hash conducts fuzzy matching with Plaid data to determine if the account is safe to use or not.

Risk checks help mitigate return risk for platforms by ensuring money is only moving when authorized. Risk rules guarantee that an excessive number of bank accounts aren’t linked for a single participant, multiple transactions are not in flight at the same time, and transaction limits are not exceeded.

With both identity checks and risk rules, Zero Hash is introducing new statuses to external accounts and to ACH transactions.

Action required

Identity checks

When reaching POST /payments/external_accounts you will first receive a “pending” status in the API response. There will be subsequent webhooks with external account updates, such as “approved”, to let you know the external account is ready for use.

Note: This means there will be a delay between requesting a linked bank account and it being available for use. Delays are typically between 1 and 20 seconds.

External account statuses

The following external account statuses are emitted via webhook. Platforms are notified at account creation and at any point throughout the lifecycle of the account.

StatusDefinition
pendingAccount creation requested, basic validations passed, and Zero Hash is running identity checks.
approvedIdentity checks passed and the account is created and ready for use.
rejectedIdentity checks failed and the account cannot be used.
closedEither the account was returned as closed when making a payment request, or the end customer actively closed their account.
lockedZero Hash risk and compliance team was alerted to suspicious activity and locked the account for further investigation.
disabledZero Hash risk and compliance team investigations resulted in a positive hit of suspicious activity and the team determined that the account can no longer be used.

Note: Most often lock and disable actions will be at the whole participant level, rather than individually at the account level. See Participant status updates for more.

Risk checks

Platforms may or may not be subject to certain risk checks. An evaluation is done when onboarding with Zero Hash to gauge ACH risk. Based on this risk, certain rules are applied for a launch period and throughout a platform’s ACH program.

Potential rules

Rules may include:

  • Count of linked bank accounts
  • Count of transactions over a certain period
  • Count of transactions in flight
  • Daily and weekly transaction amount limits
  • Debit (from bank account) and credit (to bank account) amount limits
  • +others

Response based on rules

If no rules are triggered, the request proceeds and platforms see results based on the processing of the account creation or transaction requests. If rules are triggered, platforms receive messages detailing the rule that was hit.

For external accounts, if risk rules are hit, then the account is not created and platforms receive an error message.

Sample response with error for external accounts:

{
  "errors": [
    "account rules: failed max_account_number(accounts_count_by_participant)"
  ]
}

For transaction requests, Zero Hash will respond to the request with a “submitted” status. We will then run risk checks. If no rules are hit, the transaction proceeds as expected. If rules are hit, Zero Hash updates the transaction status to “rejected” and emits a webhook with the updated status.

Sample webhook with reject for transaction request:

{
  "participant_code":"ABC123",
  "type":"debit",
  "transaction_id":"0220358e-6053-43e1-9f94-bb1a09ff2fc7",
  "payment_status":"rejected",
  "rejected_reason":"max_transaction_amount(max_transaction_amount_per_transaction)"
}

Webhooks

Platforms are notified of status updates via webhook. Platforms should ensure they’re subscribed to participant status, external account status, and ACH payment status webhooks.

For more information, please refer to our public documentation.

Endpoints impacted

  • POST /payments/external_accounts – identity and risk checks
  • POST /payments – risk checks
  • POST /payments/execute – risk checks [new endpoint coming soon]
  • Webhooks – identity and transaction status updates

Coming soon

Closing linked bank accounts

In the coming months, Zero Hash will add an endpoint for closing an account connection. This means that end customers can request removal of a specific bank account for ACH payments.

Expanded risk rulesets

Zero Hash is continually improving transaction monitoring and may expand on request reject reasons in the coming months.

Release date

April 2nd, 2024

Release type

Informational - Optional action from platforms

Summary

Introducing a new set of dedicated endpoints that allows platforms to offer an alternative funding method to their customers. Deposits are automatically converted to USD, allowing you to instantly credit a customer's balance. Fund with Stablecoins can live side-by-side next to card, wire, ACH, etc.

Scope

This launch includes the API offering only; SDK to be released at a later date.
The following assets and networks will initially be supported:

  • USDC.ARBITRUM
  • USDC.AVAX
  • USDC.ETH
  • USDC.OPTIMISM
  • USDC.POLYGON
  • USDC.SOL

Action required

If interested in Fund with Stablecoins, please reach out to your Zero Hash contact.

Endpoints impacted

  • POST /participants/customers/new
  • POST /fund/rfq
  • GET /fund/transactions
  • GET /assets
  • New webhook event*