/v1/event

Execute a transaction event (payout, pay-in, or payment).

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Overview

Paybis Send API provides a unified endpoint for three operations:

  • Crypto Payouts - Send cryptocurrency to a user's wallet
  • Fiat Payouts - Send fiat currency (EUR SEPA) to a beneficiary IBAN
  • Crypto Pay-ins - Accept cryptocurrency deposits from users
ℹ️

All operations use the same endpoint: POST /event. The operation type is controlled by the name parameter.

Common Parameters (All Operations):

FieldTypeRequiredDescription
event_idUUIDYesUnique identifier for idempotency (UUID v4)
nameStringYesOperation name:payment_execute, payout_execute, or pay_in_execute
timestampISO 8601YesRequest timestamp in UTC format

Crypto Payouts (Send Crypto)

Use this mode when you want to send cryptocurrency to a user's wallet. This operation debits your prefunded balance.

  • Event Name: payment_execute
  • Prerequisite: Requires a valid quote_id for a Buy direction (Fiat → Crypto).
  • Key Action: Validates the quote and immediately broadcasts the transaction to the blockchain.

Request Body (payment_execute)

FieldTypeDescription
payment.transaction.idStringYour internal transaction ID
payment.transaction.order_idStringOrder reference for ledger
payment.transaction.quote_idUUIDQuote ID from quote generation
payment.transaction.merchantStringMerchant/partner name
payment.transaction.fiat.amountString (decimal)Fiat amount (2 decimal places)
payment.transaction.fiat.currencyStringFiat currency (USD, EUR, etc.)
payment.transaction.crypto.amountStringCrypto amount
payment.transaction.crypto.currencyStringCrypto currency (ETH, BTC, etc.)
payment.crypto_destination.crypto_addressStringRecipient's wallet address
payment.crypto_destination.user.user_idStringUnique user identifier

Example Request:

{
  "event_id": "uuid-1234-5678",
  "name": "payment_execute",
  "timestamp": "2025-10-27T10:00:00Z",
  "payment": {
    "transaction": {
      "id": "tx-internal-001",
      "order_id": "order-001",
      "quote_id": "uuid-quote-id",
      "merchant": "MerchantName",
      "fiat": { "amount": "100.00", "currency": "USD" },
      "crypto": { "amount": "0.05", "currency": "ETH" }
    },
    "crypto_destination": {
      "type": "constant_user",
      "crypto_address": "0x123...",
      "user": { "user_id": "user-001" }
    }
  }
}

Fiat Payouts

Send fiat currency (EUR SEPA) to individual or business beneficiary IBAN .

  • Event Name: payout_execute
  • Includes: Commission calculation and balance validation

Request

{
    "event_id": "3f6c8e92-5a41-4d7b-b2e4-9c1f7a6d8b53",
    "name": "payout_execute",
    "payout": {
        "amount": {
            "amount": "5",
            "currency": "EUR"
        },
        "beneficiary": {
            "type": "business",
            "companyName": "Company Name",
            "iban": "ES7921000813610123456789"
        },
        "reference": "Invoice 12345"
    },
    "timestamp": "2023-09-16T18:07:55+00:00",
}

Request Fields

FieldTypeDescription
payment.beneficiary.typeString"individual" or "corporate"
payment.beneficiary.ibanStringIBAN (15-34 characters, EUR format)
payment.beneficiary.first_nameStringFirst name (individual only, Latin chars)
payment.beneficiary.last_nameStringLast name (individual only, Latin chars)
payment.beneficiary.company_nameStringCompany name (corporate only, Latin chars)

Commission

Commission is automatically calculated and included:

Commission Amount = Payout Amount × (Commission % / 100)
Total Deduction = Payout Amount + Commission

Example:

  • Payout: 100.00 EUR
  • Commission %: 2.5%
  • Commission: 2.50 EUR
  • Total Deduction: 102.50 EUR

Balance Validation

Before submitting a fiat payout:

  • Your available balance must be ≥ (payout amount + commission)
  • Real-time validation should check: Available Balance >= Total Deduction
  • If insufficient balance, show error: "Insufficient balance. Required: 102.50 EUR, Available: 50.00 EUR"

Crypto Pay-ins (Receive Crypto)

Use this mode when you want to accept a crypto deposit from a user. This operation generates a deposit address and prepares your system to credit your ledger upon receipt.

  • Event Name: pay_in_execute
  • Prerequisite: Requires a valid quote_id for a Sell direction (Crypto → Fiat).
  • Key Action: Locks the sell rate and returns a blockchain_address where the user must send funds.

Request Body (pay_in_execute)

FieldTypeDescription
event_idUUIDUnique identifier for idempotency.
nameStringMust be set to pay_in_execute.
timestampDate-TimeRequest timestamp.
pay_inObjectContainer for pay-in details.
pay_in.idStringYour internal transaction identifier.
pay_in.quote_idUUIDThe sell quote ID obtained previously.
pay_in.fiatObjectThe fiat amount/currency expected (must match quote).
pay_in.cryptoObjectThe crypto amount/currency expected (must match quote).

Example Request:

{
  "event_id": "uuid-9876-5432",
  "name": "pay_in_execute",
  "timestamp": "2025-10-27T10:00:00Z",
  "pay_in": {
    "id": "tx-in-001",
    "quote_id": "uuid-sell-quote-id",
    "fiat": { "amount": "500.00", "currency": "EUR" },
    "crypto": { "amount": "0.015", "currency": "BTC" }
  }
}

Response

The response format also varies based on the executed event, but always contains a status and result object.

📘

Please note that the blockchain address will be returned only in the webhook or event information (but in some cases it may be null).

Body Params

Public event request. Supports three types of events: - payment_execute - pay_in_execute - payout_execute

uuid
required

Unique event identifier in UUID format. Paybis will use this ID as an idempotency key.

string
enum
required

Event name. - payment_execute: requires payment payload - pay_in_execute: requires pay_in payload - payout_execute: requires payout payload

Allowed:
date-time
required

Request timestamp.

payment
object | null
pay_in
object | null
payout
object | null
Headers
string
required

Base64 encoded string, containing request body, encrypted with the sha512 algorithm using RSA 4096 bit public key

Responses

Language
Credentials
Header
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json