> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bluerails.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Payins (Inbound)

> Understanding Payins: How funds flow into your Bluerails Accounts.

export const MultiAssetAccountDiagram = () => {
  const AccountBoxIcon = () => <svg width="24" height="24" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 mr-3 text-indigo-600 dark:text-indigo-400">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M8 4h10a2 2 0 0 1 2 2v10m-.584 3.412a1.994 1.994 0 0 1 -1.416 .588h-12a2 2 0 0 1 -2 -2v-12c0 -.552 .224 -1.052 .586 -1.414" /> <path d="M8 12h4" /> <path d="M8 16h4" /> <path d="M16 12v4" /> <path d="M3 3l18 18" />
    </svg>;
  const UsdcIcon = () => <svg width="18" height="18" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 mr-2 text-teal-600 dark:text-teal-400">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" /> <path d="M14 9a1 1 0 0 0 -1 -1h-2a1 1 0 0 0 -1 1v6a1 1 0 0 0 1 1h2a1 1 0 0 0 1 -1v-2a1 1 0 0 0 -1 -1h-2" />
    </svg>;
  const CryptoIcon = () => <svg width="18" height="18" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 mr-2 text-emerald-600 dark:text-emerald-400">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M6 6m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M6 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M18 6m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M6 9l0 6" /> <path d="M18 9l0 6" /> <path d="M9 6l6 0" /> <path d="M9 18l6 0" />
    </svg>;
  return <div className="my-8 flex justify-center p-4">
      <div className="flex flex-col border border-gray-200 dark:border-slate-700 bg-white dark:bg-slate-800 rounded-lg shadow-sm w-full max-w-xs sm:max-w-sm p-4">

        <div className="flex items-center pb-3 mb-3 border-b border-gray-200 dark:border-slate-600">
          <AccountBoxIcon />
          <span className="text-base font-medium text-gray-800 dark:text-slate-100">Bluerails Account</span>
        </div>

        <div className="flex flex-col gap-3">
          <div className="flex items-center">
            <UsdcIcon />
            <span className="text-sm text-gray-700 dark:text-slate-200">USDC Balance <span className="text-xs text-gray-500 dark:text-slate-400">(from Fiat)</span></span>
          </div>
          <div className="flex items-center">
            <CryptoIcon />
            <span className="text-sm text-gray-700 dark:text-slate-200">ETH Balance <span className="text-xs text-gray-500 dark:text-slate-400">(Direct Deposit)</span></span>
          </div>
        </div>

      </div>
    </div>;
};

export const CryptoPaymentFlowDiagram = () => {
  const CryptoIcon = () => <svg width="20" height="20" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 mr-2 text-emerald-600 dark:text-emerald-400">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M6 6m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M6 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M18 6m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" /> <path d="M6 9l0 6" /> <path d="M18 9l0 6" /> <path d="M9 6l6 0" /> <path d="M9 18l6 0" />
    </svg>;
  const DepositIcon = () => <svg width="20" height="20" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 mr-2 text-emerald-600 dark:text-emerald-400">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2" /> <path d="M7 11l5 5l5 -5" /> <path d="M12 4l0 12" />
    </svg>;
  const AccountBoxIcon = () => <svg width="20" height="20" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 mr-2 text-indigo-600 dark:text-indigo-400">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M8 4h10a2 2 0 0 1 2 2v10m-.584 3.412a1.994 1.994 0 0 1 -1.416 .588h-12a2 2 0 0 1 -2 -2v-12c0 -.552 .224 -1.052 .586 -1.414" /> <path d="M8 12h4" /> <path d="M8 16h4" /> <path d="M16 12v4" /> <path d="M3 3l18 18" />
    </svg>;
  const ArrowDownIcon = () => <svg width="24" height="24" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 text-slate-400 dark:text-slate-500">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" />
      <path d="M12 5l0 14" />
      <path d="M18 13l-6 6" />
      <path d="M6 13l6 6" />
    </svg>;
  return <div className="my-8 flex flex-col items-center justify-center gap-2 p-4">

      <div className="flex items-center p-3 border border-gray-200 dark:border-slate-700 bg-white dark:bg-slate-800 rounded-lg shadow-sm w-full max-w-xs sm:max-w-sm">
        <CryptoIcon />
        <span className="text-sm text-gray-700 dark:text-slate-200">Crypto Wallet (ETH)</span>
      </div>

      <div className="py-1">
        <ArrowDownIcon />
      </div>

      <div className="flex items-center p-3 border border-gray-200 dark:border-slate-700 bg-white dark:bg-slate-800 rounded-lg shadow-sm w-full max-w-xs sm:max-w-sm">
        <DepositIcon />
        <span className="text-sm text-gray-700 dark:text-slate-200">Direct Crypto Deposit</span>
      </div>

      <div className="py-1">
        <ArrowDownIcon />
      </div>

      <div className="flex items-center p-3 border border-gray-200 dark:border-slate-700 bg-white dark:bg-slate-800 rounded-lg shadow-sm w-full max-w-xs sm:max-w-sm">
        <AccountBoxIcon />
        <span className="text-sm text-gray-700 dark:text-slate-200">Account (+ETH)</span>
      </div>

    </div>;
};

