Skip to main content
POST
/
api
/
v0
/
payment-intents
/
bank
Create a bank payment intent
curl --request POST \
  --url https://api.devdraft.ai/api/v0/payment-intents/bank \
  --header 'Content-Type: application/json' \
  --header 'idempotency-key: <idempotency-key>' \
  --header 'x-client-secret: <api-key>' \
  --data '
{
  "sourcePaymentRail": "ach_push",
  "sourceCurrency": "usd",
  "destinationCurrency": "usdc",
  "destinationNetwork": "ethereum",
  "destinationAddress": "0x742d35Cc6634C0532925a3b8D4C9db96c4b4d8e1",
  "amount": "1000.00",
  "customer_first_name": "John",
  "customer_last_name": "Doe",
  "customer_email": "john.doe@example.com",
  "customer_address": "123 Main St, New York, NY 10001",
  "customer_country": "United States",
  "customer_countryISO": "US",
  "customer_province": "New York",
  "customer_provinceISO": "NY",
  "phoneNumber": "+1-555-123-4567",
  "wire_message": "Payment for invoice #12345",
  "sepa_reference": "REF-123456789",
  "ach_reference": "ACH123456"
}
'
{
  "id": "txn_01HZXK8M9N2P3Q4R5S6T7U8V9X",
  "bridge_transfer_id": "transfer_def456ghi789",
  "state": "pending",
  "amount": "1000.00",
  "source": {
    "payment_rail": "ach_push",
    "currency": "usd"
  },
  "destination": {
    "payment_rail": "ethereum",
    "currency": "usdc",
    "to_address": "0x742d35Cc6634C0532925a3b8D4C9db96c4b4d8e1"
  },
  "customer": {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john.doe@example.com",
    "address": "123 Main St, New York, NY 10001",
    "country": "United States",
    "phone_number": "+1-555-123-4567"
  },
  "references": {
    "ach_reference": "INV12345"
  },
  "created_at": "2023-07-01T12:00:00.000Z",
  "updated_at": "2023-07-01T12:00:00.000Z"
}

Authorizations

x-client-secret
string
header
required

Your secret API key. Keep this secure and never expose it in client-side code.

Headers

idempotency-key
string
required

Unique UUID v4 for idempotent requests. Prevents duplicate payments.

Body

application/json

Bank payment intent creation data

sourcePaymentRail
enum<string>
required

The banking payment method to use for the transfer. Determines processing time and fees.

Available options:
ethereum,
solana,
polygon,
avalanche_c_chain,
base,
arbitrum,
optimism,
stellar,
tron,
bridge_wallet,
wire,
ach,
ach_push,
ach_same_day,
sepa,
swift,
spei
Example:

"ach_push"

sourceCurrency
enum<string>
default:usd
required

The fiat currency to convert FROM. Must match the currency of the source payment rail.

Available options:
usd,
eur,
mxn
Example:

"usd"

destinationCurrency
enum<string>
required

The stablecoin currency to convert TO. The customer will receive this currency.

Available options:
usdc,
eurc
Example:

"usdc"

destinationNetwork
enum<string>
required

The blockchain network where the stablecoin will be delivered. Must support the destination currency.

Available options:
ethereum,
solana,
polygon,
avalanche_c_chain,
base,
arbitrum,
optimism,
stellar,
tron,
bridge_wallet,
wire,
ach,
ach_push,
ach_same_day,
sepa,
swift,
spei
Example:

"ethereum"

destinationAddress
string

Destination wallet address. Supports Ethereum (0x...) and Solana address formats.

Example:

"0x742d35Cc6634C0532925a3b8D4C9db96c4b4d8e1"

amount
string

Payment amount (optional for flexible amount)

Example:

"1000.00"

customer_first_name
string

Customer first name

Example:

"John"

customer_last_name
string

Customer last name

Example:

"Doe"

customer_email
string

Customer email address

Example:

"john.doe@example.com"

customer_address
string

Customer address

Example:

"123 Main St, New York, NY 10001"

customer_country
string

Customer country

Example:

"United States"

customer_countryISO
string

Customer country ISO code

Example:

"US"

customer_province
string

Customer province/state

Example:

"New York"

customer_provinceISO
string

Customer province/state ISO code

Example:

"NY"

phoneNumber
string

Customer phone number

Example:

"+1-555-123-4567"

wire_message
string

Wire transfer message (for WIRE transfers)

Maximum string length: 256
Example:

"Payment for invoice #12345"

sepa_reference
string

SEPA reference (for SEPA transfers)

Required string length: 6 - 140
Example:

"REF-123456789"

ach_reference
string

ACH reference (for ACH transfers)

Maximum string length: 10
Example:

"ACH123456"

Response

Bank payment intent created successfully