Setting Up Putler Inbound API and Sending Data
Complete guide with code examples to configure Inbound API endpoints and send custom transaction payloads to Putler.
If your data source or custom platform is not directly integrated within Putler, you can use Putler’s Inbound API to push custom sales, customer records, and transaction data into Putler. Once connected, Putler automatically aggregates your custom store records into your unified analytics dashboards.
If you need any assistance, feel free to reach out to our support team.
1. API Authentication
API authentication is handled with HTTP Basic Authentication (email:token).
If you are not using HTTP Basic Auth headers, you can pass authentication credentials directly in the request payload.
| Parameter | Description |
|---|---|
email | The account email address you use to log in to Putler |
token | The Inbound API key generated in your Putler account |
2. Obtaining Your API Key
- Log in to your Putler account.
- Navigate to Settings > Data Sources.
- Click Link a new data source and select Putler Inbound API.
- Copy the generated API Key for use in your API requests.

3. API Resources
Validate Endpoint
Verify that your API key and email credentials are valid before sending transactions.
- URL:
http://api.putler.com/inbound/ - HTTP Method:
HEAD(orPOSTwithaction: validate)
| Parameter | Value |
|---|---|
action | validate |
Response Codes:
| Status Code | Description |
|---|---|
200 | Valid User credentials confirmed |
401 | Unauthorized user (invalid email or token) |
Store Endpoint (Push Data)
Push order, product, and customer transaction records into Putler.
- URL:
http://api.putler.com/inbound/ - HTTP Method:
POST
| Parameter | Value |
|---|---|
action | store |
Request Headers:
| Header | Value |
|---|---|
Content-Type | The MIME type of the request body: application/json (default), text/csv, or application/xml |
4. Transaction Data Model & Fields
Putler uses a flat transaction model (similar to PayPal ledger exports):
- Each line item in an order is sent as an individual record.
- The parent order header and its child line items share the same
Transaction_ID. - For an order with 3 distinct items, submit 4 total records in a single array: 1 main order record + 3 line item records.
Request Fields Specification
| Field | Required | Description |
|---|---|---|
Date | Yes | Date the order was created in MM/DD/YYYY format |
Time | Yes | Time the order was created in GMT (24-hour format HH:MM:SS) |
Type | Yes | Transaction type: Shopping Cart Payment Received (main order), Shopping Cart Item (line item), Web Accept Payment Received (Buy Now), Refund (refund), or Recurring Payment Received (subscription) |
Transaction_ID | Yes | Unique transaction ID for the order |
Item_Title | Yes | Main transaction: 'Shopping Cart'; Line item / Buy Now / Subscription: product title |
Quantity | Yes | Main transaction: total count of line items; Line item: quantity purchased for this product |
Source | No | Name of the shopping cart or payment gateway (e.g. Custom Cart, Stripe) |
Name | No | Customer full name |
Status | No | Order status: Pending, Completed, Canceled, Partially Refunded, or Refunded |
Currency | No | 3-character ISO currency code (default is USD) |
Gross | No | Order total amount including tax (default is 0.00) |
Fee | No | Payment gateway transaction fees (default is 0.00) |
Net | No | Net revenue amount excluding fees (default is 0.00) |
From_Email_Address | No | Customer contact email address |
Item_ID | No | Product SKU or unique item ID |
Shipping_and_Handling_Amount | No | Shipping cost amount (default is 0.00) |
Insurance_Amount | No | Shipping insurance amount (default is 0.00) |
Discount | No | Total discount or coupon amount (default is 0.00) |
Sales_Tax | No | Total sales tax collected (default is 0.00) |
Option_1_Name | No | Product option / variant attribute 1 name (e.g. Color) |
Option_1_Value | No | Product option / variant attribute 1 value (e.g. Blue) |
Option_2_Name | No | Product option / variant attribute 2 name (e.g. Size) |
Option_2_Value | No | Product option / variant attribute 2 value (e.g. Large) |
Reference_Txn_ID | No | Parent transaction ID for refund transactions |
Balance | No | Account balance if applicable (default is 0.00) |
Note | No | Additional order notes or customer instructions |
Address_Line_1 | No | Street address line 1 |
Address_Line_2 | No | Street address line 2 |
Town_City | No | City name |
State_Province | No | State or province code |
Zip_Postal_Code | No | Postal code / ZIP code |
Country | No | Country name or ISO code |
Contact_Phone_Number | No | Customer phone number |
Subscription_ID | No | Recurring subscription ID (required for subscription transactions) |
Transaction Types Reference
| Type | Usage |
|---|---|
| Shopping Cart Payment Received | Main order summary header |
| Shopping Cart Item | Individual product line item record |
| Refund | Customer refund transaction |
| Web Accept Payment Received | Buy Now single product purchase |
| Recurring Payment Received | Subscription renewal or recurring payment |
Order Status Values
| Status | Meaning |
|---|---|
Pending | Order awaiting payment (not included in net revenue) |
Completed | Successful paid order (counted in net sales) |
Canceled | Canceled or voided order |
Refunded | Fully refunded transaction |
Partially Refunded | Partially refunded order |
5. Complete JSON Payload Example
[
{
"Date": "05/01/2026",
"Time": "12:00:00",
"Type": "Shopping Cart Payment Received",
"Status": "Completed",
"Transaction_ID": "ORD123",
"Name": "John Doe",
"From_Email_Address": "john@example.com",
"Currency": "USD",
"Gross": "100.00",
"Quantity": "5",
"Item_Title": "Shopping Cart"
},
{
"Date": "05/01/2026",
"Time": "12:00:00",
"Type": "Shopping Cart Item",
"Status": "Completed",
"Transaction_ID": "ORD123",
"Item_Title": "Product A",
"Quantity": "2"
},
{
"Date": "05/01/2026",
"Time": "12:00:00",
"Type": "Shopping Cart Item",
"Status": "Completed",
"Transaction_ID": "ORD123",
"Item_Title": "Product B",
"Quantity": "3"
}
]
6. Refund Handling
Refunds must be submitted as distinct transactions with a negative Gross amount and linked via Reference_Txn_ID:
[
{
"Date": "05/02/2026",
"Time": "14:00:00",
"Type": "Refund",
"Status": "Completed",
"Transaction_ID": "ORD123_R1",
"Reference_Txn_ID": "ORD123",
"Gross": "-30.00",
"Item_Title": "Product A",
"Quantity": "1",
"Name": "John Doe",
"From_Email_Address": "john@example.com"
}
]
7. Error Codes & Troubleshooting
| Status Code | Description |
|---|---|
400 | Bad Request (payload not wrapped in array or missing required fields) |
401 | Unauthorized (invalid token or email credentials) |
404 | Unknown Action endpoint |
500 | Internal Server Error (could not store transaction batch) |
Common Issues and Solutions
- 400 Bad Request: Ensure your payload is sent as an array of objects
[...], even when pushing a single order. - Duplicate Data: Re-sending a transaction with an identical
Transaction_IDsafely updates the existing record without creating duplicates. - Data Refresh Delay: Data ingested via Inbound API is processed and reflected in your Putler dashboards within 30–40 minutes.
- Unrecognized Fields: Any custom fields not in the specification table are safely ignored during processing.