Skip to main content
This guide walks you through creating your first payment using Carbn’s payment infrastructure. Before initiating payments, ensure your users have completed onboarding and have active status.

Prerequisites

Before you can create payments, you need:
  • Active Users: Users must have active status after successful KYC verification
  • Registered Accounts: Users need registered bank accounts or wallets
  • API Authentication: Valid API key with payment permissions
Users with under_review, rejected, or incomplete status cannot initiate payments.

Steps to make your first payment:

1

Register Destination Account

Before initiating transfers, users need registered destination account (bank accounts or wallets).

Register Bank Account

curl --location --request POST 'https://api.carbnconnect.com/payment/api/v1/accounts/register' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <your-api-key>' \
--data-raw '{
  "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "account_type": "bank_account",
  "account_details": {
    "account_number": "1234567890",
    "routing_number": "021000021",
    "bank_name": "Example Bank",
    "account_holder_name": "John Doe"
  },
  "currency": "USD"
}'
curl --location --request POST 'https://api.carbnconnect.com/payment/api/v1/wallets/register' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <your-api-key>' \
--data-raw '{
  "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "crypto": "USDC",
    wallet_address: "3BsSG...",
    blockchain: "solana",
  "source_currency": "USD"
}'
2

Initiate Onramp Transfer

Now that you have registered a destination wallet, you can initiate an onramp transfer (fiat to stablecoins). Carbn Connect supports two methods for onramp transfers:

Open Banking Transfer

Open Banking provides better visibility and user experience. The deposit links guide users through the payment flow without leaving your application, giving you full control over the user journey.
Regional Availability: Open Banking is currently available for onramp transfers in US, EU, and UK.
curl --location --request POST 'https://api.carbnconnect.com/payment/api/v1/transfers/onramp' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <your-api-key>' \
--data-raw '{
  "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "wallet_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "amount": 100,
  "open_banking": true,
  "redirect_url": "https://www.yourapp.com/payment-success",
  "is_mobile_app": false
}'
{
  "transaction_id": "d5c48677-b85d-4de5-a685-196d0e6596f7",
  "source_currency": "eur",
  "open_banking": {
    "deposit_link": "https://secure.plaid.com/hl/lpps56nr6p98sn9r89341n78s8834q672q",
    "payment_id": "payment-id-production-2308307c-0d61-46d3-9225-50d48f607e36",
    "link_token": "link-production-cf01ae1c-43fa-4e34-896a-23f3389d127d"
  },
  "v_bank": null
}
Open Banking Benefits:
  • Better Visibility: Full payment tracking and monitoring throughout the process
  • Enhanced UX: Users never leave your application during payment flow
  • Real-time Updates: Immediate payment confirmation and status updates
  • Amount Control: Exact amount validation and processing
  • Seamless Integration: Embed payment flow directly in your app
  • Lower Fees: Reduced processing costs compared to traditional methods
Virtual Account method serves as a fallback option or for payment methods not supported by Open Banking. It generates unique bank account details that users can transfer money to from any bank. However, it provides limited visibility - you can only monitor once funds are deposited, with no tracking of when users initiate payments or control over transfer amounts.
curl --location --request POST 'https://api.carbnconnect.com/payment/api/v1/transfers/onramp' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <your-api-key>' \
--data-raw '{
  "user_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "wallet_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}'
{
  "transaction_id": null,
  "source_currency": "eur",
  "open_banking": null,
  "v_bank": {
    "bic": "MODRIE22XXX",
    "iban": "IE44MODR99035511728566",
    "bank_name": "Modulr Finance, Ireland Branch",
    "payment_rail": "sepa"
  }
}
Virtual Account Limitations:
  • Limited Visibility: No tracking until funds arrive - you only know when money lands
  • No Amount Control: Users can send any amount, not necessarily what was requested
  • Payment Uncertainty: No way to know if/when users actually make the transfer
  • Delayed Monitoring: Can only monitor after funds are deposited, not during transfer
When to Use Virtual Accounts:
  • As a fallback when Open Banking is not available
  • For payment methods not supported by Open Banking
  • When users prefer traditional bank transfers
  • For regions outside US/EU/UK where Open Banking isn’t available

What’s Next?

Getting Help