Skip to content

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 help or have questions, feel free to reach out to us.

API Authentication

API authentication is handled with HTTP Basic access authentication (email:token).

If you are not using HTTP Basic Auth headers, you can pass authentication credentials directly as input parameters in the request body.

ParameterDescription
emailThe account email address you use to log in to Putler
tokenThe Inbound API key generated in your Putler account

Obtaining your API Key

  1. Log in to your Putler account.
  2. Navigate to Settings > Data Sources.
  3. Click Link a new data source and select Putler Inbound API.
  4. Copy the generated API Key for use in your API requests.

Generating an Inbound API key in Putler settings

API Resource

Validate

Verify that your API key and email credentials are valid before sending transactions.

  • URL: http://api.putler.com/inbound/
  • HTTP Method: HEAD (or POST with action: validate)
ParameterValue
actionvalidate

Response Codes:

Status CodeDescription
200Valid User credentials confirmed
401Unauthorized user (invalid email or token)

Store (Push Data)

Push order, product, and customer transaction records into Putler.

  • URL: http://api.putler.com/inbound/
  • HTTP Method: POST
ParameterValue
actionstore

Request Headers:

HeaderValue
Content-TypeThe MIME type of the request body: application/json (default), text/csv, or application/xml

Transaction Data Model & Fields

Putler uses a flat transaction model (similar to PayPal exports):

  • All data must be sent as an array of transactions, even when sending a single entry.
  • 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 / request: 1 main order record + 3 line item records.

Request Fields Specification

FieldRequiredDescription
DateYesDate the order was created in MM/DD/YYYY format
TimeYesTime the order was created in GMT (24-hour format HH:MM:SS)
TypeYesTransaction 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_IDYesUnique transaction ID for the order
Item_TitleYesMain transaction: 'Shopping Cart'; Line item / Buy Now / Subscription: product title
QuantityYesMain transaction: total count of line items; Line item: quantity purchased for this product
SourceNoName of the shopping cart or payment gateway (e.g. Custom Cart, Stripe)
NameNoCustomer full name
StatusNoOrder status: Pending, Completed, Cancelled, Partially Refunded, or Refunded
CurrencyNo3-character ISO currency code (default is USD)
GrossNoOrder total amount including tax (default is 0.00)
FeeNoPayment gateway transaction fees (default is 0.00)
NetNoNet revenue amount excluding fees (default is 0.00)
From_Email_AddressNoCustomer contact email address
Item_IDNoProduct SKU or unique item ID
Shipping_and_Handling_AmountNoShipping and handling cost (default is 0.00)
Insurance_AmountNoShipping insurance amount (default is 0.00)
DiscountNoTotal discount or coupon amount (default is 0.00)
Sales_TaxNoTotal sales tax collected (default is 0.00)
Option_1_NameNoProduct option / variant attribute 1 name (e.g. Color)
Option_1_ValueNoProduct option / variant attribute 1 value (e.g. Blue)
Option_2_NameNoProduct option / variant attribute 2 name (e.g. Size)
Option_2_ValueNoProduct option / variant attribute 2 value (e.g. Large)
Reference_Txn_IDNoParent transaction ID for refund transactions
BalanceNoAccount balance if applicable (default is 0.00)
NoteNoAdditional order notes or customer instructions
Address_Line_1NoStreet address line 1
Address_Line_2NoStreet address line 2
Town_CityNoCity name
State_ProvinceNoState or province code
Zip_Postal_CodeNoPostal code / ZIP code
CountryNoCountry name or ISO code
Contact_Phone_NumberNoCustomer phone number
Subscription_IDNoRecurring subscription ID (required for subscription transactions)

Specifics on Shopping cart payment

  • For orders with multiple line items, send separate transaction records for each line item.
  • For example, an order with 3 line items requires 4 records: 1 entry for the main order header and 3 entries for each line item, all sent together in a single request.

Transaction Types

TypeUsage
Shopping Cart Payment ReceivedMain order summary header
Shopping Cart ItemIndividual product line item record
RefundCustomer refund transaction
Web Accept Payment ReceivedBuy Now single product purchase
Recurring Payment ReceivedSubscription renewal or recurring payment

Quantity Rules

  • Main Transaction: Sum of all line item quantities
  • Line Item: Quantity purchased for that specific product

Complete 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"
  }
]

Limits & Performance

  • Max Request Size: 30 MB
  • Recommended Batch Size: 1,000–2,000 rows per batch (optimizes processing speed and avoids timeouts)
  • Data Refresh Time: Ingested data appears in the Putler dashboard within 30–40 minutes

Specifics on Shopping Cart CSV Format

DateTimeSourceNameTypeStatusCurrencyGrossFeeNetFrom_Email_AddressTransaction_IDItem_TitleItem_IDShipping_and_Handling_AmountOption_1_NameOption_1_ValueQuantityNoteAddress_Line_1Address_Line_2Town_CityState_ProvinceZip_Postal_CodeCountryContact_Phone_Number
10/24/1316:02:00XYZ GatewayChirag BShopping Cart Payment ReceivedCompletedUSD4090409john@putler.com46Shopping Cart103Order NotePowaiBorivalimumbaiMH444554IN95323135
10/24/1316:02:00XYZ GatewayChirag BShopping Cart ItemCompletedUSD149john@putler.com46Product-1P-450ColorBlack1PowaiBorivalimumbaiMH444554IN95323135
10/24/1316:02:00XYZ GatewayChirag BShopping Cart ItemCompletedUSD150john@putler.com46Product-2P-370ColorRed2PowaiBorivalimumbaiMH444554IN95323135
10/24/1316:02:00XYZ GatewayChirag BShopping Cart ItemCompletedUSD100john@putler.com46Product-3P-190ColorYellow1PowaiBorivalimumbaiMH444554IN95323135

