Dealer Integration
Download the Postman collection to test all Dealer API endpoints.
Download JSONFor merchants and dealers to accept payments from customers
The Dealer API is designed for merchants and businesses who want to connect to the Acid Panel payment infrastructure through an assigned dealer account. This API allows you to:
Base URL
https://acidpanel.net/api/dealer
All API requests require authentication using API Key, Secret Key, and Timestamp.
| Header | Value |
|---|---|
X-Api-Key |
Your API Key |
X-Hash |
SHA256(api_key + secret_key + timestamp) |
X-Timestamp |
Current Unix timestamp (seconds) |
Content-Type |
application/json |
Timestamp Validation: The timestamp must be within 5 minutes of the server time. Make sure your system clock is synchronized.
$apiKey = 'your_api_key';
$secretKey = 'your_secret_key';
$timestamp = time();
$hash = hash('sha256', $apiKey . $secretKey . $timestamp);
// Headers
$headers = [
'X-Api-Key: ' . $apiKey,
'X-Hash: ' . $hash,
'X-Timestamp: ' . $timestamp,
'Content-Type: application/json'
];
const crypto = require('crypto');
const apiKey = 'your_api_key';
const secretKey = 'your_secret_key';
const timestamp = Math.floor(Date.now() / 1000);
const hash = crypto
.createHash('sha256')
.update(apiKey + secretKey + timestamp)
.digest('hex');
const headers = {
'X-Api-Key': apiKey,
'X-Hash': hash,
'X-Timestamp': timestamp.toString(),
'Content-Type': 'application/json'
};
Get dealer information and available payment methods status.
/api/dealer/settings
{
"success": true,
"message": "Welcome, Demo Dealer",
"dealer_name": "Demo Dealer",
"payment_methods": {
"credit_card": "active",
"eiban": "active",
"manual_iban": "inactive"
}
}
| Parameter | Description |
|---|---|
message |
Welcome message with dealer name |
dealer_name |
Your dealer account name |
payment_methods.credit_card |
Credit card payment status (active/inactive) |
payment_methods.eiban |
E-IBAN payment status (active/inactive) |
payment_methods.manual_iban |
Manual IBAN payment status (active/inactive) |
Get an available manual IBAN for deposit based on amount limits.
/api/dealer/manual-iban/deposit
| Parameter | Type | Required | Description |
|---|---|---|---|
username |
string | Yes | Customer username |
userid |
string | Yes | Customer user ID |
fullname |
string | Yes | Customer full name |
amount |
decimal | Yes | Deposit amount |
{
"success": true,
"message": "Uygun IBAN bulundu.",
"data": {
"tracking_code": "DEP-ABC123XYZ-1733312400",
"bank_name": "Garanti Bankası",
"account_name": "Ahmet Yılmaz",
"iban_no": "TR123456789012345678901234",
"amount": 500.00,
"formatted_iban": "TR12 3456 7890 1234 5678 9012 34"
}
}
Create a withdrawal request to be processed manually.
/api/dealer/manual-iban/withdraw
| Parameter | Type | Required | Description |
|---|---|---|---|
username |
string | Yes | Customer username |
userid |
string | Yes | Customer user ID |
amount |
decimal | Yes | Withdrawal amount |
recipient_name |
string | Yes | Recipient's full name |
recipient_iban |
string | Yes | Recipient's IBAN |
{
"success": true,
"message": "Çekim talebi alındı.",
"data": {
"tracking_code": "WDR-XYZ789ABC-1733312400",
"status": "pending",
"amount": 250.00,
"recipient_name": "Mehmet Demir",
"recipient_iban": "TR987654321098765432109876"
}
}
Get all assigned E-IBANs with current balances.
/api/dealer/eibans
{
"success": true,
"dealer_name": "Demo Dealer",
"total_eibans": 2,
"eibans": [
{
"id": 1,
"iban_no": "TR330006100519786457841326",
"bank_name": "Garanti BBVA",
"account_name": "Demo Account",
"wallet_id": "ABC123XYZ",
"balance": "125000.00",
"available_balance": "120000.00"
},
{
"id": 2,
"iban_no": "TR440006200619786457841327",
"bank_name": "Akbank",
"account_name": "Demo Account 2",
"wallet_id": "DEF456UVW",
"balance": "50000.00",
"available_balance": "50000.00"
}
]
}
| Parameter | Description |
|---|---|
total_eibans |
Total number of assigned E-IBANs |
eibans[].iban_no |
Full IBAN number |
eibans[].wallet_id |
Wallet ID (used for transactions) |
eibans[].balance |
Total balance |
eibans[].available_balance |
Available balance for withdrawal |
Query E-IBAN transaction history. Maximum date range is 3 days. Results are paginated with 100 records per page.
Important Limitation
Date range cannot exceed 3 days. For longer periods, make multiple requests.
/api/dealer/transactions
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet_id |
string | Yes | Wallet ID from E-IBAN query |
start_date |
date | Yes | Start date (YYYY-MM-DD) |
end_date |
date | Yes | End date (YYYY-MM-DD) |
page |
integer | No | Page number (default: 1) |
GET /api/dealer/transactions?wallet_id=ABC123XYZ&start_date=2025-12-01&end_date=2025-12-03&page=1
{
"success": true,
"dealer_name": "Demo Dealer",
"wallet_id": "ABC123XYZ",
"date_range": {
"start_date": "2025-12-01",
"end_date": "2025-12-03"
},
"pagination": {
"current_page": 1,
"per_page": 100,
"total_records": 250,
"total_pages": 3,
"has_more": true
},
"transactions": [
{
"transactionId": "TXN123456",
"amount": "1500.00",
"type": "incoming",
"description": "EFT Transfer",
"senderName": "JOHN DOE",
"senderIban": "TR1234567890123456789012",
"date": "2025-12-01T14:30:00"
}
]
}
| Field | Description |
|---|---|
current_page |
Current page number |
per_page |
Records per page (always 100) |
total_records |
Total number of transactions |
total_pages |
Total number of pages |
has_more |
Whether more pages exist |
| Error Code | Description |
|---|---|
DATE_RANGE_EXCEEDED |
Date range exceeds 3 days limit |
INVALID_DATE_RANGE |
End date is before start date |
WALLET_NOT_ASSIGNED |
Wallet not assigned to dealer |
Initiate money transfer from your E-IBAN to customer's bank account. Use this endpoint for withdrawal payments.
/api/dealer/send-money
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet_id |
string | Yes | Source E-IBAN wallet ID |
recipient_iban |
string | Yes | Recipient's IBAN number |
recipient_name |
string | Yes | Recipient's full name |
amount |
decimal | Yes | Transfer amount (min: 10.00) |
description |
string | No | Transfer description/note |
{
"wallet_id": "ABC123XYZ",
"recipient_iban": "TR330006100519786457841326",
"recipient_name": "JOHN DOE",
"amount": 1500.00,
"description": "Withdrawal payment"
}
{
"success": true,
"message": "Transfer initiated successfully",
"transfer": {
"transfer_id": "TRF-ABC123XYZ",
"status": "pending",
"amount": "1500.00",
"recipient_iban": "TR330006100519786457841326",
"recipient_name": "JOHN DOE",
"created_at": "2025-12-04T14:30:00"
}
}
| Error Code | Description |
|---|---|
INSUFFICIENT_BALANCE |
Not enough balance in source E-IBAN |
INVALID_IBAN |
Recipient IBAN is invalid |
WALLET_NOT_ASSIGNED |
Wallet not assigned to dealer |
MIN_AMOUNT_ERROR |
Amount below minimum (10.00 TRY) |
Check the status of a previously initiated E-IBAN money transfer (Send Money).
/api/dealer/transfer-status
| Parameter | Type | Required | Description |
|---|---|---|---|
transfer_id |
string | Yes | Transfer ID returned from Send Money API |
GET /api/dealer/transfer-status?transfer_id=TRF-ABC123XYZ
{
"success": true,
"dealer_name": "Demo Dealer",
"transfer": {
"transfer_id": "TRF-ABC123XYZ",
"status": "completed",
"amount": "1500.00",
"recipient_iban": "TR330006100519786457841326",
"recipient_name": "JOHN DOE",
"description": "Withdrawal payment",
"created_at": "2025-12-04T14:30:00",
"completed_at": "2025-12-04T14:32:15"
}
}
| Status | Description |
|---|---|
pending |
Transfer is being processed |
completed |
Transfer completed successfully |
failed |
Transfer failed |
cancelled |
Transfer was cancelled |
Create credit card payment for customer.
Important
Credit card feature must be enabled for your dealer account. Contact support to activate.
/api/dealer/credit-card/payment
| Parameter | Type | Required | Description |
|---|---|---|---|
username |
string | Yes | Customer username |
firstname |
string | Yes | First name |
lastname |
string | Yes | Last name |
email |
Yes | Email address | |
phone |
string | Yes | Phone number |
amount |
decimal | Yes | Payment amount (min: 200 TL) |
description |
string | No | Payment description |
{
"success": true,
"message": "Payment created successfully",
"data": {
"tracking_code": "CC-A1B2C3D4-1733312400",
"payment_url": "https://payment.gateway.com/pay/abc123",
"order_id": "CC-20251126-ABC123",
"amount": 500.00,
"currency": "TRY"
}
}
| Parameter | Description |
|---|---|
tracking_code |
Unique tracking code for this transaction (use this for status queries) |
payment_url |
Redirect customer to this URL to complete payment |
order_id |
Internal order ID |
Receive real-time notifications when credit card payment status changes.
How it Works
When payment is completed, failed or expired, we send HTTP POST request to your credit_card_callback_url with transaction details.
| Header | Description |
|---|---|
X-Api-Key |
Your dealer API key |
X-Timestamp |
Unix timestamp |
X-Hash |
SHA256 hash for verification |
{
"success": true,
"tracking_code": "CC-A1B2C3D4-1733312400",
"order_id": "CC-20251204-XYZ789",
"status": "success",
"amount": 500.00,
"currency": "TRY",
"customer_name": "John Doe",
"customer_email": "[email protected]",
"customer_phone": "+905551234567",
"status_message": "Payment completed",
"completed_at": "2025-12-04T14:35:00",
"timestamp": 1733312400,
"hash": "abc123..."
}
{
"success": false,
"tracking_code": "CC-A1B2C3D4-1733312400",
"order_id": "CC-20251204-XYZ789",
"status": "failed",
"amount": 500.00,
"currency": "TRY",
"customer_name": "John Doe",
"error_code": "TIMEOUT",
"error_message": "Transaction expired after 15 minutes",
"timestamp": 1733313300,
"hash": "def456..."
}
$apiKey = 'your_api_key';
$secretKey = 'your_secret_key';
$trackingCode = $payload['tracking_code'];
$status = $payload['status'];
$timestamp = $payload['timestamp'];
$expectedHash = hash('sha256', $apiKey . $secretKey . $trackingCode . $status . $timestamp);
if ($expectedHash === $payload['hash']) {
// Valid callback
} else {
// Invalid callback - reject
}
Your callback URL must respond with HTTP 200 status:
{
"success": true
}
| Status | Description |
|---|---|
success |
Payment completed successfully |
failed |
Payment failed or expired |
Alternative integration method for your website.
What is Site Integration?
Site integration allows your website to communicate with our API using a secure token and secret key.
Our support team is available 24/7 to assist you with integration questions, troubleshooting, and best practices.