Skip to main content

What is Fundflow?

Fundflow is Venly’s enterprise API platform that enables businesses to seamlessly convert between traditional fiat currency and cryptocurrency through a comprehensive REST API.

On-Ramp

Convert fiat to cryptocurrency via API

Off-Ramp

Convert cryptocurrency to fiat via API

Key Features

🔒 Enterprise-Grade Security

  • OAuth2 authentication
  • KYB (Know Your Business) verification
  • Optimistic locking for concurrent updates
  • Wallet ownership verification
  • Role-based access control

💰 Transparent Pricing

  • Company-specific fee tiers
  • Volume-based discounts
  • Real-time fee calculation API
  • Clear exchange rates

🌍 Multi-Currency Support

Fiat Currencies: EUR, USD, GBP Payment Networks:
  • EUR_SEPA (European SEPA transfers)
  • USD_WIRE, USD_ACH, USD_SWIFT (US transfers)
  • GBP_FPS, GBP_CHAPS (UK transfers)
  • OTHER_SWIFT (International transfers)
Cryptocurrencies:
  • USDC (Ethereum)
  • EURC (Ethereum)
  • USDS (Ethereum)
  • ETH (Ethereum)
  • POL (Polygon)
Blockchain Networks:
  • Ethereum
  • Polygon
  • Base
  • Arbitrum
  • Sui

Prerequisites

Before you begin, ensure you have: Company Account: Contact Venly to set up your company account
OAuth2 Credentials: Client ID and secret for authentication
API Access: Staging: https://api-fundflow-staging.venly.io/v1 · Production: https://api-fundflow.venly.io/v1
Development Environment: REST API client or SDK

Integration Steps

1

1. Authentication

Obtain an OAuth2 access token from Venly Identity Platform
Use the access token in all API requests:
2

2. Verify Company Status

Check your company’s KYB verification status
Response:
Your company must have kybStatus: "VERIFIED" to create ramp requests.
3

3. Add Bank Accounts

Register company bank accounts for fiat transactions
Status Flow: PENDING → VERIFIED (manual review by Venly)
Bank accounts require manual verification. This process may take 1-2 business days.
4

4. Add Crypto Wallets

Register company cryptocurrency wallets
Status Flow: PENDING → VERIFIEDComplete the verification process to prove wallet ownership.
5

5. Get Available Currency Pairs

Retrieve supported currency pairs for your operationsFor On-Ramp:
For Off-Ramp:
Response:
6

6. Calculate Fees

Calculate fees before creating ramp requests
Response:
7

7. Create Ramp Requests

Create on-ramp or off-ramp transactionsOn-Ramp Example:
Off-Ramp Example:
Request is created in AWAITING_APPROVAL status.
8

8. Approve Ramp Request

Approve the ramp request to proceed
Status changes to AWAITING_FUNDS.
  • On-Ramp: Customer sends fiat to provided deposit bank account
  • Off-Ramp: Customer sends crypto to provided deposit wallet
9

9. Monitor Status

Poll or use webhooks to monitor ramp request status
Status Flow:

User Management

Invite Users

User Roles

Update User Role


Best Practices

Authentication

Token Management: Implement token refresh logic to handle expired tokens gracefully.

Error Handling

Optimistic Locking: Always handle HTTP 409 conflicts by fetching the latest version and retrying.

Pagination

Efficient Pagination: Use appropriate page sizes and implement cursor-based pagination for large datasets.

Webhooks

Real-time Updates: Configure webhooks for real-time notifications instead of polling.
Configure webhooks to receive notifications for:
  • Ramp request status changes
  • Payment received confirmations
  • Transaction completions

Testing

Staging Environment

Use the staging environment for testing:
  • Test OAuth2 authentication
  • Create test ramp requests
  • Verify webhook integrations
  • Test error scenarios

Test Scenarios

  1. Successful On-Ramp: Create, approve, and complete an on-ramp request
  2. Successful Off-Ramp: Create, approve, and complete an off-ramp request
  3. Cancellation: Create and cancel a ramp request
  4. Rejection: Create and reject a ramp request
  5. Version Conflict: Test optimistic locking behavior

Common Integration Patterns

Pattern 1: Automated On-Ramp

Pattern 2: Batch Processing


Security Considerations

Never expose:
  • OAuth2 client secrets
  • Access tokens in client-side code
  • Private keys or seed phrases
  • API credentials in version control

Secure Storage

  • Store credentials in environment variables or secure vaults
  • Use HTTPS for all API communications
  • Implement proper access controls
  • Rotate credentials regularly

API Scopes

Request only the OAuth2 scopes you need:
  • view:ramp-request - View ramp requests
  • create:ramp-request - Create ramp requests
  • approve:ramp-request - Approve ramp requests
  • manage:company-wallet - Manage wallets
  • manage:company-bank-account - Manage bank accounts

Next Steps

API Reference

Explore full API documentation

Accounts Guide

Manage bank accounts & wallets

Transactions

Create and manage ramp requests

Fees

Understand fee structure

Security

Security best practices

Quick Reference

Quick API overview

Multi-Rail Routing

Understand how payments are automatically routed across rails

Support

Need help with integration?