src_chain equals dst_chain, Apsis quotes a swap instead of a bridge. There is no destination leg, no relayer, and no inventory involved: the router swaps through an allowlisted aggregator and pays the recipient in the same transaction. Same-chain swaps are EVM-only; on Solana the pair is rejected with swap quotes unsupported on destination chain.
GetQuote returns the same_chain_swap case of the response, and PreviewQuote sets same_chain_swap: true.
What differs from a bridge
Quoting a pair where
src_token and dst_token are the same token on the same chain is rejected as unsupported pair. There is nothing to do.
Executing it
Same-chain swaps useswapAndForward on the router, which swaps and forwards to the recipient in one call, and emits SameChainSwap.
The delivered amount is floored at
minAmountOut and capped at amountOut; anything above the cap stays in the vault. Below the floor, the call reverts and the user keeps their funds.
ERC-20 sources need an allowance for amountIn first, or use swapAndForwardWithPermit to sign instead of approving.
The chain adapter builds this for you. It recognizes a same-chain quote from its parameters and emits swapAndForward rather than a deposit, including the approval step when the source token needs one:
Tracking
TheSameChainSwap event is indexed like a deposit. Once it reaches the required confirmations the order is finalized as fulfilled — there is no fulfilling phase, because settlement already happened.
Refunds do not apply in the normal sense: a swap that cannot clear its floor reverts rather than taking the user’s funds. A deposit that does not match a same-chain quote terminates as unsupported_deposit, which needs manual handling. See Refunds.