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 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.

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

2. 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


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 (or POST with action: validate)
ParameterValue
actionvalidate

Response Codes:

Status CodeDescription
200Valid User credentials confirmed
401Unauthorized 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
ParameterValue
actionstore

Request Headers:

HeaderValue
Content-TypeThe 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

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, Canceled, 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 cost amount (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)

Transaction Types Reference

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

Order Status Values

StatusMeaning
PendingOrder awaiting payment (not included in net revenue)
CompletedSuccessful paid order (counted in net sales)
CanceledCanceled or voided order
RefundedFully refunded transaction
Partially RefundedPartially 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 CodeDescription
400Bad Request (payload not wrapped in array or missing required fields)
401Unauthorized (invalid token or email credentials)
404Unknown Action endpoint
500Internal Server Error (could not store transaction batch)

Common Issues and Solutions

  1. 400 Bad Request: Ensure your payload is sent as an array of objects [...], even when pushing a single order.
  2. Duplicate Data: Re-sending a transaction with an identical Transaction_ID safely updates the existing record without creating duplicates.
  3. Data Refresh Delay: Data ingested via Inbound API is processed and reflected in your Putler dashboards within 30–40 minutes.
  4. Unrecognized Fields: Any custom fields not in the specification table are safely ignored during processing.