Skip to main content
Confirms a deposit at the Hypermid bridge contract. Only needed for some PulseChain swap routes — the quote response tells you when.
When is this needed? Only when the quote response includes an afterStep1 field. Most swaps don’t need this — you just sign a transaction and you’re done.

When to Use This

  1. You called GET /v1/quote with toChain=369 (PulseChain) and a non-stablecoin source token
  2. The quote response included afterStep1 with signing instructions
  3. You signed and broadcast the swap transaction (Step 1)
  4. Now you need to confirm the deposit so Hypermid can bridge it automatically

Parameters

txHash
string
required
The confirmed transaction hash from Step 1.
fromAddress
string
required
The sender wallet address. Must match tx.from of the transaction.
toAddress
string
Recipient wallet address on PulseChain. Defaults to fromAddress.
outputToken
string
required
Desired output token on PulseChain (e.g., 0xA1077a294dDE1B09bB078844df40758a5D0f9a27 for PLS).
destinationDomain
number
Destination chain domain. Default: 369 (PulseChain).
signature
string
required
Wallet signature authorizing the routing. Generated by signing the data from afterStep1.eip712 in the quote response.

Full Example

// 1. Get a quote
const quote = await client.getQuote({
  fromChain: 8453, toChain: 369,
  fromToken: "0x0000000000000000000000000000000000000000", // ETH
  toToken: "0xA1077a294dDE1B09bB078844df40758a5D0f9a27",  // PLS
  fromAmount: "1000000000000000",
  fromAddress: "0xYourWallet",
});

// 2. Sign the swap transaction
const txHash = await wallet.sendTransaction(quote.data.steps[0].transactionRequest);
await publicClient.waitForTransactionReceipt({ hash: txHash });

// 3. If afterStep1 exists, confirm the deposit
if (quote.data.afterStep1) {
  // Sign the authorization (gasless — no transaction cost)
  const signature = await wallet.signTypedData({
    ...quote.data.afterStep1.eip712,
    message: { ...quote.data.afterStep1.eip712.message, txHash },
  });

  // Confirm with the API
  await fetch("https://api.hypermid.io/v1/inbound-receiver/register", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      ...quote.data.afterStep1.body,
      txHash,
      signature,
    }),
  });
}

// Done — Hypermid handles the rest (~5 min)
{
  "data": {
    "id": 42,
    "usdcAmount": "4985000",
    "status": "USDC_ARRIVED",
    "message": "Deposit verified. Bridge will execute automatically within ~5 minutes."
  }
}