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:

  1. Navigate to Account → Wallets in the dashboard
  2. Connect your Solana wallet (wallet signing required)
  3. Set label: "Main Payout Wallet"
  4. 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:

POST
/api/v1/invoicing-profiles
import requests
url = "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:

POST
/api/v1/invoices
import requests
url = "https://api.orvion.com/api/v1/invoices"
headers = {
"Authorization": "Bearer your-api-key",
"Content-Type": "application/json"
}
data = {
"customer_name": "Customer Company",
"customer_email": "[email protected]",
"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:

GET
/api/v1/invoices
import requests
url = "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
curl -X GET https://api.orvion.com/api/v1/invoices/inv_01HXYZ789DEF \
-H "Authorization: Bearer your-api-key"

What Happens When Buyer Pays

  1. Buyer pays via the hosted invoice page
  2. Invoice status updates: sentpaid
  3. Payment record appears in Money → Collections → Payments
  4. Money arrives directly in your wallet (no escrow, no splits)

Next Steps