Direct Payout Setup
A data provider wants to get paid for a one-off data export. Money goes directly to their Base USDC wallet with no fee sharing.
What You'll Build
- Connect a wallet for receiving payments
- Create an invoicing profile for direct payouts
- Issue an invoice and track its status
Step 1: Connect a Wallet
Note: Wallet connection is currently only available via the dashboard UI. Solana wallets can be connected through Account → Wallets in the dashboard. Wallet connection requires cryptographic signing, which is handled securely through the dashboard interface.
Current Workflow:
- Navigate to Account → Wallets in the dashboard
- Connect your Solana wallet (wallet signing required)
- Set label: "Main Payout Wallet"
- Mark as default payout wallet if desired
For invoicing profiles: You can use any wallet address (including Base, Ethereum, etc.) in the pay_to_address field when creating profiles. The wallet connection UI is specifically for Solana wallets that require signing.
Step 2: Create an Invoicing Profile
Create a profile for direct payout to your Base USDC wallet:
/api/v1/invoicing-profilesimport requestsurl = "https://api.orvion.com/api/v1/invoicing-profiles"headers = {"Authorization": "Bearer your-api-key","Content-Type": "application/json"}data = {"name": "Data Sales – Base USDC","network": "base-mainnet","asset": "USDC","pay_to_address": "0xSELLER_BASE_WALLET","collection_mode": "direct","supports_partial_payments": False,"default_description": "Data invoice via Meshpay","default_tags": ["data", "one-off"],"is_default": True}response = requests.post(url, json=data, headers=headers)profile = response.json()print(f"Profile created: {profile['id']}")
Response:
{
"id": "profile_01HXYZ123ABC",
"organization_id": "org_seller",
"name": "Data Sales – Base USDC",
"network": "base-mainnet",
"asset": "USDC",
"pay_to_address": "0xSELLER_BASE_WALLET",
"collection_mode": "direct",
"supports_partial_payments": false,
"is_default": true,
"is_active": true,
"created_at": "2025-01-15T10:00:00Z",
"updated_at": "2025-01-15T10:00:00Z"
}
Note: No splits are created here — 100% goes to the seller's wallet.
Step 3: Create an Invoice
Issue an invoice using the profile:
/api/v1/invoicesimport requestsurl = "https://api.orvion.com/api/v1/invoices"headers = {"Authorization": "Bearer your-api-key","Content-Type": "application/json"}data = {"customer_name": "Customer Company","amount": 5000.00,"currency": "EUR","description": "One-off access to dataset X","profile_id": "profile_01HXYZ123ABC","status": "sent","due_at": "2025-02-01T10:00:00Z"}response = requests.post(url, json=data, headers=headers)invoice = response.json()print(f"Invoice created: {invoice['number']}")
Response:
{
"id": "inv_01HXYZ789DEF",
"organization_id": "org_seller",
"number": "INV-2025-0001",
"customer_name": "Customer Company",
"customer_email": "[email protected]",
"amount": "5000.00",
"currency": "EUR",
"status": "sent",
"issued_at": "2025-01-15T10:00:00Z",
"due_at": "2025-02-01T10:00:00Z",
"paid_at": null,
"created_at": "2025-01-15T10:00:00Z",
"updated_at": "2025-01-15T10:00:00Z"
}
The invoice service automatically:
- Loads the profile configuration
- Populates x402 payment rail config (Base, USDC, direct to seller wallet)
- Marks invoice as
x402_payable = true
Step 4: Track Invoice Status
List all invoices with filters:
/api/v1/invoicesimport requestsurl = "https://api.orvion.com/api/v1/invoices"headers = {"Authorization": "Bearer your-api-key"}params = {"status": "sent"}response = requests.get(url, headers=headers, params=params)invoices = response.json()print(f"Found {len(invoices)} invoices")
Get a specific invoice:
curl -X GET https://api.orvion.com/api/v1/invoices/inv_01HXYZ789DEF \-H "Authorization: Bearer your-api-key"
What Happens When Buyer Pays
- Buyer pays via the hosted invoice page
- Invoice status updates:
sent→paid - Payment record appears in Money → Collections → Payments
- Money arrives directly in your wallet (no escrow, no splits)
Next Steps
- Escrow with Revenue Splits - Add platform fees
- Analytics & Reporting - Monitor your sales