export const FiatPaymentFlowDiagram = () => {
  const BankIcon = () => <svg width="20" height="20" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 mr-2 text-cyan-600 dark:text-cyan-400">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M3 21l18 0" /> <path d="M3 10l18 0" /> <path d="M5 6l7 -3l7 3" /> <path d="M4 10l0 11" /> <path d="M20 10l0 11" /> <path d="M8 14l0 3" /> <path d="M12 14l0 3" /> <path d="M16 14l0 3" />
    </svg>;
  const VirtualAccountIcon = () => <svg width="20" height="20" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 mr-2 text-blue-600 dark:text-blue-400">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M17 9v-4a2 2 0 0 0 -2 -2h-6a2 2 0 0 0 -2 2v4" /> <path d="M7 13m0 2a2 2 0 0 1 2 -2h6a2 2 0 0 1 2 2v4a2 2 0 0 1 -2 2h-6a2 2 0 0 1 -2 -2z" /> <path d="M17 17v2a2 2 0 0 1 -2 2h-6a2 2 0 0 1 -2 -2v-2" /> <path d="M7 7v-2" /> <path d="M17 7v-2" />
    </svg>;
  const ConvertIcon = () => <svg width="20" height="20" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 mr-2 text-amber-600 dark:text-amber-400">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" />
      <path d="M7 10h14l-4 -4" />
      <path d="M17 14h-14l4 4" />
    </svg>;
  const AccountBoxIcon = () => <svg width="20" height="20" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 mr-2 text-indigo-600 dark:text-indigo-400">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" /> <path d="M8 4h10a2 2 0 0 1 2 2v10m-.584 3.412a1.994 1.994 0 0 1 -1.416 .588h-12a2 2 0 0 1 -2 -2v-12c0 -.552 .224 -1.052 .586 -1.414" /> <path d="M8 12h4" /> <path d="M8 16h4" /> <path d="M16 12v4" /> <path d="M3 3l18 18" />
    </svg>;
  const ArrowDownIcon = () => <svg width="24" height="24" viewBox="0 0 24 24" strokeWidth="1.5" stroke="currentColor" fill="none" strokeLinecap="round" strokeLinejoin="round" className="flex-shrink-0 text-slate-400 dark:text-slate-500">
      <path stroke="none" d="M0 0h24v24H0z" fill="none" />
      <path d="M12 5l0 14" />
      <path d="M18 13l-6 6" />
      <path d="M6 13l6 6" />
    </svg>;
  return <div className="my-8 flex flex-col items-center justify-center gap-2">

      <div className="flex items-center p-3 border border-gray-200 dark:border-slate-700 bg-white dark:bg-slate-800 rounded-lg shadow-sm w-full max-w-xs sm:max-w-sm">
        <BankIcon />
        <span className="text-sm text-gray-700 dark:text-slate-200">
          Bank Transfer<span className="block text-xs text-gray-500 dark:text-slate-400">(EUR)</span>
        </span>
      </div>

      <div className="py-1">
        <ArrowDownIcon />
      </div>

      <div className="flex items-center p-3 border border-gray-200 dark:border-slate-700 bg-white dark:bg-slate-800 rounded-lg shadow-sm w-full max-w-xs sm:max-w-sm">
        <VirtualAccountIcon />
        <span className="text-sm text-gray-700 dark:text-slate-200">Virtual Account</span>
      </div>

      <div className="py-1">
        <ArrowDownIcon />
      </div>

      <div className="flex items-center p-3 border border-gray-200 dark:border-slate-700 bg-white dark:bg-slate-800 rounded-lg shadow-sm w-full max-w-xs sm:max-w-sm">
        <ConvertIcon />
        <span className="text-sm text-gray-700 dark:text-slate-200">
           Auto-Convert<span className="block text-xs text-gray-500 dark:text-slate-400">to USDC</span>
         </span>
      </div>

      <div className="py-1">
        <ArrowDownIcon />
      </div>

      <div className="flex items-center p-3 border border-gray-200 dark:border-slate-700 bg-white dark:bg-slate-800 rounded-lg shadow-sm w-full max-w-xs sm:max-w-sm">
        <AccountBoxIcon />
        <span className="text-sm text-gray-700 dark:text-slate-200">
           Bluerails Account<span className="block text-xs text-gray-500 dark:text-slate-400">(+USDC)</span>
         </span>
      </div>

    </div>;
};

