> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.getsinbad.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getsinbad.com/_mcp/server.

# Get transaction confirmation status

GET https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/{preparationId}

Get transaction confirmation status.

**Credential:** Customer session or partner secret

**Before you call**

- A customer session, or an owning partner server credential without Origin.
- Use the original `preparationId` and the customer's registered wallet.
- Keep the signed bytes and any known hashes if you need to recover an uncertain submission.

Reads the status of a transaction for the authenticated wallet, and resumes Sinbad's tracking if it was interrupted. `CONFIRMED` means a successful receipt, or a funded breakdown or trade that Sinbad has already verified at the usual confirmation depth. Wallet escrow tracking that stays unresolved for 24 hours becomes `REVIEW_REQUIRED`, whatever the funding state. Trade status continues to follow events and receipts.

A prepared transaction stays available while its trade, breakdown or transaction protection is unresolved, and a completed transaction keeps its completed status on later polls. After a transaction completes or its breakdown closes, Sinbad keeps the evidence for at least 30 days before it cleans it up. Sinbad never deletes trades, breakdowns or disputes.



> Confirm with Sinbad that this endpoint is enabled in your environment.

**Errors**

| Status | Code | What to do |
| --- | --- | --- |
| 400 | `VALIDATION_ERROR` | Correct the fields reported in details before retrying. |
| 401 | `UNAUTHENTICATED` | Create a new customer session or use a valid server credential. |
| 403 | `FORBIDDEN` | Check credential ownership, integration and the supplied Origin. |
| 404 | `NOT_FOUND` | Check the resource ID. A resource that belongs to someone else also returns 404. |
| 409 | `CONFLICT` | Read the current state again before you prepare or retry. |
| 503 | `UPSTREAM_ERROR` | Retry with backoff; preserve the same idempotency key for a repeated mutation. |

Reference: https://docs.getsinbad.com/api-reference/transactions/get-prepared-transaction-status

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.
- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `preparationId` (string, required)

## Response

### 200

Current tracking status; transactionHash is null before submission.

- `transaction` (TradesTransactionResultTransaction, required)
- `trade` (TradesTransactionResultTrade, required)

## Errors

### 400 Bad Request Error

The request is invalid.

- `error` (V1TransactionsPreparationIdGetResponsesContentApplicationJsonSchemaError, required)

### 401 Unauthorized Error

Authentication is required.

- `error` (V1TransactionsPreparationIdGetResponsesContentApplicationJsonSchemaError, required)

### 403 Forbidden Error

You do not have permission to perform this action.

- `error` (V1TransactionsPreparationIdGetResponsesContentApplicationJsonSchemaError, required)

### 404 Not Found Error

The requested resource was not found.

- `error` (V1TransactionsPreparationIdGetResponsesContentApplicationJsonSchemaError, required)

### 409 Conflict Error

The request conflicts with the current state of the resource.

- `error` (V1TransactionsPreparationIdGetResponsesContentApplicationJsonSchemaError, required)

### 503 Service Unavailable Error

Service temporarily unavailable.

- `error` (V1TransactionsPreparationIdGetResponsesContentApplicationJsonSchemaError, required)

## Types

### TradesTransactionResultTransaction

- `preparationId` (string, required)
- `purpose` (string, required)
- `status` (enum, required)
  - Allowed values: `READY_TO_SIGN`, `BROADCAST_UNKNOWN`, `PENDING_CONFIRMATION`, `CONFIRMED`, `REVERTED`, `REJECTED`, `REPLACED`, `EXPIRED`, `REVIEW_REQUIRED`
- `transactionHash` (string, required, nullable)
- `confirmations` (integer, required)
- `requiredConfirmations` (integer, required)

### TradesTransactionResultTrade

- TradesTransactionResultTrade0
- map from string to any

### V1TransactionsPreparationIdGetResponsesContentApplicationJsonSchemaError

- `code` (string, required)
- `numericId` (integer, required)
- `message` (string, required)
- `requestId` (string, optional)
- `details` (map from string to any, optional)

### TradesTransactionResultTrade0

