Sardis

Holds

Pre-authorization holds for reservations and delayed capture. Reserve funds without executing a payment.

Pre-authorization holds for reservations and delayed capture.

Hold Lifecycle

Create Hold --> Capture --> Payment Executed
     |
     +--------> Release --> Funds Returned
               (or Expire)

Holds reserve funds without executing a payment. Use cases include hotel reservations, rental deposits, and two-phase payments.

Python

from sardis import SardisClient

async with SardisClient(api_key="sk_...") as client:
    # Create hold
    hold = await client.holds.create(
        wallet_id="wallet_abc123",
        amount_minor=50_000_000,  # $50.00
        token="USDC",
        purpose="Hotel reservation",
        expires_in_hours=72,
    )
    print(f"Hold: {hold.id}")

    # Later: capture the hold
    captured = await client.holds.capture(hold.id)
    print(f"Captured: {captured.tx_hash}")

    # Or: release the hold
    released = await client.holds.release(hold.id)
    print(f"Released: {released.released_at}")

TypeScript

import { SardisClient } from '@sardis/sdk';

const client = new SardisClient({ apiKey: 'sk_...' });

// Create hold
const hold = await client.holds.create({
  walletId: 'wallet_abc123',
  amountMinor: 50_000_000,
  token: 'USDC',
  purpose: 'Hotel reservation',
});

// Capture
const captured = await client.holds.capture(hold.id);

// Or release
const released = await client.holds.release(hold.id);

// List holds
const holds = await client.holds.list({ walletId: 'wallet_abc123' });

MCP Tools

ToolDescription
sardis_create_holdCreate a fund hold
sardis_capture_holdCapture a hold
sardis_release_holdRelease/void a hold
sardis_get_holdGet hold details
sardis_list_holdsList wallet holds
sardis_extend_holdExtend hold expiration