Specifics on Buy Now payment

Each transaction will have only 1 entry.

DateTimeNameTypeStatusCurrencyGrossFeeNetFrom_Email_AddressTransaction_IDItem_TitleItem_IDOption_1_NameInvoice_NumberQuantityBalanceAddress_Line_1Address_Line_2Town_CityState_ProvinceZip_Postal_CodeCountryContact_Phone_Number
10/29/1303:24:52Chirag BWeb Accept Payment ReceivedCompletedUSD29-1.1427.86john@putler.com5EA652410Y693721TProduct-1MUTDColor:red, Size: XL, Style:SimpleRT-98711819.57Street1Street2CityCA95101United States98512154552

Specifics on Refund Transaction

New entry for each refund.

Required field: Reference_Txn_ID

DateTimeNameTypeStatusCurrencyGrossFeeNetFrom_Email_AddressTransaction_IDItem_TitleItem_IDSales_TaxReference_Txn_IDQuantityAddress_Line_1Address_Line_2Town_CityState_ProvinceZip_Postal_CodeCountry
10/29/1313:05:29Chirag BShopping Cart Payment ReceivedPartially RefundedUSD50.5-1.7648.74john@putler.com5X16702303884432UShopping Cart0.51Street1Street2CityCA95101United States
10/29/1313:05:29Chirag BShopping Cart ItemPartially RefundedUSD50john@putler.com5X16702303884432UProduct-1RM-71Street1Street2CityCA95101United States
10/29/1314:05:38Chirag BRefundCompletedUSD-200.58-19.42john@putler.com5L671541UP29273565X16702303884432U

Specifics on Subscription Transaction

Each subscription transaction will have only 1 entry.

Required field: Subscription_ID

DateTimeNameTypeStatusCurrencyGrossFeeNetFrom_Email_AddressTransaction_IDItem_TitleItem_IDBalanceAddress_Line_1Town_CityState_ProvinceZip_Postal_CodeCountryContact_Phone_NumberSubscription_ID
10/29/1303:36:11Chirag BRecurring Payment ReceivedCompletedUSD2-0.361.64john@putler.com0G565730603123547Weather UpdatesMET-2013821.211Test addressSan JoseCA95131United States6543332132Sub-7562396

Refund Handling

Refunds must be sent as separate transactions.

Refund Example

[
  {
    "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"
  }
]

Refund Rules

  • Transaction_ID must be unique.
  • Reference_Txn_ID links to the original order’s Transaction_ID.
  • Gross must be negative.
  • A refund is a single entry (no child line items required).

Refund Strategies

  • Option 1 (Recommended): Send the refund separately as its own transaction with Reference_Txn_ID. This preserves complete transactional history and ensures accurate revenue and refund accounting.
  • Option 2: Update the existing order’s amount and status directly. This is simpler but less granular for historical tracking.

Duplicate Handling

  • Transaction_ID is the unique primary key for every record.
  • Re-sending a transaction with an identical Transaction_ID updates the existing record without creating duplicates.

Status Values

StatusMeaning
PendingOrder awaiting payment (not included in revenue)
CompletedSuccessful paid order (counted in net sales)
CancelledCancelled order
RefundedFully refunded transaction
Partially RefundedPartially refunded order

Error Codes

Status CodeDescription
400Bad Request / Validation Failed (payload not wrapped in array or missing required fields)
401Unauthorized User (invalid email or API token)
404Unknown Action endpoint
500Could not store transactions (internal processing error)

Common Issues & Fixes

  1. 400 Validation Failed

    • Data not wrapped in an array: Wrap your payload in an array [ { ... } ] even if sending a single transaction.
    • Missing required fields (e.g. Date, Time, Type, Transaction_ID, Quantity, Item_Title).
    • Line items missing for shopping cart transactions.
    • Incorrect Type or Status value.
    • Invalid refund structure (e.g. missing Reference_Txn_ID or non-negative Gross).
  2. Data Not Appearing in Dashboard

    • Inbound data requires approximately 30–40 minutes to process and reflect across Putler dashboards.
    • Verify all required fields are present and correctly spelled.
    • Check that date and time formats conform to MM/DD/YYYY and HH:MM:SS (GMT).
  3. Invalid or Unrecognized Fields

    • Putler silently ignores unrecognized fields.
    • Examples of invalid field names: Order_ID (use Transaction_ID), Payment_Method (use Source), From_Name (use Name).
  4. Refund Not Linked to Order

    • Ensure Reference_Txn_ID exactly matches the Transaction_ID of the parent order.

Best Practices

  • Always send the main order transaction and its child line items together in a single request payload.
  • Use unique and immutable Transaction_ID values.
  • For bulk imports, batch transactions in chunks of 1,000–2,000 rows (max 30 MB per payload).
  • Send refunds as separate transactions for accurate reporting.
  • Ensure the JSON data payload is passed in the request body (not as URL query parameters).

Need Help?

If you are still facing issues or need assistance configuring your Inbound API integration:

  • Double-check your payload structure and required field mappings against the specification tables above.
  • Reach out to our team at Putler Support.