> ## Documentation Index
> Fetch the complete documentation index at: https://cantonfoundation-generated-reference-full-stack-preview.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /v0/wallet/transfer-offers/:tracking_id/status

> Check the status of a transfer offer with a given tracking id.

<div class="x2mdx-ref-page x2mdx-ref-page--operation x2mdx-ref-page--manual-api" />

<div class="x2mdx-ref-hero">
  <p class="x2mdx-ref-summary">Check the status of a transfer offer with a given tracking id.</p>

  <div class="x2mdx-ref-badges">
    <span class="x2mdx-ref-badge x2mdx-ref-badge--protocol">OpenAPI</span>
  </div>
</div>

<RequestExample>
  ```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl --request POST \
    --url 'https://example.com/api/validator/v0/wallet/transfer-offers/{tracking_id}/status' \
    --header 'Authorization: Bearer $TOKEN'
  ```

  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import json
  import requests

  url = "https://example.com/api/validator/v0/wallet/transfer-offers/{tracking_id}/status"
  headers = {'Authorization': 'Bearer <token>'}
  response = requests.request("POST", url, headers=headers)

  print(response.text)
  ```

  ```javascript JavaScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  const response = await fetch('https://example.com/api/validator/v0/wallet/transfer-offers/{tracking_id}/status', {
    method: 'POST',
    headers: {
    "Authorization": "Bearer <token>"
  },
  });

  console.log(await response.text());
  ```

  ```php PHP theme={"theme":{"light":"github-light","dark":"github-dark"}}
  <?php
  $curl = curl_init();

  curl_setopt_array($curl, [
      CURLOPT_URL => 'https://example.com/api/validator/v0/wallet/transfer-offers/{tracking_id}/status',
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_CUSTOMREQUEST => 'POST',
      CURLOPT_HTTPHEADER => [
          "Authorization: Bearer <token>"
      ],
  ]);

  $response = curl_exec($curl);
  echo $response;
  ```

  ```go Go theme={"theme":{"light":"github-light","dark":"github-dark"}}
  package main

  import (
    "fmt"
    "io"
    "net/http"
  )

  func main() {
    req, _ := http.NewRequest("POST", "https://example.com/api/validator/v0/wallet/transfer-offers/{tracking_id}/status", nil)
    req.Header.Set("Authorization", "Bearer <token>")
    response, _ := http.DefaultClient.Do(req)
    defer response.Body.Close()
    body, _ := io.ReadAll(response.Body)
    fmt.Println(string(body))
  }
  ```

  ```java Java theme={"theme":{"light":"github-light","dark":"github-dark"}}
  import java.net.URI;
  import java.net.http.HttpClient;
  import java.net.http.HttpRequest;
  import java.net.http.HttpResponse;

  var request = HttpRequest.newBuilder()
      .uri(URI.create("https://example.com/api/validator/v0/wallet/transfer-offers/{tracking_id}/status"))
      .header("Authorization", "Bearer <token>")
      .method("POST", HttpRequest.BodyPublishers.noBody())
      .build();
  var response = HttpClient.newHttpClient().send(
      request, HttpResponse.BodyHandlers.ofString());
  System.out.println(response.body());
  ```

  ```ruby Ruby theme={"theme":{"light":"github-light","dark":"github-dark"}}
  require 'net/http'
  require 'uri'

  uri = URI('https://example.com/api/validator/v0/wallet/transfer-offers/{tracking_id}/status')
  request = Net::HTTP::Post.new(uri)
  request['Authorization'] = 'Bearer <token>'
  response = Net::HTTP.start(uri.hostname, uri.port) do |http|
    http.request(request)
  end
  puts response.body
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "status": "<string>",
    "transaction_id": "<string>",
    "contract_id": "<string>"
  }
  ```

  ```json 404 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "error": "<string>"
  }
  ```
</ResponseExample>

## Authorizations

### walletUserAuth

<ParamField header="Authorization" type="string" required>
  HTTP bearer authentication. Send the token as `Authorization: Bearer &lt;token&gt;`. Bearer format: `JWT`. JWT token as described by the `spliceAppBearerAuth` security scheme. The subject of the token must be ledger API user of the user whose wallet the endpoint affects.
</ParamField>

## Path parameters

<ParamField path="tracking_id" type="string" required />

## Responses

### 200

An offer with this tracking id is known. Check the response for its status.

<div class="x2mdx-ref-badges">
  <span class="x2mdx-ref-badge x2mdx-ref-badge--neutral">application/json</span>
</div>

<ResponseField name="value" type="GetTransferOfferStatusResponse" required>
  <Expandable title="child attributes">
    <ResponseField name="TransferOfferCreatedResponse" type="TransferOfferCreatedResponse">
      <Expandable title="child attributes">
        <ResponseField name="status" type="string" required>
          The status of the transfer offer. created: The offer has been created and is waiting for the receiver to accept it. contract\_id points to the contract\_id of the offer and transaction\_id to the transaction that created it. accepted: The offer has been accepted by the receiver and is waiting for the wallet automation to complete it by delivering the offered Amulet. contract\_id points to the contract id of the accepted offer and transaction\_id to the transaction that accepted it completed: The transfer has been completed and the CC amount has been transferred to the receiver. contract\_id points to the contract id of the created amulet for the receiver and transaction\_id to the transaction of the transfer. failed: The transfer has failed permanently and no CC has been transferred. Refer to failure\_reason for details. A new transfer offer can be created with a different tracking\_id.
        </ResponseField>

        <ResponseField name="transaction_id" type="string" required>
          Id of the transaction that created the transfer offer
        </ResponseField>

        <ResponseField name="contract_id" type="string" required>
          Contract id of the created transfer offer
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="TransferOfferAcceptedResponse" type="TransferOfferAcceptedResponse">
      <Expandable title="child attributes">
        <ResponseField name="status" type="string" required>
          The status of the transfer offer. created: The offer has been created and is waiting for the receiver to accept it. contract\_id points to the contract\_id of the offer and transaction\_id to the transaction that created it. accepted: The offer has been accepted by the receiver and is waiting for the wallet automation to complete it by delivering the offered Amulet. contract\_id points to the contract id of the accepted offer and transaction\_id to the transaction that accepted it completed: The transfer has been completed and the CC amount has been transferred to the receiver. contract\_id points to the contract id of the created amulet for the receiver and transaction\_id to the transaction of the transfer. failed: The transfer has failed permanently and no CC has been transferred. Refer to failure\_reason for details. A new transfer offer can be created with a different tracking\_id.
        </ResponseField>

        <ResponseField name="transaction_id" type="string" required>
          Id of the transaction that accepted the transfer offer
        </ResponseField>

        <ResponseField name="contract_id" type="string" required>
          Contract id of the accepted transfer offer
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="TransferOfferCompletedResponse" type="TransferOfferCompletedResponse">
      <Expandable title="child attributes">
        <ResponseField name="status" type="string" required>
          The status of the transfer offer. created: The offer has been created and is waiting for the receiver to accept it. contract\_id points to the contract\_id of the offer and transaction\_id to the transaction that created it. accepted: The offer has been accepted by the receiver and is waiting for the wallet automation to complete it by delivering the offered Amulet. contract\_id points to the contract id of the accepted offer and transaction\_id to the transaction that accepted it completed: The transfer has been completed and the CC amount has been transferred to the receiver. contract\_id points to the contract id of the created amulet for the receiver and transaction\_id to the transaction of the transfer. failed: The transfer has failed permanently and no CC has been transferred. Refer to failure\_reason for details. A new transfer offer can be created with a different tracking\_id.
        </ResponseField>

        <ResponseField name="transaction_id" type="string" required>
          Id of the transaction of the transfer
        </ResponseField>

        <ResponseField name="contract_id" type="string" required>
          Contract id of the created amulet for the receiver
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="TransferOfferFailedResponse" type="TransferOfferFailedResponse">
      <Expandable title="child attributes">
        <ResponseField name="status" type="string" required>
          The status of the transfer offer. created: The offer has been created and is waiting for the receiver to accept it. contract\_id points to the contract\_id of the offer and transaction\_id to the transaction that created it. accepted: The offer has been accepted by the receiver and is waiting for the wallet automation to complete it by delivering the offered Amulet. contract\_id points to the contract id of the accepted offer and transaction\_id to the transaction that accepted it completed: The transfer has been completed and the CC amount has been transferred to the receiver. contract\_id points to the contract id of the created amulet for the receiver and transaction\_id to the transaction of the transfer. failed: The transfer has failed permanently and no CC has been transferred. Refer to failure\_reason for details. A new transfer offer can be created with a different tracking\_id.
        </ResponseField>

        <ResponseField name="failure_kind" type="string" required>
          The reason for the failure of the transfer offer. expired: The transfer offer or the accepted transfer offer expired before it could be completed. rejected: The receiver rejected the transfer offer or withdrew their accepted offer. withdrawn: The sender withdraw their offer, e.g., due to insufficient funds or operational reasons.

          Allowed values: <code>expired</code>, <code>rejected</code>, <code>withdrawn</code>.
        </ResponseField>

        <ResponseField name="withdrawn_reason" type="string">
          Human readable description of the reason for the sender withdrawing their offer.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### 404

No offer with this tracking id is known. Perhaps it has not yet been submitted or processed; or it has been submitted in the past before the current beginning of the wallet transaction log.

<div class="x2mdx-ref-badges">
  <span class="x2mdx-ref-badge x2mdx-ref-badge--neutral">application/json</span>
</div>

<ResponseField name="error" type="string" required />
