> ## Documentation Index
> Fetch the complete documentation index at: https://align.tolbel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Complete Transfer

> Complete an offramp transfer by providing the crypto transaction hash

<Info>
  This is only required for offramp transfers where you're sending crypto from
  your own wallet to the platform.
</Info>

## Method Signature

```typescript theme={null}
align.transfers.completeOfframpTransfer(
  customerId: string,
  transferId: string,
  data: CompleteOfframpTransferRequest
): Promise<Transfer>
```

## Parameters

<ParamField path="customerId" type="string" required>
  The unique customer identifier
</ParamField>

<ParamField path="transferId" type="string" required>
  The unique transfer identifier
</ParamField>

<ParamField body="deposit_transaction_hash" type="string" required>
  Blockchain transaction hash of the crypto transfer
</ParamField>

## Example

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    import Align from "@tolbel/align";

    const align = new Align({
      apiKey: process.env.ALIGN_API_KEY!,
      environment: "sandbox",
    });

    // After sending crypto to the platform's address
    const completed = await align.transfers.completeOfframpTransfer(
      "123e4567-e89b-12d3-a456-426614174000",
      "tr_123e4567-e89b-12d3-a456-426614174000",
      {
        deposit_transaction_hash: "0x1234567890abcdef...",
      }
    );

    console.log(`Status: ${completed.status}`);
    // Status: processing
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    const completed = await align.transfers.completeOfframpTransfer(
      "123e4567-e89b-12d3-a456-426614174000",
      "tr_123e4567-e89b-12d3-a456-426614174000",
      {
        deposit_transaction_hash: "0x1234567890abcdef...",
      }
    );

    console.log("Status:", completed.status);
    ```
  </Tab>
</Tabs>

## Offramp Flow

```mermaid theme={null}
flowchart LR
    A[Create Quote] --> B[Create Transfer]
    B --> C[Send Crypto]
    C --> D[Complete Transfer]
    D --> E[Receive Fiat]
```

1. **Create Quote** - Get exchange rate and fees
2. **Create Transfer** - Initialize the transfer
3. **Send Crypto** - Send crypto to the provided address
4. **Complete Transfer** - Submit the tx hash (this step)
5. **Receive Fiat** - Fiat is sent to the bank account

<Warning>
  Ensure the transaction is confirmed on the blockchain before calling this
  method.
</Warning>

## Related Methods

<CardGroup cols={2}>
  <Card title="Create Transfer" icon="paper-plane" href="/docs/api/transfers/create-transfer">
    Create the transfer first
  </Card>

  <Card title="Get Offramp Transfer" icon="eye" href="/docs/api/transfers/get-offramp-transfer">
    Track completion status
  </Card>
</CardGroup>
