The Create Direct Wallet Transfer endpoint enables you to initiate blockchain-to-blockchain transfers where the source funds come from an external wallet (not yours) and are deposited directly into one of your Devdraft wallets. This endpoint creates a dynamic transfer that provides source deposit instructions for the sender to follow.

Endpoint Details

  • Method: POST
  • URL: /api/v0/transfers/direct-wallet
  • Content-Type: application/json

Authentication

This endpoint requires API key authentication using both:
  • x-client-key: Your application’s client key
  • x-client-secret: Your application’s client secret

Request Body

{
  "walletId": "550e8400-e29b-41d4-a716-446655440000",
  "network": "solana",
  "stableCoinCurrency": "usdc",
  "amount": 1000.50
}

Parameters

ParameterTypeRequiredDescription
walletIdstringYesThe ID of your wallet to receive the transfer
networkstringYesSource blockchain network (solana, base, ethereum, polygon, arbitrum, etc.)
stableCoinCurrencystringYesSource stablecoin currency (usdc, eurc)
amountnumberNoTransfer amount (optional for flexible amount transfers)

Supported Networks

  • Solana (solana)
  • Base (base)
  • Ethereum (ethereum)
  • Polygon (polygon)
  • Arbitrum (arbitrum)
  • Optimism (optimism)
  • Avalanche C-Chain (avalanche_c_chain)

Supported Stablecoin Currencies

  • USDC (usdc) - Available on all networks
  • EURC (eurc) - Currently only available on Solana

Response

Success Response (201 Created)

{
  "id": "tr_1234567890abcdef",
  "state": "awaiting_funds",
  "amount": "1000.50",
  "developer_fee": "200.10",
  "on_behalf_of": "cus_bridge123abc",
  "source": {
    "payment_rail": "solana",
    "currency": "usdc",
    "to_address": null,
    "external_account_id": null
  },
  "destination": {
    "payment_rail": "base",
    "currency": "usdc", 
    "to_address": "0x742d35Cc6Ff82a8C2D8D1Da9da17c7eDfD5bE0a3",
    "external_account_id": null
  },
  "source_deposit_instructions": {
    "payment_rail": "solana",
    "currency": "usdc",
    "amount": "1000.50",
    "to_address": "7xKXKRoBrJgCXVb2KhxZZzPHxYMJ4DpHWGQ8RvxS6JEq",
    "deposit_message": "Transfer ID: tr_1234567890abcdef",
    "from_address": null,
    "bank_name": null,
    "bank_address": null,
    "bank_routing_number": null,
    "bank_account_number": null,
    "bank_beneficiary_name": null,
    "bank_beneficiary_address": null
  },
  "receipt": null,
  "created_at": "2024-01-20T10:30:00Z",
  "updated_at": "2024-01-20T10:30:00Z"
}

Response Fields

FieldTypeDescription
idstringUnique transfer identifier
statestringTransfer state (awaiting_funds, processing, completed, failed)
amountstringTransfer amount (if fixed)
developer_feestringDeveloper fee amount (0.8% of transfer amount)
sourceobjectSource endpoint information
destinationobjectDestination endpoint information
source_deposit_instructionsobjectCritical: Instructions for the sender
receiptobjectTransfer receipt (available when completed)
created_atstringTransfer creation timestamp
updated_atstringLast update timestamp

Understanding Source Deposit Instructions

The source_deposit_instructions object is the most important part of the response. It contains the exact information that the external sender needs to complete the transfer.

For Blockchain Networks (Solana, Base, Ethereum, etc.)

{
  "source_deposit_instructions": {
    "payment_rail": "solana",
    "currency": "usdc",
    "amount": "1000.50",
    "to_address": "7xKXKRoBrJgCXVb2KhxZZzPHxYMJ4DpHWGQ8RvxS6JEq",
    "deposit_message": "Transfer ID: tr_1234567890abcdef"
  }
}

Key Fields for Blockchain Instructions

FieldDescriptionUsage
to_addressDestination addressSender must send funds TO this address
currencyToken to sendSender must send this specific stablecoin
amountAmount to sendExact amount required (if fixed amount)
deposit_messageTransfer referenceInclude as memo/note if supported by network