- `tradeId` (string, required)
- `tradeRef` (string, required)
- `status` (enum, required) — A funded trade first appears as CREATED. PENDING, FUNDING_FAILED and FUNDING_EXPIRED are reserved compatibility values, not currently emitted.
  - Allowed values: `PENDING`, `FUNDING_FAILED`, `FUNDING_EXPIRED`, `CREATED`, `PAID`, `RELEASED`, `CANCELED`, `DISPUTED`
- `side` (enum, required)
  - Allowed values: `BUY`, `SELL`
- `chainId` (integer, required)
- `escrowAddress` (string, required)
- `tokenAddress` (string, required)
- `walletAddress` (string, required)
- `pricing` (TradesTransactionResultTradeOneOf0Pricing, required)
- `id` (string, optional)
- `source` (enum, optional)
  - Allowed values: `partner`
- `transferNumber` (string, optional, nullable)
- `counterparty` (TradesTransactionResultTradeOneOf0Counterparty, optional, nullable)
- `availableActions` (list of string, optional)
- `escrowId` (string, optional, nullable)
- `merchant` (trades__Merchant, optional)
- `fiatCurrencyId` (string, optional)
- `paymentMethodId` (string, optional)
- `displayLabel` (string, optional, nullable) — Recipient account label from the funded payment snapshot; null before funding or when unavailable. Retained after settlement.
- `transactionHash` (string, optional, nullable)
- `dispute` (trades__Dispute, optional) — Confirmed dispute only; null before opening and retained after resolution. Roles are public; no internal identity IDs are exposed.
- `proofOfPayment` (TradesTransactionResultTradeOneOf0ProofOfPayment, optional)
- `paymentInstructions` (TradesTransactionResultTradeOneOf0PaymentInstructions, optional, nullable) — Selected fiat recipient account in CREATED, PAID, and DISPUTED after confirmed funding. BUY uses the merchant account; SELL uses the customer's receiving account. Null before funding and after settlement.
- `senderDetails` (TradesTransactionResultTradeOneOf0SenderDetails, optional, nullable) — Customer view of a SELL trade only. The merchant's saved payment method the fiat is sent from, snapshotted at checkout, so the customer can verify the incoming payment. Same shape as `paymentInstructions`; `data` keys match the saved method. Present only in CREATED, PAID, and DISPUTED after confirmed funding; otherwise null (always null for BUY, merchant views, and trades funded before this field existed).
- `type` (string, optional)
- `createdAt` (datetime, optional, nullable)
- `fundedAt` (datetime, optional, nullable)
- `updatedAt` (datetime, optional, nullable)
- `settlementOutcome` (string, optional, nullable)
- `tradeDetails` (map from string to offers_quotes__DisplayValue, optional, nullable)
- `merchantRateDetails` (map from string to offers_quotes__DisplayValue, optional, nullable)
- `webhookSequence` (integer, optional) — Returned on partner-server reads only.

### TradesTransactionResultTradeOneOf0Pricing

- `usdtAmount` (string, required) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `customerFiatAmount` (string, required) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `merchantRateFiat` (string, optional) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `subtotalFiat` (string, optional) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `customerFeeFiat` (string, optional) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `platformFeeFiat` (string, optional) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `partnerFeeFiat` (string, optional) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `makerFeeUsdt` (string, optional) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `platformFeeUsdt` (string, optional) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `partnerFeeUsdt` (string, optional) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `lockAmountUsdt` (string, optional) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `recipientAmountUsdt` (string, optional) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `refundAmountUsdt` (string, optional) — Exact decimal string in the field currency; USDT uses up to six decimal places.
- `takerFeeFiat` (string, optional) — Exact decimal amount; present when retained pricing includes it.
- `takerFeeUsdt` (string, optional) — Exact decimal amount; present when retained pricing includes it.

### TradesTransactionResultTradeOneOf0Counterparty

- `displayName` (string, required)
- `partnerName` (string, required)

### trades__Merchant

- `userId` (string, required)
- `fullName` (string, required)
- `username` (string, required)
- `avatarUrl` (string, required)

### trades__Dispute

Confirmed dispute only; null before opening and retained after resolution. Roles are public; no internal identity IDs are exposed.

- `reason` (string, required, nullable) — Optional off-chain reason associated with the confirmed dispute; null when unavailable or ambiguous.
- `openedByRole` (enum, required)
  - Allowed values: `merchant`, `customer`
