Getting the Transaction Status

From the Kima Backend

Using the Kima Backend, you can get the transaction status by calling two /tx endpoints depending on the type of transaction.

For regular transactions: GET /tx/:txId/status

For liquidity pool transactions: GET /tx/lp/:txId/status

Parameters:

  • txId number: the transaction id number. This is a sequential number assigned to each transaction, NOT the transaction hash (tx_id below).

Success Response:

{
  "data": {
    "transaction_data": [
      {
        "failreason": "",
        "pullfailcount": 0,
        "pullhash": "0x479c907fe8c92970e99fa102d440e805fa7d5d436469d4bbc003dec21349230f",
        "releasefailcount": 0,
        "releasehash": "4r58fVKEL6q6dZ7xdqTUXrL3adVLH23EYavwh7EjavPTu2mCwiqGJqtoWRHiSC17rsVJA2jdcAjF3ZoGbG5e1y86",
        "txstatus": "Completed",
        "amount": "6.00",
        "creator": "kima18lhurd62myjv0c73dfrzej9wamvs4rffugd948",
        "originaddress": "0x366Aa85aFd7e5Cb657748f2142009a04750AD081",
        "originchain": "ARB",
        "originsymbol": "USDK",
        "targetsymbol": "USDK",
        "targetaddress": "64tSEV9Rc5L7LaYDnSwaEgi4YGZMkBr4VnT9S7Va8fNE",
        "targetchain": "SOL",
        "tx_id": 15519,
        "kimahash": "4C9135132C88B05C78B89B208A9655428AF3E86A43D6E4D0680463364037F5DD"
      }
    ]
  }
}

From the Kima Subgraph

Once the transaction has been submitted to the Kima Transaction Backend, you’ll want to display the transaction progress in the frontend. There are 2 GraphQL queries on the Kima subgraph for this purpose.

  • Mainnet Kima Subgraph url: https://graphql.kima.finance/v1/graphql

  • Sardis Testnet url: https://graphql.sardis.kima.network/v1/graphql

Here is a code snippet for regular transactions using plain fetch. See the docs for your favorite graphql client for constructing queries.

const result = await fetch("https://graphql.kima.network/v1/graphql", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    query: `  
      query TransactionDetailsKima($txId: String) {  
        transaction_data(where: { tx_id: { _eq: $txId } }, limit: 1\) {  
          failreason  
          pullfailcount  
          pullhash  
          releasefailcount  
          releasehash  
          txstatus  
          amount  
          creator  
          originaddress  
          originchain  
          originsymbol  
          targetsymbol  
          targetaddress  
          targetchain  
          tx_id  
          kimahash  
        }  
      }`,
    variables: {
      txId: BigInt(txId),
    },
  }),
}).then((res) => res.json());

For liquidity pool transactions:

const result = await fetch("https://graphql.kima.network/v1/graphql", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    query: `  
      query TransactionDetailsKima($txId: String) {  
        liquidity_transaction_data(where: { tx_id: { _eq: $txId } }, limit: 1\) {  
          failreason  
          pullfailcount  
          pullhash  
          releasefailcount  
          releasehash  
          txstatus  
          amount  
          creator  
          chain  
          providerchainaddress  
          symbol  
          tx_id  
          kimahash  
        }  
      }`,
    variables: {
      txId: BigInt(txId),
    },
  }),
}).then((res) => res.json());

Available transaction statuses

These are the current available transaction statuses returned from our blockchain and used along the sdk (more to come).

export enum TransactionStatus {
  AVAILABLE='Available' // Transaction exists in mempool,
  CONFIRMED='Pull_Confirmed' // Funds have been pulled from source and confirmed after waiting n block confirmations,
  PULLED='Pulled' // Funds were pulled but are awaiting confirmation of txHash existence after waiting n block confirmations.
  PAID='Paid' // Funds were released in the target network but awaiting confirmation after waiting n block confirmations,,
  COMPLETED='Completed' // Transaction successfully completed,
  FAILEDTOPAY='FailedToPay' // Funds failed to be released on the target network,
  FAILEDTOPULL='FailedToPull' // Funds failed to be pulled from the source network,
  REFUNDSTART='RefundStart' // A refund has been initiated,
  REFUNDFAILED='RefundFailed' // The process of refunding failed,
  REFUNDCOMPLETED='RefundCompleted' // Refund has successfully completed,
  DECLINEDINVALID='DeclinedInvalid' // Transaction declined because it didn't comply with one or more security measures (feeId, signature, etc.)
}

Last updated