Skip to main content
POST
/
payment-requests
Create payment request by card provider
curl --request POST \
  --url https://api.venlyfinance.com/v1/payment-requests \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "cardProviderReference": {
    "type": "paymentology",
    "referenceId": "ACC-12345"
  },
  "paymentRequest": {
    "amount": 25,
    "currency": "USD",
    "externalId": "order-67890",
    "description": "Order #67890",
    "idempotencyKey": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  }
}
'
{
  "success": true,
  "result": {
    "id": "d4e5f6a7-b8c9-4012-8345-6789abcdef01",
    "accountId": "b2a1f0e9-8c7d-4e3a-9f21-0a1b2c3d4e5f",
    "amount": {
      "fiat": 25,
      "crypto": "25.000000"
    },
    "originalAmount": {
      "fiat": 25,
      "crypto": "25.000000"
    },
    "currency": "USD",
    "externalId": "order-67890",
    "description": "Order #67890",
    "status": "RESERVED",
    "executions": [
      {
        "id": "e5f6a7b8-c9d0-4123-9456-789abcdef012",
        "walletPairId": "f6a7b8c9-d0e1-4234-a567-89abcdef0123",
        "type": "AUTHORIZATION",
        "chain": "BASE",
        "asset": "USDC",
        "amount": 25,
        "exchangeRate": 1,
        "status": "RESERVED",
        "transactionHash": "0xa1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2",
        "createdAt": "2026-01-15T09:30:00Z",
        "updatedAt": "2026-01-15T09:30:02Z"
      }
    ],
    "createdAt": "2026-01-15T09:30:00Z",
    "updatedAt": "2026-01-15T09:30:02Z"
  }
}
Creates a payment request without an account ID in the path — the account is resolved from cardProviderReference (type + referenceId). The nested paymentRequest body matches the per-account endpoint. Concept guide: Payment requests
The resolved account must be verified, and (self-custody) its wallet ACTIVE with an allowance, before a payment can be reserved. See Account verification.
There is no chain field in the request — the settlement chain is determined by the wallet pair of the account resolved from cardProviderReference. The reference must map to an account that has a wallet on that chain, otherwise the request fails to find a matching wallet pair. The response shape matches the per-account endpoint (amount/originalAmount objects; no GET endpoint).

Authorizations

Body

application/json
cardProviderReference
object
required
paymentRequest
object
required

Response

Payment request created

success
boolean

Indicates whether the request was successful

result
object