- `openedAtStatus` (enum, required, nullable)
  - Allowed values: `CREATED`, `PAID`
- `openedAt` (datetime, required, nullable)
- `transactionHash` (string, required, nullable)
- `resolvedAt` (datetime, required, nullable)
- `resolution` (enum, required, nullable)
  - Allowed values: `BUYER_RELEASE`, `FULL_REFUND`

### TradesTransactionResultTradeOneOf0ProofOfPayment

- TradesTransactionResultTradeOneOf0ProofOfPayment0
- map from string to any

### TradesTransactionResultTradeOneOf0PaymentInstructions

Selected fiat recipient account in CREATED, PAID, and DISPUTED after confirmed funding. BUY uses the merchant account; SELL uses the customer's receiving account. Null before funding and after settlement.

- `paymentMethodId` (string, required)
- `displayLabel` (string, required)
- `data` (map from string to string, required)

### TradesTransactionResultTradeOneOf0SenderDetails

Customer view of a SELL trade only. The merchant's saved payment method the fiat is sent from, snapshotted at checkout, so the customer can verify the incoming payment. Same shape as `paymentInstructions`; `data` keys match the saved method. Present only in CREATED, PAID, and DISPUTED after confirmed funding; otherwise null (always null for BUY, merchant views, and trades funded before this field existed).

- `paymentMethodId` (string, required)
- `displayLabel` (string, required)
- `data` (map from string to string, required)

### offers_quotes__DisplayValue

- `value` (double, required) — Display only; exact pricing strings govern execution.
- `type` (enum, required)
  - Allowed values: `fiat`, `crypto`, `percentage`

### TradesTransactionResultTradeOneOf0ProofOfPayment0

- `proofId` (string, required)
- `contentType` (string, required) — Original content type; merchant files can use native image formats.
- `size` (integer, required)
- `uploadedByRole` (enum, required)
  - Allowed values: `customer`, `merchant`
- `uploadedAt` (datetime, required, nullable)
- `base64` (string, required) — Blurred preview, not original file bytes.
- `width` (double, required)
- `height` (double, required)

## Examples

### Success

**Response**

```json
{
  "transaction": {
    "preparationId": "preparation_markPaid",
    "purpose": "markPaid",
    "status": "CONFIRMED",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "confirmations": 2,
    "requiredConfirmations": 2
  },
  "trade": {
    "availableActions": [
      "openDispute"
    ],
    "chainId": 80002,
    "counterparty": {
      "displayName": "Alex",
      "partnerName": "Example Partner"
    },
    "createdAt": "2026-10-23T10:00:00.000Z",
    "displayLabel": "Bank transfer",
    "escrowAddress": "0x3333333333333333333333333333333333333333",
    "escrowId": "42",
    "fiatCurrencyId": "usd",
    "fundedAt": "2026-10-23T10:00:00.000Z",
    "id": "trade_demo",
    "merchant": {
      "avatarUrl": "",
      "fullName": "Example Merchant",
      "userId": "merchant_demo",
      "username": "example"
    },
    "merchantRateDetails": {
      "MarketRate": {
        "type": "fiat",
        "value": 1
      },
      "MerchantMargin": {
        "type": "percentage",
        "value": 0
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      }
    },
    "paymentInstructions": {
      "data": {
        "accountName": "Example Merchant",
        "accountNumber": "EXAMPLE123456"
      },
      "displayLabel": "Bank transfer",
      "paymentMethodId": "bank_transfer"
    },
    "paymentMethodId": "bank_transfer",
    "pricing": {
      "customerFeeFiat": "0",
      "customerFiatAmount": "100",
      "lockAmountUsdt": "100",
      "makerFeeUsdt": "0",
      "merchantRateFiat": "1",
      "partnerFeeFiat": "0",
      "partnerFeeUsdt": "0",
      "platformFeeFiat": "0",
      "platformFeeUsdt": "0",
      "recipientAmountUsdt": "100",
      "refundAmountUsdt": "100",
      "subtotalFiat": "100",
      "usdtAmount": "100"
    },
    "senderDetails": null,
    "settlementOutcome": null,
    "side": "BUY",
    "source": "partner",
    "status": "PAID",
    "tokenAddress": "0x4444444444444444444444444444444444444444",
    "tradeDetails": {
      "Amount": {
        "type": "crypto",
        "value": 100
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      },
      "ServiceFee": {
        "type": "fiat",
        "value": 0
      },
      "Subtotal": {
        "type": "fiat",
        "value": 100
      },
      "YouPay": {
        "type": "fiat",
        "value": 100
      }
    },
    "tradeId": "trade_demo",
    "tradeRef": "0xabababababababababababababababababababababababababababababababab",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "transferNumber": "B2B-DEMO",
    "type": "SELL",
    "updatedAt": "2026-10-23T10:00:00.000Z",
    "walletAddress": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a"
  }
}
```

