Execute a transaction event (payout, pay-in, or payment).
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
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):
| Field | Type | Required | Description |
|---|---|---|---|
event_id | UUID | Yes | Unique identifier for idempotency (UUID v4) |
name | String | Yes | Operation name:payment_execute, payout_execute, or pay_in_execute |
timestamp | ISO 8601 | Yes | Request 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_idfor a Buy direction (Fiat → Crypto). - Key Action: Validates the quote and immediately broadcasts the transaction to the blockchain.
Request Body (payment_execute)
payment_execute)| Field | Type | Description |
|---|---|---|
payment.transaction.id | String | Your internal transaction ID |
payment.transaction.order_id | String | Order reference for ledger |
payment.transaction.quote_id | UUID | Quote ID from quote generation |
payment.transaction.merchant | String | Merchant/partner name |
payment.transaction.fiat.amount | String (decimal) | Fiat amount (2 decimal places) |
payment.transaction.fiat.currency | String | Fiat currency (USD, EUR, etc.) |
payment.transaction.crypto.amount | String | Crypto amount |
payment.transaction.crypto.currency | String | Crypto currency (ETH, BTC, etc.) |
payment.crypto_destination.crypto_address | String | Recipient's wallet address |
payment.crypto_destination.user.user_id | String | Unique 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
| Field | Type | Description |
|---|---|---|
payment.beneficiary.type | String | "individual" or "corporate" |
payment.beneficiary.iban | String | IBAN (15-34 characters, EUR format) |
payment.beneficiary.first_name | String | First name (individual only, Latin chars) |
payment.beneficiary.last_name | String | Last name (individual only, Latin chars) |
payment.beneficiary.company_name | String | Company 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_idfor a Sell direction (Crypto → Fiat). - Key Action: Locks the sell rate and returns a
blockchain_addresswhere the user must send funds.
Request Body (pay_in_execute)
pay_in_execute)| Field | Type | Description |
|---|---|---|
event_id | UUID | Unique identifier for idempotency. |
name | String | Must be set to pay_in_execute. |
timestamp | Date-Time | Request timestamp. |
pay_in | Object | Container for pay-in details. |
pay_in.id | String | Your internal transaction identifier. |
pay_in.quote_id | UUID | The sell quote ID obtained previously. |
pay_in.fiat | Object | The fiat amount/currency expected (must match quote). |
pay_in.crypto | Object | The 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).