Skip to content
Last updated

Send funds to a customer with no Omno UI, using a directRouteId. Direct Link payout supports APM.

Steps

1. Create the payout

POST /v3/public/payout with a directRouteId and the required CreatePayoutRequest fields.

curl -X POST "https://api.omno.com/v3/public/payout" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "orderId": "order-2026-000124",
    "value": 100.00,
    "currency": "EUR",
    "kycVerified": true,
    "customer": {
      "externalUserId": "3183818381183",
      "firstName": "John",
      "lastName": "Doe",
      "email": "john.doe@example.com",
      "phoneNumber": "1 1234567890",
      "dateOfBirth": "1990-12-01",
      "billing": {
        "address": "123 Main St",
        "city": "Atlanta",
        "state": "GA",
        "countryCode": "US",
        "postalCode": "30308"
      }
    },
    "directRouteId": "944732c4608c441aa91379478b91f76e"
  }'

Response:

{
  "payoutId": "944732c4608c441aa91379478b91f76e",
  "status": "CREATED"
}

CreatePayoutRequest fields:

FieldTypeRequiredDescriptionExample
orderIdstringYesYour unique identifier for the payout.order-2026-000124
valuenumberYesPayout amount.100.00
currencystringYesISO 4217 currency.EUR
kycVerifiedbooleanYesWhether the customer is KYC-verified in your system.true
customerobjectYesCustomerRequest.
directRouteIdstringYes (Direct Link)Direct Link Route ID.944732c4608c441aa91379478b91f76e
merchantAdditionalDataobjectNoAdditional data for the transaction.

2. Start processing

POST /v3/public/payout/{payoutId}/process/direct-link with browser and additionalData.

curl -X POST \
  "https://api.omno.com/v3/public/payout/944732c4608c441aa91379478b91f76e/process/direct-link" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "browser": {
      "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
      "language": "en-US",
      "customerIp": "203.0.113.10",
      "javascriptEnabled": true
    },
    "additionalData": {}
  }'

See the Browser field table for how to collect each value. additionalData carries the destination details for the payout method; your Omno integration team provides the exact keys for your providers.

3. Confirm or reject (if manual approval applies)

If the payout enters WAITING_FOR_CONFIRMATION, confirm or reject it via the API — see Payouts & manual approval and the payout API.

4. Final status

Determine the outcome from a webhook or a GET on the transaction.

Failure states

  • Rejected — REJECTED after a reject call; never sent to a provider.
  • PSP failure — FAILED.
  • Timeout — TIMEOUT; may resolve later.
  • Pending resolving asynchronously — PENDING; final status via webhook.

Build it →