Kite

Transfers

A payment's journey from opened to settled, and every status along the way.

A transfer is one payment of a quote. It has its own pay-in address, the address of its Kite contract, and moves through statuses as the payment progresses. Each change is recorded on its timeline and sent to your webhooks.

The Transfers page: status, amount, value and when each was created

Statuses

StatusMeaning
CreatedBeing set up. Rarely seen.
AwaitingDepositOpen, waiting for the customer to pay.
DepositReceivedThe full amount arrived at the pay-in address.
x402SettledAn x402 payment was accepted and the funds are at the pay-in address.
ProcessingThe settlement transaction was sent.
SettledPaid. Swapped if needed, fees paid, and the rest sent to the settlement address.
CancelledExpired without payment.
FailedSettlement couldn't complete. The funds are refunded automatically, unless the payment came through x402 (see below).
RefundedThe funds went back to the refund address.

Settled is the only status that means you've been paid. Fulfil orders on it.

The timeline

Open a transfer to see its details and every step it went through, with links to the transactions.

A settled transfer: amounts, customer, addresses, the settlement transaction and its timeline

Late and partial payments

  • Less than the amount: the transfer waits until the quote expires, then the funds are refunded.
  • More than the amount: the payment settles and the excess goes back to the customer.
  • After the transfer was cancelled: the funds are refunded.
  • A different token than quoted: it's sent back to the refund address automatically. See Refunds and recovery.

Opening transfers yourself

Checkout opens transfers for you. Through the API, a transfer is opened for a quote:

const { data: quote } = await kite.quotes.create({
  body: { chainId, sourceTokenAddress, amount: "49000000" },
});

const { data: transfer } = await kite.transfers.create({
  body: { quoteId: quote.id, refundAddress: customerWallet },
});

transfer.paymentInstructions;
// { caip2Id, address, tokenAddress, amount, expiresAt }

amount is what the customer pays, in the smallest unit of sourceTokenAddress (49000000 is 49 USDC, which has 6 decimals). A quote can only be used once.

On this page