---
title: Send and receive
slug: concepts/onchain-payments/send-and-receive
description: Discover Cross River’s secure crypto payments API for seamless USDC transactions, enabling efficient outbound and inbound payments through a regulated infrastructure.
docTags: 
createdAt: 2025-11-23T08:53:41.361Z
---

## Stablecoin payment flow

Stablecoins can be sent and received using the Cross River [stablecoin payments API](docId\:lnZ2VwmXVahA4yP7mayED). Each transaction is initiated, validated, and reconciled through Cross River regulated infrastructure, ensuring that onchain transfers follow the same operational, compliance, and regulatory frameworks applied to other payment rails.

## Outbound payments (send)

Use the [POST /v1/payments](docId:97ecBPkLpcwxVCxKeo_la) endpoint to send stablecoins to a verified external blockchain address. For outbound payments, **USD is debited from the Cross River account**, and the corresponding USDC amount is delivered onchain.

### How it works

**Step 1: Payment initiation**
Submit a request to `POST /v1/payments` specifying the account number, amount, currency (`USDC`), blockchain (`solana`), and destination blockchain address.

**Step 2: Validation**
Cross River:

- Validates account permissions
- Verifies available balances
- Confirms that the specified blockchain and asset are supported
- Performs any other necessary compliance and regulatory validations

**Step 3: Execution**
Once validated, the transaction is broadcast to the selected blockchain for settlement.

**Step 4: Confirmation**
After settlement, Cross River records the transaction and issues a webhook notification (`Crypto.Payment.Sent`) containing the payment ID and blockchain transaction hash.

**Step 5: Reconciliation**
The completed transaction is reflected in account reporting to support operational and accounting traceability.

## Inbound payments (receive)

Stablecoins may be received into a Cross River-managed onchain address. Inbound transfers are detected and validated once confirmed onchain, after which **USD is credited to the Cross River account**.

### How it works

**Step 1: Address retrieval&#x20;**&#xA;Use [GET /v1/accounts/\{accountNumber}/account-addresses](docId:28f-_LH3atAq88tJCqNTw) to retrieve the receiving blockchain address for the selected network.

**Step 2: Sender transfer initiation** 
A sender, which may be Cross River’s customer or the customer’s customer (i.e. the end user), initiates a stablecoin transfer to the retrieved address using a supported blockchain network.&#x20;

**Step 3: Onchain confirmation** 
Cross River detects the transaction and validates that it matches the account and asset configuration, and issues a `Crypto.Payment.OnchainPaymentDetected` webhook.

**Step 4: PII submission and account credit** 
If sender PII is not being reused from a previous transfer, provide the required sender PII using [POST /v1/payments/\{id}/pii](docId\:A9MDJ5F6zIXzYX4IskuCv). Once the required PII is submitted and the transfer is validated, the equivalent USD amount is credited to the account and reflected in reporting.&#x20;

**Step 5: Notification**
A webhook (`Crypto.Payment.Received`) confirms that the inbound transfer has completed successfully.

## Example

A payment of 1,000 USDC is sent to a supplier.

1. A call is made to `POST /v1/payments`, specifying the supplier’s Solana blockchain address.
2. Cross River validates and executes the transaction on the Solana network.
3. The payment is finalized onchain, subject to network conditions.
4. A webhook notification (`Crypto.Payment.Sent`) is issued containing the payment ID and blockchain transaction hash for reconciliation.