## What is a Payin?

In Bluerails, a **Payin** represents an inbound transaction – funds flowing **into** one of your Accounts within your Organization. Payments record
the reception of assets from external sources, whether initiated via traditional banking rails or direct cryptocurrency transfers.

Think of a Payin as the mechanism and record for crediting your Bluerails Accounts with funds from the outside world.

***

## How Payins Work

Funds can be received into your Accounts through two primary methods:

### 1. Fiat via Virtual Accounts

You can provision virtual bank account details (like IBANs) linked to your Bluerails Accounts. When fiat currency (e.g., EUR, USD) is sent to these virtual account details via standard bank transfers (SEPA, SWIFT, etc.), Bluerails receives the funds.

**Crucially, incoming fiat is automatically converted into USDC (USD Coin) stablecoin.** The resulting USDC amount, potentially less any conversion fees, is credited to the designated Bluerails Account balance. A Payment record is created, detailing the original fiat amount, the conversion, and the final USDC credited.

<FiatPaymentFlowDiagram />

### 2. Direct Crypto Deposits

Each Bluerails Account capable of holding a specific cryptocurrency (e.g., USDC, ETH, BTC) can have associated deposit addresses. You can provide these addresses to your customers or use them for your own transfers.

When cryptocurrency is sent directly to the correct address on the corresponding blockchain, Bluerails detects the transaction after network
confirmations. The received crypto amount (less any network fees if applicable by the sender) is credited directly to the balance of that specific
crypto asset within the designated Account. A Payin record is created, documenting the crypto asset, amount, and destination Account.

<CryptoPaymentFlowDiagram />

<Tip>
  Bluerails Accounts are designed to be multi-asset. As shown above, you can receive USDC derived from fiat deposits and also receive other cryptocurrencies like ETH directly into the same account.
</Tip>

### Resulting Account State

After receiving funds from both fiat (converted to USDC) and direct crypto deposits, your Bluerails Account can hold multiple asset balances simultaneously:

<MultiAssetAccountDiagram />

***

## Payin Lifecycle & Status

A Payin typically goes through several stages, reflected in its `status`:

1. **Initiated/Pending:** The transfer has been detected or initiated but is not yet final.
2. **Processing/Converting:** The funds are being processed (e.g., compliance checks, fiat conversion).
3. **Completed:** The funds have been successfully credited to the target Account's balance.
4. **Failed:** The payin could not be completed due to an error.

You can track the status of payins via API calls or by subscribing to webhook events.

<Info>
  Refer to the **[Payin API Reference](/endpoints/payins/get-payment)** for detailed endpoint specifications.
</Info>

***

Once funds are in your Accounts, you can manage them or initiate [Payouts (Outbound)](/concepts/payouts).
