---
title: Onchain payments
slug: apis/onchain-payments
description: Discover how to utilize USDC for seamless crypto payments on Ethereum and Solana, featuring instant settlements, API integration, and vital compliance guidelines.
docTags: 
createdAt: 2024-08-08T13:22:52.572Z
---

## Onchain payment APIs

Onchain payments enable partners to send and receive supported stablecoins on supported blockchains through Cross River’s regulated banking infrastructure. Cross River facilitates onchain payments using account-bound receiving addresses, external beneficiary management, required compliance checks, and event webhooks for payment status updates.

:::hint{type="info"}
[Get started](docId\:Z-MVwOV-p00-xX082NabK) with Cross River APIs.
:::

**GET calls**

- Add query parameters to filter the response the API returns to general GET calls.
- Use [pagination](docId:6EKvQUYWeVh9x4zxmuKlJ) to control presentation of your results.

## Requirements for stablecoin transfers

To use Cross River’s onchain payments API, your account must be configured for both sending and receiving USDC.

### Outbound (send)

To originate a transfer, you must have:

- The account number funding the transfer
- The beneficiary address (externalAddressId or inline externalAddress block)
- An amount in either USD or blockchain base units (amount). Provide one or the other, not both.
- The currency (for example, USDC) and blockchain (for example, Ethereum or Solana)
- Proper account and product configuration with outbound crypto permissions

### Inbound (receive)

To receive a transfer, you must have:

- A registered account wallet address created through `POST /v1/accounts/{accountNumber}/account-addresses`&#x20;
- The currency and blockchain matching the sender’s transfer&#x20;
- Active inbound payment permissions&#x20;
- A valid [webhook registration](docId\:BN5XtgkJogBe-CtwomCbS)  to receive onchain payment events&#x20;
- Required sender PII submitted through `POST /v1/payments/{id}/pii`, unless sender PII is reused from a previous transfer&#x20;

For inbound payments, Cross River detects the onchain transfer and issues a `Crypto.Payment.OnchainPaymentDetected` webhook once the transaction is identified and matched to the account and asset configuration. After required PII is submitted and the payment is completed, Cross River issues a `Crypto.Payment.Received` webhook.

### Monetary amounts

- `amount` - Either in fiat currency (for example, USD) or blockchain base units for the token (for example, smallest USDC unit)

## API calls

This table provides an overview of the onchain APIs described on this site.

| Action                                                       | API Call                                                                   | Description                                                                        |
| ------------------------------------------------------------ | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| [Create account wallet](docId\:hoEGjxYsVLnf17Bebvxym)        | `POST /v1/accounts/{accountNumber}/account-addresses`                      | Generate a receiving wallet address for an account                                 |
| [Create external beneficiary](docId\:EtIVqZeNyJqD-Tres4Pwi)  | `POST /v1/accounts/{accountNumber}/external-addresses`                     | Register a payout destination wallet                                               |
| [Send stablecoin payment](docId:97ecBPkLpcwxVCxKeo_la)       | `POST /v1/payments`                                                        | Initiate an outbound transfer                                                      |
| [Get account wallet](docId:28f-_LH3atAq88tJCqNTw)            | `GET /v1/accounts/{accountNumber}/account-addresses`                       | Retrieve existing account wallet addresses                                         |
| [Get external beneficiary](docId\:Xzmm6d5K5_abP62vZs7ne)     | `GET /v1/accounts/{accountNumber}/external-addresses`                      | Retrieve registered beneficiary wallets                                            |
| [Send PII](docId\:A9MDJ5F6zIXzYX4IskuCv)                     | `POST /v1/payments/{id}/pii`                                               | Adds originator/sender personally identifiable information to an incoming payment  |
| [Delete wallet](docId\:F7rpN0GO__a-8fWjDSbDA)                | `DELETE /v1/accounts/{accountNumber}/account-addresses/{accountAddressId}` | Deletes or disables a blockchain receiving address associated with an account      |

## &#x20;Related topics&#x20;

- [Webhook events: onchain payments](docId\:l2nT0ZP-yk-ZWesb7d-pt)&#x20;
- [Error codes: onchain payments](docId\:YqQzjx9miO-HHxlYlV9AG)&#x20;