For Bank/Wire Transfers (ACH, WIRE, SEPA)

{
  "source_deposit_instructions": {
    "payment_rail": "wire",
    "currency": "usd",
    "amount": "1000.50",
    "bank_name": "JPMorgan Chase Bank, N.A.",
    "bank_address": "270 Park Avenue, New York, NY 10017",
    "bank_routing_number": "021000021",
    "bank_account_number": "1234567890",
    "bank_beneficiary_name": "Devdraft Network Inc",
    "bank_beneficiary_address": "123 Devdraft Street, San Francisco, CA 94105",
    "deposit_message": "Transfer ID: tr_1234567890abcdef"
  }
}

Key Fields for Bank Instructions

FieldDescriptionUsage
bank_nameReceiving bank nameFor wire transfer forms
bank_routing_numberBank routing/SWIFT codeRequired for transfers
bank_account_numberAccount numberDestination account
bank_beneficiary_nameAccount holder nameBeneficiary information
deposit_messageCritical referenceMust be included in transfer memo

How Source Deposit Instructions Work

1. Dynamic Transfer Creation

When you create a direct wallet transfer, the system:
  • Generates a unique temporary receiving address/account
  • Creates deposit instructions for the sender
  • Sets up monitoring for incoming funds

2. Sender Instructions

You provide the source_deposit_instructions to the external sender, who must:
  • Send the exact currency and amount (specified)
  • Send TO the provided to_address (blockchain) or bank details
  • Include the deposit_message as memo/reference

3. Automatic Processing

Once funds are received:
  • System detects the incoming deposit
  • Automatically converts and transfers to your destination wallet
  • Updates transfer state to completed
  • Provides final receipt with all fees and amounts

Transfer States

StateDescriptionNext Action
awaiting_fundsWaiting for sender to deposit fundsProvide deposit instructions to sender
funds_receivedFunds detected, processing conversionWait for completion
processingConverting and transferring to destinationMonitor for completion
completedTransfer successfulCheck receipt for final amounts
failedTransfer failedCheck failure reason, may need retry

Example Requests

curl -X POST "https://api.devdraft.ai/api/v0/transfers/direct-wallet" \
  -H "Content-Type: application/json" \
  -H "x-client-key: your_client_key_here" \
  -H "x-client-secret: your_client_secret_here" \
  -d '{
    "walletId": "550e8400-e29b-41d4-a716-446655440000",
    "network": "solana", 
    "stableCoinCurrency": "usdc",
    "amount": 1000.50
  }'

Error Responses

{
  "statusCode": 400,
  "message": "Invalid network or currency combination",
  "error": "Bad Request"
}

Important Notes

  • 0.8% developer fee is automatically applied to all transfers
  • Fee is calculated on the total transfer amount
  • Fee is deducted from the final amount received
  • With amount: Creates fixed amount transfer with specific deposit instructions
  • Without amount: Creates flexible amount transfer allowing variable amounts
  • EURC is currently only supported on Solana network
  • USDC is supported on all networks
  • Cross-network transfers are automatically handled
  • All transfers are monitored in real-time
  • Deposit instructions expire after a set period
  • Failed transfers can be retried or refunded

Use Cases

Customer Deposits

Allow customers to deposit from their external wallets

Cross-Platform Integration

Accept funds from other platforms/exchanges

B2B Payments

Receive payments from business partners

Remittances

International money transfers via stablecoins

DeFi Integration

Receive funds from DeFi protocols

Next Steps

After creating a direct wallet transfer:
1

Provide Instructions

Share source_deposit_instructions with the sender
2

Monitor Status

Poll transfer status or use webhooks for updates
3

Handle Completion

Process successful transfers in your application
4

Error Handling

Implement retry logic for failed transfers
  • GET /api/v0/wallets - List your Devdraft wallets
  • GET /api/v0/transfers/{id} - Check transfer status
  • POST /api/v0/transfers/direct-bank - Create bank-to-wallet transfer