Overview
Customer-Present Cloud enables merchants to integrate point-of-sale (POS) devices for in-person card-present transactions. This solution bridges physical payment terminals with your cloud-based software systems.
Accept EMV chip cards, contactless payments, and traditional magnetic stripe cards through integrated POS devices.
Key Features
EMV Chip Support Accept secure EMV chip card transactions
Contactless Payments Support NFC payments including Apple Pay and Google Pay
Magnetic Stripe Process traditional swipe transactions
PIN Debit Handle PIN-based debit transactions
Supported Processing Modes
Real-time transaction processing with immediate response. Best for:
Traditional POS systems
Immediate transaction confirmation
Simple checkout flows
Characteristics:
Request blocks until complete
Immediate response
Simple error handling
Non-blocking transaction processing with webhook notifications. Best for:
Multi-tasking applications
Long-running transactions
Complex workflows
Characteristics:
Request returns immediately
Webhook notification on completion
Better for slow connections
Device Management
Device Registration
Register POS devices with your gateway account:
Obtain Device
Acquire a compatible POS device from your gateway provider
Register Device
Register the device serial number in the merchant control panel
Configure Device
Set up device parameters (merchant ID, terminal ID, etc.)
Test Device
Verify device connectivity and transaction processing
Device Discovery
Discover available devices on your network:
POST https : //api.ionicfi.com/device/discover
{
"security_key" : "YOUR_API_KEY"
}
Response:
{
"devices" : [
{
"device_id" : "DEVICE12345" ,
"device_name" : "Terminal 1" ,
"status" : "available" ,
"ip_address" : "192.168.1.100"
}
]
}
Transaction Processing
Synchronous Transaction
Process a transaction and wait for the result:
<? php
$url = "https://api.ionicfi.com/device/transact" ;
$data = array (
"security_key" => "YOUR_API_KEY" ,
"device_id" => "DEVICE12345" ,
"type" => "sale" ,
"amount" => "25.00" ,
"processing_mode" => "synchronous"
);
$ch = curl_init ();
curl_setopt ( $ch , CURLOPT_URL , $url );
curl_setopt ( $ch , CURLOPT_POST , 1 );
curl_setopt ( $ch , CURLOPT_POSTFIELDS , http_build_query ( $data ));
curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , true );
curl_setopt ( $ch , CURLOPT_TIMEOUT , 120 ); // Extended timeout for card insertion
$response = curl_exec ( $ch );
curl_close ( $ch );
$result = json_decode ( $response , true );
print_r ( $result );
?>
Asynchronous Transaction
Initiate a transaction and receive webhook notification:
POST https : //api.ionicfi.com/device/transact
{
"security_key" : "YOUR_API_KEY" ,
"device_id" : "DEVICE12345" ,
"type" : "sale" ,
"amount" : "25.00" ,
"processing_mode" : "asynchronous" ,
"webhook_url" : "https://yoursite.com/webhook"
}
Immediate Response:
{
"status" : "pending" ,
"transaction_id" : "TXN123456" ,
"message" : "Transaction initiated"
}
Webhook Notification (when complete):
{
"transaction_id" : "TXN123456" ,
"response" : "1" ,
"responsetext" : "SUCCESS" ,
"amount" : "25.00" ,
"card_type" : "VISA" ,
"last_four" : "1111"
}
Transaction Types
Process a sale transaction with immediate settlement. {
"type" : "sale" ,
"amount" : "25.00"
}
Authorize funds without settlement. {
"type" : "auth" ,
"amount" : "25.00"
}
Refund a previous transaction. {
"type" : "refund" ,
"transaction_id" : "ORIGINAL_TXN_ID" ,
"amount" : "25.00"
}
Void an unsettled transaction. {
"type" : "void" ,
"transaction_id" : "ORIGINAL_TXN_ID"
}
Device Status Monitoring
Monitor device status in real-time:
POST https : //api.ionicfi.com/device/status
{
"security_key" : "YOUR_API_KEY" ,
"device_id" : "DEVICE12345"
}
Response:
{
"device_id" : "DEVICE12345" ,
"status" : "ready" ,
"battery_level" : 85 ,
"last_transaction" : "2025-10-30T10:30:00Z" ,
"firmware_version" : "2.1.5"
}
EMV Transaction Flow
Initiate Transaction
Send transaction request to device via API
Customer Inserts Card
Device prompts customer to insert EMV chip card
PIN Entry (if required)
Customer enters PIN for debit transactions
Authorization
Device communicates with issuer for authorization
Remove Card
Device prompts customer to remove card
Receipt
Print or display receipt to customer
For contactless (NFC) payments:
{
"security_key" : "YOUR_API_KEY" ,
"device_id" : "DEVICE12345" ,
"type" : "sale" ,
"amount" : "25.00" ,
"entry_mode" : "contactless"
}
Contactless transactions typically have faster processing times and reduced friction for customers.
Error Handling
Common device error scenarios:
Error Code Description Resolution DEVICE_OFFLINEDevice not connected Check network connectivity CARD_DECLINEDIssuer declined transaction Request alternative payment CHIP_ERROREMV chip malfunction Try magnetic stripe TIMEOUTTransaction timeout Restart transaction DEVICE_BUSYDevice processing another transaction Wait and retry
Security Features
End-to-End Encryption Card data encrypted from device to processor
EMV Compliance Shift liability for counterfeit fraud
PCI P2PE Point-to-point encryption validation
Tokenization Store tokens instead of card data
Testing
Use test mode to verify device integration:
Test cards provided by the gateway
Sandbox environment for non-production testing
Device simulators for development
Certification process before production
Complete certification testing before processing live transactions with customer cards.
Next Steps