**SDK Code**

```python Success
import requests

url = "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Success
const url = 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Success
package main

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

func main() {

	url := "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Success
require 'uri'
require 'net/http'

url = URI("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java Success
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Success
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp Success
using RestSharp;

var client = new RestClient("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Success
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### BROADCAST_UNKNOWN

**Response**

```json
{
  "transaction": {
    "preparationId": "preparation_markPaid",
    "purpose": "markPaid",
    "status": "BROADCAST_UNKNOWN",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "confirmations": 0,
    "requiredConfirmations": 2
  },
  "trade": {
    "availableActions": [
      "markPaid",
      "cancelPrePaid"
    ],
    "chainId": 80002,
    "counterparty": {
      "displayName": "Alex",
      "partnerName": "Example Partner"
    },
    "createdAt": "2026-10-23T10:00:00.000Z",
    "displayLabel": "Bank transfer",
    "escrowAddress": "0x3333333333333333333333333333333333333333",
    "escrowId": "42",
    "fiatCurrencyId": "usd",
    "fundedAt": "2026-10-23T10:00:00.000Z",
    "id": "trade_demo",
    "merchant": {
      "avatarUrl": "",
      "fullName": "Example Merchant",
      "userId": "merchant_demo",
      "username": "example"
    },
    "merchantRateDetails": {
      "MarketRate": {
        "type": "fiat",
        "value": 1
      },
      "MerchantMargin": {
        "type": "percentage",
        "value": 0
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      }
    },
    "paymentInstructions": {
      "data": {
        "accountName": "Example Merchant",
        "accountNumber": "EXAMPLE123456"
      },
      "displayLabel": "Bank transfer",
      "paymentMethodId": "bank_transfer"
    },
    "paymentMethodId": "bank_transfer",
    "pricing": {
      "customerFeeFiat": "0",
      "customerFiatAmount": "100",
      "lockAmountUsdt": "100",
      "makerFeeUsdt": "0",
      "merchantRateFiat": "1",
      "partnerFeeFiat": "0",
      "partnerFeeUsdt": "0",
      "platformFeeFiat": "0",
      "platformFeeUsdt": "0",
      "recipientAmountUsdt": "100",
      "refundAmountUsdt": "100",
      "subtotalFiat": "100",
      "usdtAmount": "100"
    },
    "senderDetails": null,
    "settlementOutcome": null,
    "side": "BUY",
    "source": "partner",
    "status": "CREATED",
    "tokenAddress": "0x4444444444444444444444444444444444444444",
    "tradeDetails": {
      "Amount": {
        "type": "crypto",
        "value": 100
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      },
      "ServiceFee": {
        "type": "fiat",
        "value": 0
      },
      "Subtotal": {
        "type": "fiat",
        "value": 100
      },
      "YouPay": {
        "type": "fiat",
        "value": 100
      }
    },
    "tradeId": "trade_demo",
    "tradeRef": "0xabababababababababababababababababababababababababababababababab",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "transferNumber": "B2B-DEMO",
    "type": "SELL",
    "updatedAt": "2026-10-23T10:00:00.000Z",
    "walletAddress": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a"
  }
}
```

**SDK Code**

```python BROADCAST_UNKNOWN
import requests

url = "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript BROADCAST_UNKNOWN
const url = 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go BROADCAST_UNKNOWN
package main

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

