API Architecture
Fundflow API follows RESTful principles with a clear resource-based structure. All endpoints are accessible via the base URL:Core Resources
Company
Manage your company information and KYB status. Endpoints:GET /v1/company- Get company detailsGET /v1/company/users- List company usersPOST /v1/company/users/invite- Invite new userPUT /v1/company/users/{userId}/role- Update user rolePATCH /v1/company/users/{userId}/status- Enable/disable userDELETE /v1/company/users/{userId}- Remove user
kybStatus: PENDING, VERIFIED, DENIEDinvoicesUrl: Link to billing portal
Bank Accounts
Manage company bank accounts for fiat transactions. Endpoints:GET /v1/company-bank-accounts- List all bank accountsPOST /v1/company-bank-accounts- Create new bank accountGET /v1/company-bank-accounts/{id}- Get specific accountPATCH /v1/company-bank-accounts/{id}- Update account name
- EUR_SEPA
- USD_WIRE, USD_ACH, USD_SWIFT
- GBP_FPS, GBP_CHAPS
- OTHER_SWIFT
verificationStatus: PENDING, VERIFIED, DENIEDsupportedRampTypes: ON_RAMP, OFF_RAMP, ON_AND_OFF_RAMP
Crypto Wallets
Manage company cryptocurrency wallets. Endpoints:GET /v1/company-wallets- List all walletsPOST /v1/company-wallets- Register new walletGET /v1/company-wallets/{id}- Get specific walletPATCH /v1/company-wallets/{id}- Update wallet description
- ETHEREUM
- POLYGON
- BASE
- ARBITRUM
- SUI
verificationStatus: PENDING, VERIFIED, DENIEDchain: Blockchain networkaddress: Wallet address
Ramp Requests
Create and manage on-ramp and off-ramp transactions. Endpoints:GET /v1/ramp-requests- List all ramp requestsPOST /v1/ramp-requests- Create new ramp requestGET /v1/ramp-requests/{id}- Get specific requestPOST /v1/ramp-requests/{id}/approve- Approve requestPOST /v1/ramp-requests/{id}/reject- Reject requestPOST /v1/ramp-requests/{id}/cancel- Cancel requestPUT /v1/ramp-requests/{id}/amount- Edit amountPATCH /v1/ramp-requests/{id}/tx-hash- Add transaction hashGET /v1/ramp-requests/export- Export all requests
GET /v1/ramp-requests/on-ramp/pairs- Available on-ramp pairsGET /v1/ramp-requests/off-ramp/pairs- Available off-ramp pairs
rampType: ON_RAMP, OFF_RAMPstatus: Request statusfromDate,toDate: Date rangepaymentReference: Unique payment reference
Fees
Calculate and view fee configuration. Endpoints:GET /v1/fees- Get company fee configurationPOST /v1/fees/calculate- Calculate fee for amount
- Company-specific tiers
- Volume-based pricing
- Separate rates for ON_RAMP and OFF_RAMP
Currencies
Retrieve supported currencies and blockchain networks. Fiat Currencies:GET /v1/fiat-currencies- List all fiat currenciesGET /v1/fiat-currencies/{id}- Get specific currency
GET /v1/crypto-currencies- List all cryptocurrenciesGET /v1/crypto-currencies/{id}- Get specific cryptocurrency
GET /v1/chains- Get supported blockchain networks
Deposit Accounts
View Venly-managed deposit accounts for transactions. Endpoints:GET /v1/deposit-wallets- List deposit wallets (for off-ramp)
chain: Filter by blockchain network
Configuration
Retrieve system configuration and metadata. Endpoints:GET /v1/bank-accounts/config- Get bank account configurationGET /v1/auth/user- Get authenticated user details
Common Patterns
Pagination
All list endpoints support pagination:page: Page number (1-based, default: 1)size: Items per page (default: 100, max varies)sortOn: Field to sort bysortOrder: ASC or DESC
Filtering
Most list endpoints support filtering:Optimistic Locking
Update operations use optimistic locking viaversion field:
- Fetch the latest version:
GET /resource/{id} - Update your data with the new version
- Retry the operation
Status Codes
| Code | Meaning | Action |
|---|---|---|
| 200 | Success | Request completed successfully |
| 201 | Created | Resource created successfully |
| 400 | Bad Request | Check request parameters |
| 401 | Unauthorized | Check authentication token |
| 403 | Forbidden | Insufficient permissions |
| 404 | Not Found | Resource doesn’t exist |
| 405 | Method Not Allowed | Check HTTP method |
| 409 | Conflict | Version conflict - fetch latest and retry |
| 415 | Unsupported Media Type | Check Content-Type header |
| 500 | Internal Server Error | Contact support |
Rate Limiting
Implement best practices for API usage:Data Types
Common Fields
Identifiers:id: UUID format (e.g.,123e4567-e89b-12d3-a456-426614174000)
createdAt,updatedAt,verifiedAt: ISO 8601 format (e.g.,2024-01-15T10:30:00Z)
- Decimal numbers with up to 8 decimal places
- Minimum: 0.00000001
- Integer for optimistic locking
- Increments with each update
Best Practices
Security
✅ Do:- Store credentials securely (environment variables, vaults)
- Use HTTPS for all requests
- Implement token refresh logic
- Validate all input data
- Log API interactions for audit
- Expose credentials in client-side code
- Store tokens in version control
- Share access tokens between environments
- Ignore error responses
Performance
✅ Do:- Use pagination for large datasets
- Cache reference data
- Implement connection pooling
- Use webhooks for real-time updates
- Batch operations when possible
- Poll frequently for status updates
- Fetch all data without pagination
- Make unnecessary API calls
- Ignore rate limits
Error Handling
✅ Do:- Handle all HTTP status codes
- Implement retry logic with backoff
- Log errors for debugging
- Provide meaningful error messages to users
- Handle version conflicts gracefully
- Ignore error responses
- Retry indefinitely
- Expose technical errors to end users
- Skip validation
Quick Reference
Getting Started
Integration guide
API Reference
Full API docs
Accounts
Bank accounts & wallets
Transactions
Ramp requests
Fees
Fee structure
Security
Security practices
Support
Need help with the API?- Email: support@venly.io
- Documentation: docs.venly.io
- API Status: Monitor system status for any issues