func main() {

	url := "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby BROADCAST_UNKNOWN
require 'uri'
require 'net/http'

url = URI("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java BROADCAST_UNKNOWN
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php BROADCAST_UNKNOWN
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp BROADCAST_UNKNOWN
using RestSharp;

var client = new RestClient("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift BROADCAST_UNKNOWN
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### REVERTED

**Response**

```json
{
  "transaction": {
    "preparationId": "preparation_markPaid",
    "purpose": "markPaid",
    "status": "REVERTED",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "confirmations": 0,
    "requiredConfirmations": 2
  },
  "trade": {
    "availableActions": [
      "markPaid",
      "cancelPrePaid"
    ],
    "chainId": 80002,
    "counterparty": {
      "displayName": "Alex",
      "partnerName": "Example Partner"
    },
    "createdAt": "2026-10-23T10:00:00.000Z",
    "displayLabel": "Bank transfer",
    "escrowAddress": "0x3333333333333333333333333333333333333333",
    "escrowId": "42",
    "fiatCurrencyId": "usd",
    "fundedAt": "2026-10-23T10:00:00.000Z",
    "id": "trade_demo",
    "merchant": {
      "avatarUrl": "",
      "fullName": "Example Merchant",
      "userId": "merchant_demo",
      "username": "example"
    },
    "merchantRateDetails": {
      "MarketRate": {
        "type": "fiat",
        "value": 1
      },
      "MerchantMargin": {
        "type": "percentage",
        "value": 0
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      }
    },
    "paymentInstructions": {
      "data": {
        "accountName": "Example Merchant",
        "accountNumber": "EXAMPLE123456"
      },
      "displayLabel": "Bank transfer",
      "paymentMethodId": "bank_transfer"
    },
    "paymentMethodId": "bank_transfer",
    "pricing": {
      "customerFeeFiat": "0",
      "customerFiatAmount": "100",
      "lockAmountUsdt": "100",
      "makerFeeUsdt": "0",
      "merchantRateFiat": "1",
      "partnerFeeFiat": "0",
      "partnerFeeUsdt": "0",
      "platformFeeFiat": "0",
      "platformFeeUsdt": "0",
      "recipientAmountUsdt": "100",
      "refundAmountUsdt": "100",
      "subtotalFiat": "100",
      "usdtAmount": "100"
    },
    "senderDetails": null,
    "settlementOutcome": null,
    "side": "BUY",
    "source": "partner",
    "status": "CREATED",
    "tokenAddress": "0x4444444444444444444444444444444444444444",
    "tradeDetails": {
      "Amount": {
        "type": "crypto",
        "value": 100
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      },
      "ServiceFee": {
        "type": "fiat",
        "value": 0
      },
      "Subtotal": {
        "type": "fiat",
        "value": 100
      },
      "YouPay": {
        "type": "fiat",
        "value": 100
      }
    },
    "tradeId": "trade_demo",
    "tradeRef": "0xabababababababababababababababababababababababababababababababab",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "transferNumber": "B2B-DEMO",
    "type": "SELL",
    "updatedAt": "2026-10-23T10:00:00.000Z",
    "walletAddress": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a"
  }
}
```

**SDK Code**

```python REVERTED
import requests

url = "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript REVERTED
const url = 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go REVERTED
package main

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

func main() {

	url := "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby REVERTED
require 'uri'
require 'net/http'

url = URI("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java REVERTED
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php REVERTED
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp REVERTED
using RestSharp;

var client = new RestClient("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift REVERTED
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### REJECTED

**Response**

```json
{
  "transaction": {
    "preparationId": "preparation_markPaid",
    "purpose": "markPaid",
    "status": "REJECTED",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "confirmations": 0,
    "requiredConfirmations": 2
  },
  "trade": {
    "availableActions": [
      "markPaid",
      "cancelPrePaid"
    ],
    "chainId": 80002,
    "counterparty": {
      "displayName": "Alex",
      "partnerName": "Example Partner"
    },
    "createdAt": "2026-10-23T10:00:00.000Z",
    "displayLabel": "Bank transfer",
    "escrowAddress": "0x3333333333333333333333333333333333333333",
    "escrowId": "42",
    "fiatCurrencyId": "usd",
    "fundedAt": "2026-10-23T10:00:00.000Z",
    "id": "trade_demo",
    "merchant": {
      "avatarUrl": "",
      "fullName": "Example Merchant",
      "userId": "merchant_demo",
      "username": "example"
    },
    "merchantRateDetails": {
      "MarketRate": {
        "type": "fiat",
        "value": 1
      },
      "MerchantMargin": {
        "type": "percentage",
        "value": 0
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      }
    },
    "paymentInstructions": {
      "data": {
        "accountName": "Example Merchant",
        "accountNumber": "EXAMPLE123456"
      },
      "displayLabel": "Bank transfer",
      "paymentMethodId": "bank_transfer"
    },
    "paymentMethodId": "bank_transfer",
    "pricing": {
      "customerFeeFiat": "0",
      "customerFiatAmount": "100",
      "lockAmountUsdt": "100",
      "makerFeeUsdt": "0",
      "merchantRateFiat": "1",
      "partnerFeeFiat": "0",
      "partnerFeeUsdt": "0",
      "platformFeeFiat": "0",
      "platformFeeUsdt": "0",
      "recipientAmountUsdt": "100",
      "refundAmountUsdt": "100",
      "subtotalFiat": "100",
      "usdtAmount": "100"
    },
    "senderDetails": null,
    "settlementOutcome": null,
    "side": "BUY",
    "source": "partner",
    "status": "CREATED",
    "tokenAddress": "0x4444444444444444444444444444444444444444",
    "tradeDetails": {
      "Amount": {
        "type": "crypto",
        "value": 100
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      },
      "ServiceFee": {
        "type": "fiat",
        "value": 0
      },
      "Subtotal": {
        "type": "fiat",
        "value": 100
      },
      "YouPay": {
        "type": "fiat",
        "value": 100
      }
    },
    "tradeId": "trade_demo",
    "tradeRef": "0xabababababababababababababababababababababababababababababababab",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "transferNumber": "B2B-DEMO",
    "type": "SELL",
    "updatedAt": "2026-10-23T10:00:00.000Z",
    "walletAddress": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a"
  }
}
```

**SDK Code**

```python REJECTED
import requests

url = "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript REJECTED
const url = 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go REJECTED
package main

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

func main() {

	url := "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby REJECTED
require 'uri'
require 'net/http'

url = URI("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java REJECTED
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php REJECTED
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp REJECTED
using RestSharp;

var client = new RestClient("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift REJECTED
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### REPLACED

**Response**

```json
{
  "transaction": {
    "preparationId": "preparation_markPaid",
    "purpose": "markPaid",
    "status": "REPLACED",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "confirmations": 0,
    "requiredConfirmations": 2
  },
  "trade": {
    "availableActions": [
      "markPaid",
      "cancelPrePaid"
    ],
    "chainId": 80002,
    "counterparty": {
      "displayName": "Alex",
      "partnerName": "Example Partner"
    },
    "createdAt": "2026-10-23T10:00:00.000Z",
    "displayLabel": "Bank transfer",
    "escrowAddress": "0x3333333333333333333333333333333333333333",
    "escrowId": "42",
    "fiatCurrencyId": "usd",
    "fundedAt": "2026-10-23T10:00:00.000Z",
    "id": "trade_demo",
    "merchant": {
      "avatarUrl": "",
      "fullName": "Example Merchant",
      "userId": "merchant_demo",
      "username": "example"
    },
    "merchantRateDetails": {
      "MarketRate": {
        "type": "fiat",
        "value": 1
      },
      "MerchantMargin": {
        "type": "percentage",
        "value": 0
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      }
    },
    "paymentInstructions": {
      "data": {
        "accountName": "Example Merchant",
        "accountNumber": "EXAMPLE123456"
      },
      "displayLabel": "Bank transfer",
      "paymentMethodId": "bank_transfer"
    },
    "paymentMethodId": "bank_transfer",
    "pricing": {
      "customerFeeFiat": "0",
      "customerFiatAmount": "100",
      "lockAmountUsdt": "100",
      "makerFeeUsdt": "0",
      "merchantRateFiat": "1",
      "partnerFeeFiat": "0",
      "partnerFeeUsdt": "0",
      "platformFeeFiat": "0",
      "platformFeeUsdt": "0",
      "recipientAmountUsdt": "100",
      "refundAmountUsdt": "100",
      "subtotalFiat": "100",
      "usdtAmount": "100"
    },
    "senderDetails": null,
    "settlementOutcome": null,
    "side": "BUY",
    "source": "partner",
    "status": "CREATED",
    "tokenAddress": "0x4444444444444444444444444444444444444444",
    "tradeDetails": {
      "Amount": {
        "type": "crypto",
        "value": 100
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      },
      "ServiceFee": {
        "type": "fiat",
        "value": 0
      },
      "Subtotal": {
        "type": "fiat",
        "value": 100
      },
      "YouPay": {
        "type": "fiat",
        "value": 100
      }
    },
    "tradeId": "trade_demo",
    "tradeRef": "0xabababababababababababababababababababababababababababababababab",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "transferNumber": "B2B-DEMO",
    "type": "SELL",
    "updatedAt": "2026-10-23T10:00:00.000Z",
    "walletAddress": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a"
  }
}
```

**SDK Code**

```python REPLACED
import requests

url = "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript REPLACED
const url = 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go REPLACED
package main

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

func main() {

	url := "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby REPLACED
require 'uri'
require 'net/http'

url = URI("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java REPLACED
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php REPLACED
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp REPLACED
using RestSharp;

var client = new RestClient("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift REPLACED
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### EXPIRED

**Response**

```json
{
  "transaction": {
    "preparationId": "preparation_markPaid",
    "purpose": "markPaid",
    "status": "EXPIRED",
    "transactionHash": null,
    "confirmations": 0,
    "requiredConfirmations": 2
  },
  "trade": {
    "availableActions": [
      "markPaid",
      "cancelPrePaid"
    ],
    "chainId": 80002,
    "counterparty": {
      "displayName": "Alex",
      "partnerName": "Example Partner"
    },
    "createdAt": "2026-10-23T10:00:00.000Z",
    "displayLabel": "Bank transfer",
    "escrowAddress": "0x3333333333333333333333333333333333333333",
    "escrowId": "42",
    "fiatCurrencyId": "usd",
    "fundedAt": "2026-10-23T10:00:00.000Z",
    "id": "trade_demo",
    "merchant": {
      "avatarUrl": "",
      "fullName": "Example Merchant",
      "userId": "merchant_demo",
      "username": "example"
    },
    "merchantRateDetails": {
      "MarketRate": {
        "type": "fiat",
        "value": 1
      },
      "MerchantMargin": {
        "type": "percentage",
        "value": 0
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      }
    },
    "paymentInstructions": {
      "data": {
        "accountName": "Example Merchant",
        "accountNumber": "EXAMPLE123456"
      },
      "displayLabel": "Bank transfer",
      "paymentMethodId": "bank_transfer"
    },
    "paymentMethodId": "bank_transfer",
    "pricing": {
      "customerFeeFiat": "0",
      "customerFiatAmount": "100",
      "lockAmountUsdt": "100",
      "makerFeeUsdt": "0",
      "merchantRateFiat": "1",
      "partnerFeeFiat": "0",
      "partnerFeeUsdt": "0",
      "platformFeeFiat": "0",
      "platformFeeUsdt": "0",
      "recipientAmountUsdt": "100",
      "refundAmountUsdt": "100",
      "subtotalFiat": "100",
      "usdtAmount": "100"
    },
    "senderDetails": null,
    "settlementOutcome": null,
    "side": "BUY",
    "source": "partner",
    "status": "CREATED",
    "tokenAddress": "0x4444444444444444444444444444444444444444",
    "tradeDetails": {
      "Amount": {
        "type": "crypto",
        "value": 100
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      },
      "ServiceFee": {
        "type": "fiat",
        "value": 0
      },
      "Subtotal": {
        "type": "fiat",
        "value": 100
      },
      "YouPay": {
        "type": "fiat",
        "value": 100
      }
    },
    "tradeId": "trade_demo",
    "tradeRef": "0xabababababababababababababababababababababababababababababababab",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "transferNumber": "B2B-DEMO",
    "type": "SELL",
    "updatedAt": "2026-10-23T10:00:00.000Z",
    "walletAddress": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a"
  }
}
```

**SDK Code**

```python EXPIRED
import requests

url = "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript EXPIRED
const url = 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go EXPIRED
package main

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

func main() {

	url := "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby EXPIRED
require 'uri'
require 'net/http'

url = URI("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java EXPIRED
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php EXPIRED
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp EXPIRED
using RestSharp;

var client = new RestClient("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift EXPIRED
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### REVIEW_REQUIRED

**Response**

```json
{
  "transaction": {
    "preparationId": "preparation_markPaid",
    "purpose": "markPaid",
    "status": "REVIEW_REQUIRED",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "confirmations": 0,
    "requiredConfirmations": 2
  },
  "trade": {
    "availableActions": [
      "markPaid",
      "cancelPrePaid"
    ],
    "chainId": 80002,
    "counterparty": {
      "displayName": "Alex",
      "partnerName": "Example Partner"
    },
    "createdAt": "2026-10-23T10:00:00.000Z",
    "displayLabel": "Bank transfer",
    "escrowAddress": "0x3333333333333333333333333333333333333333",
    "escrowId": "42",
    "fiatCurrencyId": "usd",
    "fundedAt": "2026-10-23T10:00:00.000Z",
    "id": "trade_demo",
    "merchant": {
      "avatarUrl": "",
      "fullName": "Example Merchant",
      "userId": "merchant_demo",
      "username": "example"
    },
    "merchantRateDetails": {
      "MarketRate": {
        "type": "fiat",
        "value": 1
      },
      "MerchantMargin": {
        "type": "percentage",
        "value": 0
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      }
    },
    "paymentInstructions": {
      "data": {
        "accountName": "Example Merchant",
        "accountNumber": "EXAMPLE123456"
      },
      "displayLabel": "Bank transfer",
      "paymentMethodId": "bank_transfer"
    },
    "paymentMethodId": "bank_transfer",
    "pricing": {
      "customerFeeFiat": "0",
      "customerFiatAmount": "100",
      "lockAmountUsdt": "100",
      "makerFeeUsdt": "0",
      "merchantRateFiat": "1",
      "partnerFeeFiat": "0",
      "partnerFeeUsdt": "0",
      "platformFeeFiat": "0",
      "platformFeeUsdt": "0",
      "recipientAmountUsdt": "100",
      "refundAmountUsdt": "100",
      "subtotalFiat": "100",
      "usdtAmount": "100"
    },
    "senderDetails": null,
    "settlementOutcome": null,
    "side": "BUY",
    "source": "partner",
    "status": "CREATED",
    "tokenAddress": "0x4444444444444444444444444444444444444444",
    "tradeDetails": {
      "Amount": {
        "type": "crypto",
        "value": 100
      },
      "MerchantRate": {
        "type": "fiat",
        "value": 1
      },
      "ServiceFee": {
        "type": "fiat",
        "value": 0
      },
      "Subtotal": {
        "type": "fiat",
        "value": 100
      },
      "YouPay": {
        "type": "fiat",
        "value": 100
      }
    },
    "tradeId": "trade_demo",
    "tradeRef": "0xabababababababababababababababababababababababababababababababab",
    "transactionHash": "0xabababababababababababababababababababababababababababababababab",
    "transferNumber": "B2B-DEMO",
    "type": "SELL",
    "updatedAt": "2026-10-23T10:00:00.000Z",
    "walletAddress": "0x19e7e376e7c213b7e7e7e46cc70a5dd086daff2a"
  }
}
```

**SDK Code**

```python REVIEW_REQUIRED
import requests

url = "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript REVIEW_REQUIRED
const url = 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go REVIEW_REQUIRED
package main

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

func main() {

	url := "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby REVIEW_REQUIRED
require 'uri'
require 'net/http'

url = URI("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java REVIEW_REQUIRED
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php REVIEW_REQUIRED
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp REVIEW_REQUIRED
using RestSharp;

var client = new RestClient("https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift REVIEW_REQUIRED
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://us-central1-sinbad-staging-env.cloudfunctions.net/b2b-v1/v1/transactions/preparation_markPaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```