Coupons

5 endpoints
GET /api/v3/venue/coupons

Get all available coupons for a venue

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return coupons updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return coupons updated before this time, e.g. q[updated_at_lt]='2019-07-01'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/coupons" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
code
integer No Legacy status field, always 1
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
coupons
array (object) Yes Discounts
id
integer Yes Discount id
kind
string No discount or reward
applies_to
string No Whether the discount applies to the order or to individual items
auto_apply
boolean No Whether the discount applies without being asked for
allow_stacking
boolean No Whether the discount may combine with others
name
string No Internal name
active
boolean No Whether the discount is active
points
string No Loyalty points cost
redeemable_once
boolean No Whether a customer may redeem it only once
manager_approve
boolean No Whether a manager must approve the redemption
barcode
string No Scannable barcode
owner_id
integer No Id of the venue or merchant that owns the discount
owner_type
string No Venue or Merchant
external_ref
string No Identifier in an external system
amount
integer No Discount amount, in cents or basis points depending on coupon_type
coupon_type
string No How amount is interpreted, e.g. percent or fixed
rounding
string No Rounding rule applied to the result
expires_at
datetime No When the discount stops being valid
starts_at
datetime No When the discount becomes valid
image
string No Discount image URL
background_image
string No Background image URL
payment_method_id
integer No Payment method the discount requires
payment_method_total
integer No Amount that must be paid with that method, in cents
order_type
string No Order type the discount is limited to
order_source
string No Order source the discount is limited to
product_type_ids
array No Qualifying criterion: product types the discount applies to. Empty means no restriction
product_ids
array No Qualifying criterion: products the discount applies to. Empty means no restriction
product_tag_ids
array No Qualifying criterion: product tags the discount applies to. Empty means no restriction
product_brand_ids
array No Qualifying criterion: product brands the discount applies to. Empty means no restriction
product_strain_ids
array No Qualifying criterion: product strains the discount applies to. Empty means no restriction
customer_tag_ids
array No Customer tags the discount is limited to
manifest_item_ids
array No Qualifying criterion: lots the discount applies to. Empty means no restriction
supplier_ids
array No Qualifying criterion: suppliers the discount applies to. Empty means no restriction
venue_room_ids
array No Qualifying criterion: venue rooms the discount applies to. Empty means no restriction
one_item
boolean No Whether the discount applies to a single item only
customer_type
string No Customer type the discount is limited to
customer_level_ids
array No Loyalty levels the discount is limited to
birthday
boolean No Whether it applies only around the customer's birthday
product_weights
array No Qualifying criterion: display weights the discount applies to. Empty means no restriction
min_quantity
integer No Minimum quantity required
min_amount
integer No Minimum order or item amount required, in cents
min_weight
string No Minimum weight required
min_weight_unit
string No Unit of min_weight
days
array No Days of week the discount is valid on
hours
string No Hours the discount is valid during
hour_start
string No Start of the valid window
hour_end
string No End of the valid window
created_by
string No Who created the discount
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp
clicks
integer No Number of times the discount tile has been clicked
inventory_tier_ids
array No Qualifying criterion: pricing tiers the discount applies to. Empty means no restriction
get_quantity
integer No Buy-x-get-y: how many items are given
get_product_type_ids
array No Buy-x-get-y reward criterion: product types eligible to be given
get_product_ids
array No Buy-x-get-y reward criterion: products eligible to be given
get_product_tag_ids
array No Buy-x-get-y reward criterion: product tags eligible to be given
get_product_brand_ids
array No Buy-x-get-y reward criterion: product brands eligible to be given
get_product_strain_ids
array No Buy-x-get-y reward criterion: product strains eligible to be given
get_supplier_ids
array No Buy-x-get-y reward criterion: suppliers eligible to be given
get_venue_room_ids
array No Buy-x-get-y reward criterion: venue rooms eligible to be given
get_manifest_item_ids
array No Buy-x-get-y reward criterion: lots eligible to be given
get_product_weights
array No Buy-x-get-y reward criterion: display weights eligible to be given
get_inventory_tier_ids
array No Buy-x-get-y reward criterion: pricing tiers eligible to be given
tier_weights
array No Qualifying criterion: tier weights the discount applies to. Empty means no restriction
profile_type
string No Customer profile the discount is limited to
wallet_pass_status
string No POSaBIT Pass holder condition: any, pass_holder or non_pass_holder
customer_segment_ids
array No Customer segments the discount is limited to; a customer in any of them qualifies. Empty means no restriction
first_sale
boolean No Whether it applies only to a customer's first sale
is_private
boolean No Whether the discount is restricted to specific customers, assigned through the coupon_customers endpoint
external_redemption_failure_count
integer No Consecutive failures redeeming against the external system
max_redeem_times
integer No Maximum number of redemptions
updated_by
string No Who last updated the discount
blocked_venue_ids
string No Venues the discount is withheld from
display_name
string No Customer facing name, when set
max_amount
integer No Maximum item price the discount may apply to, in cents. 0 means no limit
online_menu_tile_image
string No Menu tile image URL
display_on_menu_deals
boolean No Whether the discount shows on the menu deals page
position
integer No Sort position on the deals page
image_assocs_count
integer No Number of associated images
excluded_product_ids
array No Exclusion: products the discount never applies to
excluded_product_type_ids
array No Exclusion: product types the discount never applies to
excluded_product_tag_ids
array No Exclusion: product tags the discount never applies to
excluded_product_brand_ids
array No Exclusion: product brands the discount never applies to
excluded_product_strain_ids
array No Exclusion: product strains the discount never applies to
excluded_supplier_ids
array No Exclusion: suppliers the discount never applies to
excluded_venue_room_ids
array No Exclusion: venue rooms the discount never applies to
excluded_manifest_item_ids
array No Exclusion: lots the discount never applies to
excluded_product_weights
array No Exclusion: display weights the discount never applies to
rounding_amount
integer No Amount to round to, when rounding is set
integrator_id
integer No Integrator the discount is limited to
client_type
string No Originating client the discount is limited to, e.g. web, app, kiosk, pos
employee_ids
array No Employees permitted to apply the discount
access_levels
array No Access levels permitted to apply the discount
images
array (object) No Discount images and their size variants
name
string No Image name
og
string No Original image URL
lg
string No Large (web) image URL
md
string No Medium image URL
thumb
string No Thumbnail image URL

Response Example

{
  "code": 1,
  "total_records": 67,
  "current_page": 1,
  "total_pages": 67,
  "per_page": 1,
  "coupons": [
    {
      "id": 47667,
      "kind": "discount",
      "applies_to": "item",
      "auto_apply": true,
      "allow_stacking": true,
      "name": "Thirsty Thursday - 10% Off",
      "active": true,
      "points": "0",
      "redeemable_once": false,
      "manager_approve": false,
      "barcode": "460884203",
      "venue_id": 3264,
      "external_ref": null,
      "amount": 1000,
      "coupon_type": "percent",
      "rounding": "none",
      "expires_at": null,
      "starts_at": null,
      "image": {
        "url": "https://pbit-qa.s3.amazonaws.com/coupons/47667/barcode.png"
      },
      "background_image": {
        "url": "https://pbit-qa.s3.amazonaws.com/coupon_backgrounds/47667/background.png",
        "thumb": {
          "url": "https://pbit-qa.s3.amazonaws.com/coupon_backgrounds/47667/thumb_background.png"
        },
        "half_page": {
          "url": "https://pbit-qa.s3.amazonaws.com/coupon_backgrounds/47667/half_page_background.png"
        }
      },
      "payment_method_id": null,
      "payment_method_total": 0,
      "order_type": null,
      "order_source": "",
      "product_type_ids": [
        "",
        "4446"
      ],
      "product_ids": [
        ""
      ],
      "product_tag_ids": [
        ""
      ],
      "product_brand_ids": [
        ""
      ],
      "product_strain_ids": [
        ""
      ],
      "customer_tag_ids": [
        ""
      ],
      "manifest_item_ids": [
        ""
      ],
      "supplier_ids": [
        ""
      ],
      "venue_room_ids": [
        ""
      ],
      "one_item": false,
      "customer_type": "",
      "customer_level_ids": [
        ""
      ],
      "birthday": false,
      "product_weights": [
        ""
      ],
      "min_quantity": null,
      "min_amount": 0,
      "min_weight": "0.0",
      "min_weight_unit": null,
      "days": [
        "",
        "thu"
      ],
      "hours": null,
      "hour_start": "",
      "hour_end": "",
      "created_by": null,
      "created_at": "2019-10-21T15:55:35.000Z",
      "updated_at": "2021-01-25T19:53:14.000Z",
      "clicks": 1,
      "inventory_tier_ids": [
        ""
      ],
      "get_quantity": 1,
      "get_product_type_ids": [
        ""
      ],
      "get_product_ids": [
        ""
      ],
      "get_product_tag_ids": [
        ""
      ],
      "get_product_brand_ids": [
        ""
      ],
      "get_product_strain_ids": [
        ""
      ],
      "get_supplier_ids": null,
      "get_venue_room_ids": null,
      "get_manifest_item_ids": null,
      "get_product_weights": null,
      "get_inventory_tier_ids": null,
      "tier_weights": null,
      "profile_type": "any",
      "first_sale": false,
      "is_private": false,
      "external_redemption_failure_count": 0
    }
  ]
}
GET /api/v3/venue/coupons/{coupon_id}/coupon_customers

List customers with access to a customer specific coupon

Parameters

Name Type In Required Description
coupon_id integer path Yes Coupon ID
page integer query No Page Number
per_page integer query No Results per page (default 1000)

Example

curl -X GET "https://app.posabit.com/api/v3/venue/coupons/{coupon_id}/coupon_customers" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized
404 Not Found

Response Fields

Field Type Required Description
code
integer No Legacy status field, always 1
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
coupon_customers
array (object) Yes Assignments
id
integer Yes Assignment id
coupon_id
integer No Discount id
customer_id
integer No Customer id
redeemed
boolean No Whether the customer has redeemed it
redeemed_at
datetime No When it was redeemed
expires_at
datetime No When the assignment expires
active
boolean No Whether the assignment is active
notes
string No Free-text notes
created_by_type
string No Class of the actor that created the assignment
created_by_id
integer No Id of the actor that created the assignment
customer
object No Basic customer details. Returned by the index action only
id
integer Yes Customer id
first_name
string No First name
last_name
string No Last name
telephone
string No Telephone
email
string No Email
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp
POST /api/v3/venue/coupons/{coupon_id}/coupon_customers

Give a customer access to a customer specific coupon

Post JSON in body {"coupon_customer": {"customer_id": 123, "notes": "Referral reward", "expires_at": "2026-12-31T23:59:59Z"}}

Parameters

Name Type In Required Description
coupon_id integer path Yes Coupon ID
body object body Yes JSON formatted body

Example

curl -X POST "https://app.posabit.com/api/v3/venue/coupons/{coupon_id}/coupon_customers" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
coupon_customer
object Yes The assignment
customer_id
integer No Customer id, from GET /api/v3/venue/customers. Required on create
active
boolean No Whether the assignment is active
notes
string No Free-text notes
expires_at
datetime No When the assignment expires

Responses

Status Description
201 Success
401 Unauthorized
404 Not Found
422 Unprocessable Entity

Response Fields

Field Type Required Description
code
integer No Legacy status field, always 1
coupon_customer
object Yes The assignment. The nested customer object is present on the index action only
id
integer Yes Assignment id
coupon_id
integer No Discount id
customer_id
integer No Customer id
redeemed
boolean No Whether the customer has redeemed it
redeemed_at
datetime No When it was redeemed
expires_at
datetime No When the assignment expires
active
boolean No Whether the assignment is active
notes
string No Free-text notes
created_by_type
string No Class of the actor that created the assignment
created_by_id
integer No Id of the actor that created the assignment
customer
object No Basic customer details. Returned by the index action only
id
integer Yes Customer id
first_name
string No First name
last_name
string No Last name
telephone
string No Telephone
email
string No Email
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp
PATCH /api/v3/venue/coupons/{coupon_id}/coupon_customers/{id}

Update a customer's access to a customer specific coupon

Patch JSON in body {"coupon_customer": {"active": false, "notes": "Updated note", "expires_at": "2026-12-31T23:59:59Z"}}

Parameters

Name Type In Required Description
coupon_id integer path Yes Coupon ID
id integer path Yes CouponCustomer ID
body object body Yes JSON formatted body

Example

curl -X PATCH "https://app.posabit.com/api/v3/venue/coupons/{coupon_id}/coupon_customers/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
coupon_customer
object Yes The assignment
customer_id
integer No Customer id, from GET /api/v3/venue/customers. Required on create
active
boolean No Whether the assignment is active
notes
string No Free-text notes
expires_at
datetime No When the assignment expires

Responses

Status Description
200 Success
401 Unauthorized
404 Not Found
422 Unprocessable Entity

Response Fields

Field Type Required Description
code
integer No Legacy status field, always 1
coupon_customer
object Yes The assignment. The nested customer object is present on the index action only
id
integer Yes Assignment id
coupon_id
integer No Discount id
customer_id
integer No Customer id
redeemed
boolean No Whether the customer has redeemed it
redeemed_at
datetime No When it was redeemed
expires_at
datetime No When the assignment expires
active
boolean No Whether the assignment is active
notes
string No Free-text notes
created_by_type
string No Class of the actor that created the assignment
created_by_id
integer No Id of the actor that created the assignment
customer
object No Basic customer details. Returned by the index action only
id
integer Yes Customer id
first_name
string No First name
last_name
string No Last name
telephone
string No Telephone
email
string No Email
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp
GET /api/v3/venue/coupons/{id}

Get a single discount

Parameters

Name Type In Required Description
id integer path Yes Discount id

Example

curl -X GET "https://app.posabit.com/api/v3/venue/coupons/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
coupon
object Yes The discount
id
integer Yes Discount id
kind
string No discount or reward
applies_to
string No Whether the discount applies to the order or to individual items
auto_apply
boolean No Whether the discount applies without being asked for
allow_stacking
boolean No Whether the discount may combine with others
name
string No Internal name
active
boolean No Whether the discount is active
points
string No Loyalty points cost
redeemable_once
boolean No Whether a customer may redeem it only once
manager_approve
boolean No Whether a manager must approve the redemption
barcode
string No Scannable barcode
owner_id
integer No Id of the venue or merchant that owns the discount
owner_type
string No Venue or Merchant
external_ref
string No Identifier in an external system
amount
integer No Discount amount, in cents or basis points depending on coupon_type
coupon_type
string No How amount is interpreted, e.g. percent or fixed
rounding
string No Rounding rule applied to the result
expires_at
datetime No When the discount stops being valid
starts_at
datetime No When the discount becomes valid
image
string No Discount image URL
background_image
string No Background image URL
payment_method_id
integer No Payment method the discount requires
payment_method_total
integer No Amount that must be paid with that method, in cents
order_type
string No Order type the discount is limited to
order_source
string No Order source the discount is limited to
product_type_ids
array No Qualifying criterion: product types the discount applies to. Empty means no restriction
product_ids
array No Qualifying criterion: products the discount applies to. Empty means no restriction
product_tag_ids
array No Qualifying criterion: product tags the discount applies to. Empty means no restriction
product_brand_ids
array No Qualifying criterion: product brands the discount applies to. Empty means no restriction
product_strain_ids
array No Qualifying criterion: product strains the discount applies to. Empty means no restriction
customer_tag_ids
array No Customer tags the discount is limited to
manifest_item_ids
array No Qualifying criterion: lots the discount applies to. Empty means no restriction
supplier_ids
array No Qualifying criterion: suppliers the discount applies to. Empty means no restriction
venue_room_ids
array No Qualifying criterion: venue rooms the discount applies to. Empty means no restriction
one_item
boolean No Whether the discount applies to a single item only
customer_type
string No Customer type the discount is limited to
customer_level_ids
array No Loyalty levels the discount is limited to
birthday
boolean No Whether it applies only around the customer's birthday
product_weights
array No Qualifying criterion: display weights the discount applies to. Empty means no restriction
min_quantity
integer No Minimum quantity required
min_amount
integer No Minimum order or item amount required, in cents
min_weight
string No Minimum weight required
min_weight_unit
string No Unit of min_weight
days
array No Days of week the discount is valid on
hours
string No Hours the discount is valid during
hour_start
string No Start of the valid window
hour_end
string No End of the valid window
created_by
string No Who created the discount
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp
clicks
integer No Number of times the discount tile has been clicked
inventory_tier_ids
array No Qualifying criterion: pricing tiers the discount applies to. Empty means no restriction
get_quantity
integer No Buy-x-get-y: how many items are given
get_product_type_ids
array No Buy-x-get-y reward criterion: product types eligible to be given
get_product_ids
array No Buy-x-get-y reward criterion: products eligible to be given
get_product_tag_ids
array No Buy-x-get-y reward criterion: product tags eligible to be given
get_product_brand_ids
array No Buy-x-get-y reward criterion: product brands eligible to be given
get_product_strain_ids
array No Buy-x-get-y reward criterion: product strains eligible to be given
get_supplier_ids
array No Buy-x-get-y reward criterion: suppliers eligible to be given
get_venue_room_ids
array No Buy-x-get-y reward criterion: venue rooms eligible to be given
get_manifest_item_ids
array No Buy-x-get-y reward criterion: lots eligible to be given
get_product_weights
array No Buy-x-get-y reward criterion: display weights eligible to be given
get_inventory_tier_ids
array No Buy-x-get-y reward criterion: pricing tiers eligible to be given
tier_weights
array No Qualifying criterion: tier weights the discount applies to. Empty means no restriction
profile_type
string No Customer profile the discount is limited to
wallet_pass_status
string No POSaBIT Pass holder condition: any, pass_holder or non_pass_holder
customer_segment_ids
array No Customer segments the discount is limited to; a customer in any of them qualifies. Empty means no restriction
first_sale
boolean No Whether it applies only to a customer's first sale
is_private
boolean No Whether the discount is restricted to specific customers, assigned through the coupon_customers endpoint
external_redemption_failure_count
integer No Consecutive failures redeeming against the external system
max_redeem_times
integer No Maximum number of redemptions
updated_by
string No Who last updated the discount
blocked_venue_ids
string No Venues the discount is withheld from
display_name
string No Customer facing name, when set
max_amount
integer No Maximum item price the discount may apply to, in cents. 0 means no limit
online_menu_tile_image
string No Menu tile image URL
display_on_menu_deals
boolean No Whether the discount shows on the menu deals page
position
integer No Sort position on the deals page
image_assocs_count
integer No Number of associated images
excluded_product_ids
array No Exclusion: products the discount never applies to
excluded_product_type_ids
array No Exclusion: product types the discount never applies to
excluded_product_tag_ids
array No Exclusion: product tags the discount never applies to
excluded_product_brand_ids
array No Exclusion: product brands the discount never applies to
excluded_product_strain_ids
array No Exclusion: product strains the discount never applies to
excluded_supplier_ids
array No Exclusion: suppliers the discount never applies to
excluded_venue_room_ids
array No Exclusion: venue rooms the discount never applies to
excluded_manifest_item_ids
array No Exclusion: lots the discount never applies to
excluded_product_weights
array No Exclusion: display weights the discount never applies to
rounding_amount
integer No Amount to round to, when rounding is set
integrator_id
integer No Integrator the discount is limited to
client_type
string No Originating client the discount is limited to, e.g. web, app, kiosk, pos
employee_ids
array No Employees permitted to apply the discount
access_levels
array No Access levels permitted to apply the discount
images
array (object) No Discount images and their size variants
name
string No Image name
og
string No Original image URL
lg
string No Large (web) image URL
md
string No Medium image URL
thumb
string No Thumbnail image URL

Customer Queues

2 endpoints
GET /api/v3/venue/customer_queues

Get the venue's available customer queue entries

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page
q[updated_at_gt] datestring query No Only return customer queue entries updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return customer queue entries updated before this time, e.g. q[updated_at_lt]='2019-07-01'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/customer_queues" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
customer_queues
array (object) Yes Queue entries
customer_queue_id
integer Yes Queue entry id
queue
string No Which queue the customer is in
aasm_state
string No Entry state
customer_id
integer No Customer id, when the entry is linked to a customer record
user_id
integer No Id of the employee handling the entry
user_name
string No Full name of that employee. Omitted when no employee is assigned
name
string No Customer name. Requires enhanced_customer_data_access
telephone
string No Telephone. Requires enhanced_customer_data_access
email
string No Email. Requires enhanced_customer_data_access
birth_year
integer No Year of birth. Requires enhanced_customer_data_access
sms_opt_in
boolean No SMS opt in. Requires enhanced_customer_data_access
sms_opt_out
boolean No SMS opt out. Requires enhanced_customer_data_access
customer_notes
string No Notes about the customer. Requires enhanced_customer_data_access
source
string No Where the entry came from
pickup
boolean No Whether the customer is here for a pickup
created_on
string No Date the entry was created (a date, not a timestamp)
processed_at
datetime No When the entry was processed
saved_order
string No Always an empty string. Retained for backwards compatibility
saved_order_data
string No Always an empty string. Retained for backwards compatibility
saved_order_total
string No Always an empty string. Retained for backwards compatibility
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 2,
  "current_page": 1,
  "total_pages": 1,
  "per_page": 50,
  "customer_queues": [
    {
      "queue": 1,
      "customer_queue_id": 5355,
      "customer_id": 183218,
      "user_id": 12507,
      "user_name": "Test User",
      "name": "John Doe",
      "telephone": "",
      "birth_year": 1959,
      "sms_opt_out": false,
      "sms_opt_in": true,
      "email": "test@gmail.com",
      "source": "walk_in",
      "pickup": false,
      "created_on": "2024-10-03",
      "aasm_state": "open",
      "customer_notes": null,
      "created_at": "2024-10-03T20:04:14.000Z",
      "updated_at": "2024-10-03T20:04:14.000Z",
      "processed_at": null,
      "saved_order": "",
      "saved_order_data": "",
      "saved_order_total": ""
    },
    {
      "queue": 2,
      "customer_queue_id": 5356,
      "customer_id": 183219,
      "user_id": 12507,
      "user_name": "Test User",
      "name": "Jane Doe",
      "telephone": "",
      "birth_year": 1975,
      "sms_opt_out": true,
      "sms_opt_in": false,
      "email": "test@gmail.com",
      "source": "walk_in",
      "pickup": false,
      "created_on": "2024-10-03",
      "aasm_state": "open",
      "customer_notes": null,
      "created_at": "2024-10-03T20:04:16.000Z",
      "updated_at": "2024-10-03T20:04:16.000Z",
      "processed_at": null,
      "saved_order": "",
      "saved_order_data": "",
      "saved_order_total": ""
    }
  ]
}
POST /api/v3/venue/customer_queues

Add a customer to the venue's queue

When customer_id is omitted, the customer is looked up by telephone, then by drivers_license, among the venue's customers. An entry with no matching customer is a guest entry and must carry a name. A customer_id must belong to the venue's merchant (ids come from GET /api/v3/venue/customers); any other id is refused with 404.

Parameters

Name Type In Required Description
body object body Yes Queue entry

Example

curl -X POST "https://app.posabit.com/api/v3/venue/customer_queues" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
customer_queue
object Yes The queue entry
customer_id
integer No Customer id
telephone
string No Used only to look up the customer when customer_id is omitted
drivers_license
string No Used only to look up the customer when customer_id is omitted and no telephone matches
name
string No Customer name. Required for a guest entry; defaults to the customer's full name otherwise
source
string Yes One of: walk_in, order_ahead
pickup
boolean No Whether the customer is here for a pickup

Responses

Status Description
200 Success
401 Unauthorized
404 Cannot find customer
422 Validation failed, e.g. the customer is already in the queue or a guest entry has no name

Response Fields

Field Type Required Description
customer_queue_id
integer Yes Queue entry id
queue
string No Which queue the customer is in
aasm_state
string No Entry state
customer_id
integer No Customer id, when the entry is linked to a customer record
user_id
integer No Id of the employee handling the entry
user_name
string No Full name of that employee. Omitted when no employee is assigned
name
string No Customer name. Requires enhanced_customer_data_access
telephone
string No Telephone. Requires enhanced_customer_data_access
email
string No Email. Requires enhanced_customer_data_access
birth_year
integer No Year of birth. Requires enhanced_customer_data_access
sms_opt_in
boolean No SMS opt in. Requires enhanced_customer_data_access
sms_opt_out
boolean No SMS opt out. Requires enhanced_customer_data_access
customer_notes
string No Notes about the customer. Requires enhanced_customer_data_access
source
string No Where the entry came from
pickup
boolean No Whether the customer is here for a pickup
created_on
string No Date the entry was created (a date, not a timestamp)
processed_at
datetime No When the entry was processed
saved_order
string No Always an empty string. Retained for backwards compatibility
saved_order_data
string No Always an empty string. Retained for backwards compatibility
saved_order_total
string No Always an empty string. Retained for backwards compatibility
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Customer Tags

1 endpoints
Customer tags are the perfect way to organize your different customer groups. Building customer groups allows for easier filtering, targeted discounts, and custom data metrics. Customer tags are completely customizable by easily creating new tags and connecting them to specific customers.
GET /api/v3/venue/customer_tags

Get the merchant's active customer tags

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return customer tags updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return customer tags updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/customer_tags" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
customer_tags
array (object) Yes Customer tags
id
integer Yes Customer tag id
merchant_id
integer No Merchant id
name
string No Tag name
description
string No Tag description
color
string No Display colour
active
boolean No Whether the tag is active
pos_enabled
boolean No Whether the tag is selectable in the POS
discount_limit
float No Maximum discount allowed for customers with this tag
taggings_count
integer No Number of customers carrying the tag
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 13,
  "current_page": 1,
  "total_pages": 1,
  "per_page": 1000,
  "customer_tags": [
    {
      "id": 1,
      "merchant_id": 7684,
      "name": "veteran",
      "active": true,
      "pos_enabled": true,
      "description": "",
      "discount_limit": null,
      "taggings_count": 2226,
      "color": "#AE2014",
      "created_at": "2019-05-30T22:49:21.000Z",
      "updated_at": "2019-10-07T19:47:10.000Z"
    },
    {
      "id": 2,
      "merchant_id": 7684,
      "name": "Industry",
      "active": true,
      "pos_enabled": true,
      "description": "",
      "discount_limit": null,
      "taggings_count": 275,
      "color": "#5B77D0",
      "created_at": "2019-06-03T16:58:55.000Z",
      "updated_at": "2019-10-07T19:47:17.000Z"
    }
  ]
}

Customers

6 endpoints
POSaBIT offers custom profiles for each of your loyalty customers. With just the scan of the customer's ID, the point of sale pulls up the customer’s favorite types of products, displays their purchase history, shows their available loyalty points/rewards, and even has an area where you can easily make notes about the customer.
GET /api/v3/venue/customers

Get all customers for a venue

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return customers updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return customers updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[telephone_eq] string query No Filter results using ransack syntax (e.g. q[customer_telephone_eq]='8085550100' would return customers where telephone = 8085550100)

Example

curl -X GET "https://app.posabit.com/api/v3/venue/customers" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success (returns an array of customers)
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
customers
array (object) Yes Customers, each wrapped under a "customer" key
customer
object Yes The customer
id
integer Yes Customer Id (Read-only)
first_name
string No First Name (in responses, requires enhanced_customer_data_access)
last_name
string No Last Name (in responses, requires enhanced_customer_data_access)
birth_year
integer No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg) (Input only; not returned in responses)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
id_expiration
string No ID expiration date (Read-only; requires enhanced_customer_data_access)
medical_card_expiration
string No Medical card expiration date (Read-only; requires enhanced_customer_data_access)
drivers_license
string No Driver's license / ID number (Read-only; requires enhanced_customer_data_access)
customer_tags
array No Customer tags (Read-only; requires enhanced_customer_data_access)
terms_agreed
boolean No Terms Agreed
points
integer No Points (Read-only)
points_adjustment
string No Points to add or subtract (Input only; not returned in responses)
loyalty
boolean No Loyalty enrolled (Read-only)
loyalty_number
string No Loyalty number (Read-only)
qr_code
string No Loyalty QR code (Read-only)
created_at
string No Created timestamp (Read-only)
updated_at
string No Updated timestamp (Read-only)

Response Example

{
  "total_records": 34,
  "current_page": 1,
  "total_pages": 34,
  "per_page": 1,
  "customers": [
    {
      "customer": {
        "id": 279160,
        "first_name": "Jane",
        "last_name": "Doe",
        "birth_year": null,
        "gender": "female",
        "telephone": "5551111111",
        "email": "test@gmail.com",
        "active": true,
        "sms_opt_out": false,
        "sms_opt_in": true,
        "signature": "",
        "address": "",
        "zipcode": "98033",
        "city": "",
        "state": "WA",
        "birthday": null,
        "customer_type": "medical",
        "terms_agreed": false,
        "points": 105
      }
    }
  ]
}
POST /api/v3/venue/customers

Create a Customer

Post JSON in body {"customer": {"first_name": "John"...}}

Parameters

Name Type In Required Description
body object body Yes JSON formatted body

Example

curl -X POST "https://app.posabit.com/api/v3/venue/customers" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "customer": {
    "first_name": "Test",
    "last_name": "User",
    "gender": "female",
    "telephone": "5551234567",
    "email": "test@posabit.com",
    "active": 1,
    "sms_opt_out": 1,
    "address": "123 water lane",
    "zipcode": "12345",
    "city": "Seattle",
    "state": "WA",
    "birthday": "01/01/1990",
    "terms_agreed": 1,
    "customer_type": "medical"
  }
}'

Request Body

{
  "customer": {
    "first_name": "Test",
    "last_name": "User",
    "gender": "female",
    "telephone": "5551234567",
    "email": "test@posabit.com",
    "active": 1,
    "sms_opt_out": 1,
    "address": "123 water lane",
    "zipcode": "12345",
    "city": "Seattle",
    "state": "WA",
    "birthday": "01/01/1990",
    "terms_agreed": 1,
    "customer_type": "medical"
  }
}

Request Body Fields

Field Type Required Description
customer
object Yes The customer
id
integer Yes Customer Id (Read-only)
first_name
string No First Name (in responses, requires enhanced_customer_data_access)
last_name
string No Last Name (in responses, requires enhanced_customer_data_access)
birth_year
integer No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg) (Input only; not returned in responses)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
id_expiration
string No ID expiration date (Read-only; requires enhanced_customer_data_access)
medical_card_expiration
string No Medical card expiration date (Read-only; requires enhanced_customer_data_access)
drivers_license
string No Driver's license / ID number (Read-only; requires enhanced_customer_data_access)
customer_tags
array No Customer tags (Read-only; requires enhanced_customer_data_access)
terms_agreed
boolean No Terms Agreed
points
integer No Points (Read-only)
points_adjustment
string No Points to add or subtract (Input only; not returned in responses)
loyalty
boolean No Loyalty enrolled (Read-only)
loyalty_number
string No Loyalty number (Read-only)
qr_code
string No Loyalty QR code (Read-only)
created_at
string No Created timestamp (Read-only)
updated_at
string No Updated timestamp (Read-only)

Responses

Status Description
200 Success
204 Record not found
400 Bad Request

Response Fields

Field Type Required Description
customer
object Yes The customer
id
integer Yes Customer Id (Read-only)
first_name
string No First Name (in responses, requires enhanced_customer_data_access)
last_name
string No Last Name (in responses, requires enhanced_customer_data_access)
birth_year
integer No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg) (Input only; not returned in responses)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
id_expiration
string No ID expiration date (Read-only; requires enhanced_customer_data_access)
medical_card_expiration
string No Medical card expiration date (Read-only; requires enhanced_customer_data_access)
drivers_license
string No Driver's license / ID number (Read-only; requires enhanced_customer_data_access)
customer_tags
array No Customer tags (Read-only; requires enhanced_customer_data_access)
terms_agreed
boolean No Terms Agreed
points
integer No Points (Read-only)
points_adjustment
string No Points to add or subtract (Input only; not returned in responses)
loyalty
boolean No Loyalty enrolled (Read-only)
loyalty_number
string No Loyalty number (Read-only)
qr_code
string No Loyalty QR code (Read-only)
created_at
string No Created timestamp (Read-only)
updated_at
string No Updated timestamp (Read-only)

Response Example

{
  "customer": {
    "id": 279160,
    "first_name": "Jane",
    "last_name": "Doe",
    "birth_year": null,
    "gender": "female",
    "telephone": "5551111111",
    "email": "test@gmail.com",
    "active": true,
    "sms_opt_out": false,
    "sms_opt_in": true,
    "signature": "",
    "address": "",
    "zipcode": "98033",
    "city": "",
    "state": "WA",
    "birthday": null,
    "customer_type": "medical",
    "terms_agreed": false,
    "points": 105
  }
}
GET /api/v3/venue/customers/{id}

Read a customer

Parameters

Name Type In Required Description
id integer path Yes Customer ID

Example

curl -X GET "https://app.posabit.com/api/v3/venue/customers/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters
500 Internal Server Error

Response Fields

Field Type Required Description
customer
object Yes The customer
id
integer Yes Customer Id (Read-only)
first_name
string No First Name (in responses, requires enhanced_customer_data_access)
last_name
string No Last Name (in responses, requires enhanced_customer_data_access)
birth_year
integer No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg) (Input only; not returned in responses)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
id_expiration
string No ID expiration date (Read-only; requires enhanced_customer_data_access)
medical_card_expiration
string No Medical card expiration date (Read-only; requires enhanced_customer_data_access)
drivers_license
string No Driver's license / ID number (Read-only; requires enhanced_customer_data_access)
customer_tags
array No Customer tags (Read-only; requires enhanced_customer_data_access)
terms_agreed
boolean No Terms Agreed
points
integer No Points (Read-only)
points_adjustment
string No Points to add or subtract (Input only; not returned in responses)
loyalty
boolean No Loyalty enrolled (Read-only)
loyalty_number
string No Loyalty number (Read-only)
qr_code
string No Loyalty QR code (Read-only)
created_at
string No Created timestamp (Read-only)
updated_at
string No Updated timestamp (Read-only)

Response Example

{
  "customer": {
    "id": 279160,
    "first_name": "Jane",
    "last_name": "Doe",
    "birth_year": null,
    "gender": "female",
    "telephone": "5551111111",
    "email": "test@gmail.com",
    "active": true,
    "sms_opt_out": false,
    "sms_opt_in": true,
    "signature": "",
    "address": "",
    "zipcode": "98033",
    "city": "",
    "state": "WA",
    "birthday": null,
    "customer_type": "medical",
    "terms_agreed": false,
    "points": 105
  }
}
PATCH /api/v3/venue/customers/{id}

Update a Customer

Patch JSON in body {"customer": {"first_name": "John"...}}

Parameters

Name Type In Required Description
id integer path Yes Customer ID
body object body Yes JSON formatted body

Example

curl -X PATCH "https://app.posabit.com/api/v3/venue/customers/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
customer
object Yes The customer
id
integer Yes Customer Id (Read-only)
first_name
string No First Name (in responses, requires enhanced_customer_data_access)
last_name
string No Last Name (in responses, requires enhanced_customer_data_access)
birth_year
integer No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg) (Input only; not returned in responses)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
id_expiration
string No ID expiration date (Read-only; requires enhanced_customer_data_access)
medical_card_expiration
string No Medical card expiration date (Read-only; requires enhanced_customer_data_access)
drivers_license
string No Driver's license / ID number (Read-only; requires enhanced_customer_data_access)
customer_tags
array No Customer tags (Read-only; requires enhanced_customer_data_access)
terms_agreed
boolean No Terms Agreed
points
integer No Points (Read-only)
points_adjustment
string No Points to add or subtract (Input only; not returned in responses)
loyalty
boolean No Loyalty enrolled (Read-only)
loyalty_number
string No Loyalty number (Read-only)
qr_code
string No Loyalty QR code (Read-only)
created_at
string No Created timestamp (Read-only)
updated_at
string No Updated timestamp (Read-only)

Responses

Status Description
200 Success
204 Record not found
400 Bad Request

Response Fields

Field Type Required Description
customer
object Yes The customer
id
integer Yes Customer Id (Read-only)
first_name
string No First Name (in responses, requires enhanced_customer_data_access)
last_name
string No Last Name (in responses, requires enhanced_customer_data_access)
birth_year
integer No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg) (Input only; not returned in responses)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
id_expiration
string No ID expiration date (Read-only; requires enhanced_customer_data_access)
medical_card_expiration
string No Medical card expiration date (Read-only; requires enhanced_customer_data_access)
drivers_license
string No Driver's license / ID number (Read-only; requires enhanced_customer_data_access)
customer_tags
array No Customer tags (Read-only; requires enhanced_customer_data_access)
terms_agreed
boolean No Terms Agreed
points
integer No Points (Read-only)
points_adjustment
string No Points to add or subtract (Input only; not returned in responses)
loyalty
boolean No Loyalty enrolled (Read-only)
loyalty_number
string No Loyalty number (Read-only)
qr_code
string No Loyalty QR code (Read-only)
created_at
string No Created timestamp (Read-only)
updated_at
string No Updated timestamp (Read-only)
PUT /api/v3/venue/customers/{id}/customer_tags/add

Add tags to a Customer

Ids that are not customer tags of the venue's merchant are ignored, as are tags the customer already has. Responds with the updated customer.

Parameters

Name Type In Required Description
id integer path Yes Customer ID
body object body Yes JSON formatted body

Example

curl -X PUT "https://app.posabit.com/api/v3/venue/customers/{id}/customer_tags/add" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "tag_ids": [
    3
  ]
}'

Request Body

{
  "tag_ids": [
    3
  ]
}

Request Body Fields

Field Type Required Description
tag_ids
array (integer) Yes Customer tag ids

Responses

Status Description
200 Success
404 Cannot find customer

Response Fields

Field Type Required Description
customer
object Yes The customer
id
integer Yes Customer Id (Read-only)
first_name
string No First Name (in responses, requires enhanced_customer_data_access)
last_name
string No Last Name (in responses, requires enhanced_customer_data_access)
birth_year
integer No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg) (Input only; not returned in responses)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
id_expiration
string No ID expiration date (Read-only; requires enhanced_customer_data_access)
medical_card_expiration
string No Medical card expiration date (Read-only; requires enhanced_customer_data_access)
drivers_license
string No Driver's license / ID number (Read-only; requires enhanced_customer_data_access)
customer_tags
array No Customer tags (Read-only; requires enhanced_customer_data_access)
terms_agreed
boolean No Terms Agreed
points
integer No Points (Read-only)
points_adjustment
string No Points to add or subtract (Input only; not returned in responses)
loyalty
boolean No Loyalty enrolled (Read-only)
loyalty_number
string No Loyalty number (Read-only)
qr_code
string No Loyalty QR code (Read-only)
created_at
string No Created timestamp (Read-only)
updated_at
string No Updated timestamp (Read-only)

Response Example

{
  "customer": {
    "id": 1448750,
    "first_name": "JANE",
    "terms_agreed": false,
    "points": 0,
    "loyalty": true,
    "loyalty_number": "1448750",
    "last_name": "",
    "birth_year": null,
    "gender": "female",
    "telephone": "5552655555",
    "email": "",
    "active": true,
    "sms_opt_out": true,
    "sms_opt_in": false,
    "address": "",
    "zipcode": "98119",
    "city": "SEATTLE",
    "state": "WA",
    "birthday": null,
    "customer_type": "medical",
    "id_expiration": "2032-01-01",
    "medical_card_expiration": "2026-01-01",
    "drivers_license": "WDLB",
    "customer_tags": [
      {
        "id": 296,
        "merchant_id": 7684,
        "name": "Industry",
        "active": true,
        "pos_enabled": true,
        "manager_approval": true,
        "description": "",
        "discount_limit": null,
        "taggings_count": 2,
        "color": "#d82206",
        "created_at": "2023-12-12T20:07:52.000Z",
        "updated_at": "2023-12-12T20:08:09.000Z"
      },
      {
        "id": 3,
        "merchant_id": 7684,
        "name": "Local Business",
        "active": true,
        "pos_enabled": true,
        "manager_approval": false,
        "description": "",
        "discount_limit": null,
        "taggings_count": 5924,
        "color": "#AB1E1C",
        "created_at": "2019-06-04T15:17:53.000Z",
        "updated_at": "2021-07-19T16:46:47.000Z"
      }
    ]
  }
}
PUT /api/v3/venue/customers/{id}/customer_tags/remove

Remove tags from a Customer

Ids the customer is not tagged with are ignored. Responds with the updated customer.

Parameters

Name Type In Required Description
id integer path Yes Customer ID
body object body Yes JSON formatted body

Example

curl -X PUT "https://app.posabit.com/api/v3/venue/customers/{id}/customer_tags/remove" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "tag_ids": [
    3
  ]
}'

Request Body

{
  "tag_ids": [
    3
  ]
}

Request Body Fields

Field Type Required Description
tag_ids
array (integer) Yes Customer tag ids

Responses

Status Description
200 Success
404 Cannot find customer

Response Fields

Field Type Required Description
customer
object Yes The customer
id
integer Yes Customer Id (Read-only)
first_name
string No First Name (in responses, requires enhanced_customer_data_access)
last_name
string No Last Name (in responses, requires enhanced_customer_data_access)
birth_year
integer No Birth Year (Read-only)
gender
string No Gender
telephone
string No Telephone (Update not allowed)
email
string No Email
active
boolean No Active
sms_opt_out
boolean No SMS Opt Out
sms_opt_in
boolean No SMS Opt In (Read-only)
signature
string No Signature (base64 encoded jpeg) (Input only; not returned in responses)
address
string No Address
zipcode
string No ZIP Code
city
string No City
state
string No State
birthday
string No Birthday
customer_type
string No Customer Type
id_expiration
string No ID expiration date (Read-only; requires enhanced_customer_data_access)
medical_card_expiration
string No Medical card expiration date (Read-only; requires enhanced_customer_data_access)
drivers_license
string No Driver's license / ID number (Read-only; requires enhanced_customer_data_access)
customer_tags
array No Customer tags (Read-only; requires enhanced_customer_data_access)
terms_agreed
boolean No Terms Agreed
points
integer No Points (Read-only)
points_adjustment
string No Points to add or subtract (Input only; not returned in responses)
loyalty
boolean No Loyalty enrolled (Read-only)
loyalty_number
string No Loyalty number (Read-only)
qr_code
string No Loyalty QR code (Read-only)
created_at
string No Created timestamp (Read-only)
updated_at
string No Updated timestamp (Read-only)

Response Example

{
  "customer": {
    "id": 1448750,
    "first_name": "JANE",
    "terms_agreed": false,
    "points": 0,
    "loyalty": true,
    "loyalty_number": "1448750",
    "last_name": "",
    "birth_year": null,
    "gender": "female",
    "telephone": "5552655555",
    "email": "",
    "active": true,
    "sms_opt_out": true,
    "sms_opt_in": false,
    "address": "",
    "zipcode": "98119",
    "city": "SEATTLE",
    "state": "WA",
    "birthday": null,
    "customer_type": "medical",
    "id_expiration": "2032-01-01",
    "medical_card_expiration": "2026-01-01",
    "drivers_license": "WDLB",
    "customer_tags": [
      {
        "id": 296,
        "merchant_id": 7684,
        "name": "Industry",
        "active": true,
        "pos_enabled": true,
        "manager_approval": true,
        "description": "",
        "discount_limit": null,
        "taggings_count": 2,
        "color": "#d82206",
        "created_at": "2023-12-12T20:07:52.000Z",
        "updated_at": "2023-12-12T20:08:09.000Z"
      }
    ]
  }
}

Incoming Orders

3 endpoints
The Online Orders page is where you can view and manage all of your incoming online orders. This page is designed to give you a better overview of all of your incoming orders in one place. You can easily see important information such as the order source, order status, and order details. Additionally, you can filter and sort through your orders to find exactly what you're looking for.
GET /api/v3/incoming_orders

List the venue's current incoming orders

Lists incoming orders that are still "api visible" (delivered/cancelled are excluded), newest first, paginated at 100 records per page. Supports ransack filters under q[...]: customer_id_eq, id_eq, telephone_eq (digits only, no formatting), email_eq, reference_no_eq, first_name_eq, last_name_eq, updated_at_gt, updated_at_lt, and s (sort).

Parameters

Name Type In Required Description
page integer query No Page number (100 records per page)
q[updated_at_gt] datestring query No Only return incoming orders updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return incoming orders updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[id_eq] integer query No Only return the incoming order with this id
q[customer_id_eq] integer query No Only return incoming orders for this customer id
q[telephone_eq] string query No Only return incoming orders with this telephone (digits only, no formatting)
q[email_eq] string query No Only return incoming orders with this email
q[reference_no_eq] string query No Only return incoming orders with this reference number
q[first_name_eq] string query No Only return incoming orders with this first name
q[last_name_eq] string query No Only return incoming orders with this last name
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/incoming_orders" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters
500 Internal Server Error

Response Fields

Field Type Required Description
status
string No Request status (success)
code
integer No Result code
total_records
integer No Total number of matching records
page
integer No Current page number
per_page
integer No Results per page (always 100)
incoming_orders
array (object) Yes Incoming orders
incoming_order
object Yes The order
id
integer No Order id
aasm_state
string No Workflow state (pending, processing, completed, en_route, delivered, cancelled, ...)
reference_no
string No External order number
first_name
string No Customer first name
last_name
string No Customer last name
source
string No DEPRECATED: superseded by client_type / fulfillment_method. Order source channel.
order_type
string No Order type
client_type
string No Originating client
fulfillment_method
string No Fulfillment method
fulfillment_sub_type
string No Fulfillment sub type
integrator_id
integer No Integrator id (server-derived)
api_version
string No API version that created the order
address
string No Delivery address
city
string No Delivery city
state_abbrev
string No State abbreviation
zipcode
string No ZIP code
notes
string No Order notes
delivered_at
string No Delivered timestamp
requested_date
string No Requested date
requested_window_start_time
string No Requested window start
requested_window_end_time
string No Requested window end
requested_payment_method
string No Requested payment method
payment_verified
boolean No Whether payment is verified
curbside
boolean No DEPRECATED: superseded by fulfillment_sub_type. Curbside flag.
created_at
string No Created timestamp
updated_at
string No Updated timestamp
order_items
array (object) No Line items
item_id
integer No Line item id
product_id
integer No Product id
sku_id
integer No Inventory SKU id
manifest_item_id
integer No Manifest item id
product_name
string No Product name
product_brand
string No Product brand
product_strain
string No Product strain
weight
string No Weight
quantity
integer No Quantity
unit_quantity
float No Unit quantity
price
integer No Unit price in cents
discount
integer No Discount in cents
tax
integer No Tax in cents
tier_weight_id
integer No Tier weight id
coupons
array No Applied coupons
taxes
array No Applied taxes
created_at
string No Created timestamp
updated_at
string No Updated timestamp
POST /api/v3/incoming_orders

Create an incoming order

Creates an incoming (online / third-party) order for the authenticated venue. Server-side behavior: * "total" and item "price" amounts are sent in dollars and stored as integer cents. * order_type "curbside_pickup" is rewritten to "pickup" with curbside = true. * "integrator_id" and "api_version" are derived from the API credentials and cannot be set by the client. * "requested_window_start_time" / "_end_time" may be a plain string or an object { hour, minute, ampm }. On validation failure responds 422 with { errors: [ "...", ... ] }. The inputs client_type, fulfillment_method, and fulfillment_sub_type are new and will be supported starting June 17, 2026. In order for the new fields to be useful as discount criteria, all clients at the target venue must be updated to version 790 or higher.

Parameters

Name Type In Required Description
body object body Yes Order payload

Example

curl -X POST "https://app.posabit.com/api/v3/incoming_orders" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "incoming_order": {
    "order_type": "pickup",
    "first_name": "John",
    "last_name": "Doe",
    "email": "test@posabit.com",
    "telephone": "5551112222",
    "address": "",
    "city": "",
    "state_abbrev": "",
    "zipcode": "",
    "reference_no": "12345-86-123",
    "notes": "Gets free lighter",
    "requested_payment_method": "cash",
    "source": "online_store",
    "order_items_attributes": [
      {
        "product_parent_id": "Treehawk Farms - Wifi OG Pre-Roll 2pk (1g)",
        "product_id": 808542,
        "quantity": 2
      }
    ]
  }
}'

Request Body

{
  "incoming_order": {
    "order_type": "pickup",
    "first_name": "John",
    "last_name": "Doe",
    "email": "test@posabit.com",
    "telephone": "5551112222",
    "address": "",
    "city": "",
    "state_abbrev": "",
    "zipcode": "",
    "reference_no": "12345-86-123",
    "notes": "Gets free lighter",
    "requested_payment_method": "cash",
    "source": "online_store",
    "order_items_attributes": [
      {
        "product_parent_id": "Treehawk Farms - Wifi OG Pre-Roll 2pk (1g)",
        "product_id": 808542,
        "quantity": 2
      }
    ]
  }
}

Request Body Fields

Field Type Required Description
incoming_order
object Yes The order
reference_no
string No External order number; must be unique per venue
first_name
string Yes Customer first name (required unless a POS source)
last_name
string Yes Customer last name (required unless a POS source)
email
string No Customer email
telephone
string No Customer phone (digits only)
customer_id
integer No Existing POSaBIT customer id
total
float No Order total in dollars (stored as integer cents)
order_type
string No Order type
Allowed values: pickup, in_store, delivery, saved_order, kiosk, curbside_pickup
client_type
string No Originating client
Allowed values: web, app, kiosk, pos
fulfillment_method
string No Fulfillment method
Allowed values: pickup, delivery, in_store
fulfillment_sub_type
string No Fulfillment sub type
Allowed values: drive_thru, curbside, in_store
curbside
boolean No DEPRECATED: use fulfillment_sub_type "curbside" instead. Curbside pickup flag.
source
string No DEPRECATED: use client_type / fulfillment_method instead. Order source channel (defaults to online_store).
requested_date
string No Requested date (YYYY-MM-DD)
requested_payment_method
string No Requested payment method
requested_window_start_time
string No Requested window start; string or { hour, minute, ampm }
requested_window_end_time
string No Requested window end; string or { hour, minute, ampm }
notes
string No Order notes (emoji are tokenized server-side)
customer_notes
string No Customer-facing notes
address
string No Delivery address
city
string No Delivery city
state_abbrev
string No State abbreviation
zipcode
string No ZIP code (max 6 characters)
payment_prepaid
boolean No Whether payment was prepaid
payment_source
string No Payment source
payment_reference_id
string No Payment reference id (unique per venue + payment_source when payment is verified)
payment_amount
integer No Payment amount in cents
status_callback
string No Status callback URL/token
processed_by
string No Who processed the order
delivered_at
string No Delivered timestamp (ISO 8601)
order_items_attributes
array (object) No Line items
id
integer No Existing line-item id (for updates)
product_id
integer No POSaBIT product id
product_name
string Yes Product name
product_brand
string No Product brand
product_strain
string No Product strain
quantity
integer Yes Quantity (greater than 0 and less than 100)
price
integer No Unit price in cents (often derived from the product)
weight
string No Weight
tier_weight_id
integer No Tier weight id
order_item_coupons_attributes
array (object) No Coupons applied to the item
pos_coupon_id
integer Yes POS coupon id
order_item_id
integer No Order item id
ref_name
string No Reference name
ref_number
string No Reference number
amount
integer No Discount amount in cents
order_item_taxes_attributes
array (object) No Taxes applied to the item
tax_id
integer No Tax id
order_item_id
integer No Order item id
amount
integer No Tax amount in cents

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters
500 Internal Server Error

Response Fields

Field Type Required Description
code
integer No Result code
incoming_order
object Yes The order
id
integer No Order id
aasm_state
string No Workflow state (pending, processing, completed, en_route, delivered, cancelled, ...)
reference_no
string No External order number
first_name
string No Customer first name
last_name
string No Customer last name
source
string No DEPRECATED: superseded by client_type / fulfillment_method. Order source channel.
order_type
string No Order type
client_type
string No Originating client
fulfillment_method
string No Fulfillment method
fulfillment_sub_type
string No Fulfillment sub type
integrator_id
integer No Integrator id (server-derived)
api_version
string No API version that created the order
address
string No Delivery address
city
string No Delivery city
state_abbrev
string No State abbreviation
zipcode
string No ZIP code
notes
string No Order notes
delivered_at
string No Delivered timestamp
requested_date
string No Requested date
requested_window_start_time
string No Requested window start
requested_window_end_time
string No Requested window end
requested_payment_method
string No Requested payment method
payment_verified
boolean No Whether payment is verified
curbside
boolean No DEPRECATED: superseded by fulfillment_sub_type. Curbside flag.
created_at
string No Created timestamp
updated_at
string No Updated timestamp
order_items
array (object) No Line items
item_id
integer No Line item id
product_id
integer No Product id
sku_id
integer No Inventory SKU id
manifest_item_id
integer No Manifest item id
product_name
string No Product name
product_brand
string No Product brand
product_strain
string No Product strain
weight
string No Weight
quantity
integer No Quantity
unit_quantity
float No Unit quantity
price
integer No Unit price in cents
discount
integer No Discount in cents
tax
integer No Tax in cents
tier_weight_id
integer No Tier weight id
coupons
array No Applied coupons
taxes
array No Applied taxes
created_at
string No Created timestamp
updated_at
string No Updated timestamp

Response Example

{
  "code": 1,
  "incoming_order": {
    "id": 19800,
    "aasm_state": "pending",
    "reference_no": "12345-86-123",
    "first_name": "John",
    "last_name": "Doe",
    "source": "online_store",
    "order_type": "pickup",
    "notes": "Gets free lighter",
    "delivered_at": null,
    "requested_date": null,
    "requested_window_start_time": {},
    "requested_window_end_time": {},
    "requested_payment_method": "cash",
    "payment_verified": false,
    "curbside": false,
    "created_at": "2024-10-03T19:12:19.000Z",
    "updated_at": "2024-10-03T19:12:19.000Z"
  },
  "order_items": [
    {
      "item_id": 32744,
      "product_id": 808542,
      "sku_id": 115866,
      "manifest_item_id": null,
      "product_name": "Treehawk Farms - Wifi OG Pre-Roll 2pk (1g)",
      "product_brand": "Treehawk Farms",
      "product_strain": "Wifi OG",
      "weight": null,
      "quantity": 2,
      "unit_quantity": "2.0",
      "price": 1000,
      "discount": null,
      "tax": null,
      "tier_weight_id": null,
      "coupons": [],
      "taxes": [],
      "created_at": "2024-10-03T19:12:19.000Z",
      "updated_at": "2024-10-03T19:12:19.000Z"
    }
  ]
}
GET /api/v3/incoming_orders/{id}

Find an incoming order by reference number or id

Looks the order up by reference_no first, then by numeric id.

Parameters

Name Type In Required Description
id string path Yes Reference number or numeric id

Example

curl -X GET "https://app.posabit.com/api/v3/incoming_orders/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
404 Requested reference number or id not found
422 Invalid parameters
500 Internal Server Error

Response Fields

Field Type Required Description
code
integer No Result code
incoming_order
object Yes The order
id
integer No Order id
aasm_state
string No Workflow state (pending, processing, completed, en_route, delivered, cancelled, ...)
reference_no
string No External order number
first_name
string No Customer first name
last_name
string No Customer last name
source
string No DEPRECATED: superseded by client_type / fulfillment_method. Order source channel.
order_type
string No Order type
client_type
string No Originating client
fulfillment_method
string No Fulfillment method
fulfillment_sub_type
string No Fulfillment sub type
integrator_id
integer No Integrator id (server-derived)
api_version
string No API version that created the order
address
string No Delivery address
city
string No Delivery city
state_abbrev
string No State abbreviation
zipcode
string No ZIP code
notes
string No Order notes
delivered_at
string No Delivered timestamp
requested_date
string No Requested date
requested_window_start_time
string No Requested window start
requested_window_end_time
string No Requested window end
requested_payment_method
string No Requested payment method
payment_verified
boolean No Whether payment is verified
curbside
boolean No DEPRECATED: superseded by fulfillment_sub_type. Curbside flag.
created_at
string No Created timestamp
updated_at
string No Updated timestamp
order_items
array (object) No Line items
item_id
integer No Line item id
product_id
integer No Product id
sku_id
integer No Inventory SKU id
manifest_item_id
integer No Manifest item id
product_name
string No Product name
product_brand
string No Product brand
product_strain
string No Product strain
weight
string No Weight
quantity
integer No Quantity
unit_quantity
float No Unit quantity
price
integer No Unit price in cents
discount
integer No Discount in cents
tax
integer No Tax in cents
tier_weight_id
integer No Tier weight id
coupons
array No Applied coupons
taxes
array No Applied taxes
created_at
string No Created timestamp
updated_at
string No Updated timestamp

Response Example

{
  "code": 1,
  "incoming_order": {
    "id": 19798,
    "aasm_state": "processing",
    "reference_no": "3221-1727814981-bb1314bf",
    "first_name": "A",
    "last_name": "A",
    "source": "posabit_v2",
    "order_type": "pickup",
    "notes": null,
    "delivered_at": null,
    "requested_date": null,
    "requested_window_start_time": {},
    "requested_window_end_time": {},
    "requested_payment_method": "cash",
    "payment_verified": false,
    "curbside": false,
    "created_at": "2024-10-01T20:39:23.000Z",
    "updated_at": "2024-10-01T20:41:19.000Z"
  },
  "order_items": [
    {
      "item_id": 32713,
      "product_id": 800583,
      "sku_id": 107907,
      "manifest_item_id": null,
      "product_name": "'oh' McDonald Farms - Nuken (1g)",
      "product_brand": "'oh' McDonald Farms",
      "product_strain": "Nuken",
      "weight": "1.1g",
      "quantity": 1,
      "unit_quantity": "1.1",
      "price": 1500,
      "discount": 0,
      "tax": 473,
      "tier_weight_id": null,
      "coupons": [],
      "taxes": [],
      "created_at": "2024-10-01T20:36:21.000Z",
      "updated_at": "2024-10-01T20:36:21.000Z"
    }
  ]
}

Incoming Quotes

6 endpoints
POST /api/v3/incoming_quotes

Create an incoming quote

Creates a price quote (cart pre-calculation) for the authenticated venue. Server-side behavior: * reference_no is generated when blank; ip, integrator_id and api_version are derived from the request/credentials and cannot be set by the client. * customer.customer_id, when present, links an existing customer. * monetary amounts (tip_amount, processing_fee, item price/discount, totals) are in integer cents. * totals and taxes are (re)calculated server-side after save. On validation failure responds 422 with { errors: [ "...", ... ] }.

Parameters

Name Type In Required Description
body object body Yes Quote payload

Example

curl -X POST "https://app.posabit.com/api/v3/incoming_quotes" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
  "quote": {
    "incoming_order_id": null,
    "venue_id": 3221,
    "fulfillment": {
      "source": "posabit_v2",
      "order_type": "pickup",
      "requested_date": null,
      "requested_window_start_time": null,
      "requested_window_end_time": null,
      "tip_amount": 0,
      "tip_type": null,
      "processing_fee": 300,
      "tip_calculated": 0,
      "delivery_address": {
        "address": "",
        "city": "",
        "state_abbrev": "",
        "zipcode": ""
      }
    },
    "customer": {
      "first_name": "Jane",
      "last_name": "Doe",
      "email": "test@posabit.com",
      "telephone": "5551112222",
      "customer_type": "recreational"
    },
    "payment": {
      "requested_payment_method": "cash"
    },
    "items": [
      {
        "sku_id": 107907,
        "quantity": 1,
        "product_id": 800583,
        "name": "'oh' McDonald Farms - Nuken (1g)",
        "unit_type": "g",
        "unit": "1.1",
        "variant_id": "k107907",
        "quantity_on_hand": 30,
        "test_results": {
          "thc": {
            "current": 4.2,
            "low": 4.2,
            "high": 4.2,
            "unit_type": "%"
          },
          "cbd": {
            "current": 10,
            "low": 10,
            "high": 10,
            "unit_type": "%"
          },
          "thca": null,
          "cbda": null,
          "total_thc": {
            "current": 4.2,
            "low": 4.2,
            "high": 4.2,
            "unit_type": "%"
          },
          "total_cbd": null,
          "thcv": null,
          "cbdv": null,
          "cbc": null,
          "cbca": null,
          "cbcv": null,
          "cbn": null,
          "cbg": null,
          "cbga": null,
          "cbgv": null
        },
        "terpene_results": [],
        "product_image": {
          "is_product_specific_image": true,
          "lg": "https://pbit-staging.s3.amazonaws.com/images/image/210/large_image.jpg",
          "md": "https://pbit-staging.s3.amazonaws.com/images/image/210/medium_image.jpg"
        },
        "discount": 0,
        "price": 1500,
        "discount_ids": []
      }
    ]
  }
}'

Request Body

{
  "quote": {
    "incoming_order_id": null,
    "venue_id": 3221,
    "fulfillment": {
      "source": "posabit_v2",
      "order_type": "pickup",
      "requested_date": null,
      "requested_window_start_time": null,
      "requested_window_end_time": null,
      "tip_amount": 0,
      "tip_type": null,
      "processing_fee": 300,
      "tip_calculated": 0,
      "delivery_address": {
        "address": "",
        "city": "",
        "state_abbrev": "",
        "zipcode": ""
      }
    },
    "customer": {
      "first_name": "Jane",
      "last_name": "Doe",
      "email": "test@posabit.com",
      "telephone": "5551112222",
      "customer_type": "recreational"
    },
    "payment": {
      "requested_payment_method": "cash"
    },
    "items": [
      {
        "sku_id": 107907,
        "quantity": 1,
        "product_id": 800583,
        "name": "'oh' McDonald Farms - Nuken (1g)",
        "unit_type": "g",
        "unit": "1.1",
        "variant_id": "k107907",
        "quantity_on_hand": 30,
        "test_results": {
          "thc": {
            "current": 4.2,
            "low": 4.2,
            "high": 4.2,
            "unit_type": "%"
          },
          "cbd": {
            "current": 10,
            "low": 10,
            "high": 10,
            "unit_type": "%"
          },
          "thca": null,
          "cbda": null,
          "total_thc": {
            "current": 4.2,
            "low": 4.2,
            "high": 4.2,
            "unit_type": "%"
          },
          "total_cbd": null,
          "thcv": null,
          "cbdv": null,
          "cbc": null,
          "cbca": null,
          "cbcv": null,
          "cbn": null,
          "cbg": null,
          "cbga": null,
          "cbgv": null
        },
        "terpene_results": [],
        "product_image": {
          "is_product_specific_image": true,
          "lg": "https://pbit-staging.s3.amazonaws.com/images/image/210/large_image.jpg",
          "md": "https://pbit-staging.s3.amazonaws.com/images/image/210/medium_image.jpg"
        },
        "discount": 0,
        "price": 1500,
        "discount_ids": []
      }
    ]
  }
}

Request Body Fields

Field Type Required Description
quote
object Yes The quote
reference_no
string No Quote reference number (generated when blank)
fulfillment
object No Fulfillment details
source
string No DEPRECATED: use client_type / fulfillment_method instead. Order source channel.
order_type
string No Order type (e.g. pickup, delivery, in_store, kiosk)
client_type
string No Originating client
Allowed values: web, app, kiosk, pos
fulfillment_method
string No Fulfillment method
Allowed values: pickup, delivery, in_store
fulfillment_sub_type
string No Fulfillment sub type
Allowed values: drive_thru, curbside, in_store
requested_date
string No Requested date (YYYY-MM-DD)
requested_window_start_time
string No Requested pickup/delivery window start time
requested_window_end_time
string No Requested pickup/delivery window end time
tip_amount
integer No Tip amount in cents
tip_type
string No Tip type
processing_fee
integer No Processing fee in cents
delivery_address
object No Delivery address
address
string No Street address
city
string No City
state_abbrev
string No State abbreviation
zipcode
string No ZIP code
customer
object No Customer details
customer_id
integer No Existing POSaBIT customer id (links the quote to that customer)
first_name
string No Customer first name
last_name
string No Customer last name
email
string No Customer email
telephone
string No Customer phone
customer_type
string No Customer type (e.g. recreational, medical)
payment
object No Payment details
requested_payment_method
string No Requested payment method
items
array (object) No Line items
product_id
integer No POSaBIT product id
sku_id
integer No Inventory SKU id (mapped to inventory_sku_id)
unit
string No Unit amount, combined with unit_type into a weight (e.g. "3.5")
unit_type
string No Unit type, e.g. "g"
quantity
integer Yes Quantity (greater than 0)

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters
500 Internal Server Error

Response Fields

Field Type Required Description
reference_no
string No Quote reference number
incoming_order_id
integer No Resulting order id (populated after finalize)
venue_id
integer No Venue id
integrator_id
integer No Integrator id (server-derived)
api_version
string No API version that created the quote
fulfillment
object No Fulfillment details
source
string No DEPRECATED: superseded by client_type / fulfillment_method. Order source channel.
order_type
string No Order type
client_type
string No Originating client
fulfillment_method
string No Fulfillment method
fulfillment_sub_type
string No Fulfillment sub type
requested_date
string No Requested date
requested_window_start_time
string No Requested window start time
requested_window_end_time
string No Requested window end time
tip_amount
integer No Tip amount in cents
tip_type
string No Tip type
processing_fee
integer No Processing fee in cents
tip_calculated
integer No Calculated tip in cents
delivery_address
object No Delivery address
address
string No Street address
city
string No City
state_abbrev
string No State abbreviation
zipcode
string No ZIP code
customer
object No Customer details
first_name
string No Customer first name
last_name
string No Customer last name
email
string No Customer email
telephone
string No Customer phone
customer_type
string No Customer type
payment
object No Payment details
requested_payment_method
string No Requested payment method
items
array (object) No Line items
sku_id
integer No Inventory SKU id
product_id
integer No Product id
variant_id
integer No Variant id
name
string No Product name
unit
string No Unit amount
unit_type
string No Unit type
quantity
integer No Quantity
quantity_on_hand
float No Quantity on hand
price
integer No Price in cents
discount
integer No Total discount on this line in cents, the sum of the discount_list amounts
discount_ids
array No Ids of the discounts applied to this line, matching the coupons endpoint. Same set as discount_list without the breakdown
discount_list
array (object) No The discounts applied to this line, one entry per discount, with what each took off
coupon_id
integer No Discount id, matching the coupons endpoint
coupon_name
string No Discount display name, falling back to its internal name
amount
integer No Amount this discount took off the line, in cents
product_image
object No Product image URLs
is_product_specific_image
boolean No Whether the image belongs to this product rather than being inherited
lg
string No Large image URL
md
string No Medium image URL
test_results
object No Cannabinoid measures for the lot behind this line
thc
object No THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thca
object No THCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_thc
object No TOTAL THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thcv
object No THCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbd
object No CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbda
object No CBDA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_cbd
object No TOTAL CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbdv
object No CBDV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbc
object No CBC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbca
object No CBCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbcv
object No CBCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbn
object No CBN measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbg
object No CBG measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbga
object No CBGA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbgv
object No CBGV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
terpene_results
array (object) No Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all
name
string No Terpene name, or "Total Terpenes" for the combined figure
current
string No Measured value, formatted to two decimal places. A string, unlike the cannabinoid measures
low
string No Low end of the range, formatted the same way
high
string No High end of the range, formatted the same way
unit_type
string No Unit the values are expressed in
taxes
array (object) No Tax summaries
tax_id
integer No Tax id
name
string No Tax name
price_included
boolean No Whether the tax is included in the price
amount
integer No Tax amount in cents
tax_rate
float No Tax rate
totals
object No Order totals
discount_ids
array No Ids of applied discounts
subtotal
integer No Subtotal in cents
discount
integer No Discount in cents
tax
integer No Tax in cents
total
integer No Total in cents
limits
object No Purchase-limit evaluation
exceeded_limits
array No Limits that were exceeded
sum_per_limit
object No Summed quantity per limit category
exceeded_quantities
array No Quantities that exceeded a limit

Response Example

{
  "code": 1,
  "quote": {
    "reference_no": "3221-1727982977-3f59c5f1",
    "incoming_order_id": null,
    "venue_id": 3221,
    "fulfillment": {
      "source": "posabit_v2",
      "order_type": "pickup",
      "requested_date": null,
      "requested_window_start_time": null,
      "requested_window_end_time": null,
      "tip_amount": 0,
      "tip_type": null,
      "processing_fee": 300,
      "tip_calculated": 0,
      "delivery_address": {
        "address": "",
        "city": "",
        "state_abbrev": "",
        "zipcode": ""
      }
    },
    "customer": {
      "first_name": "Jane",
      "last_name": "Doe",
      "email": "test@posabit.com",
      "telephone": "5551112222",
      "customer_type": "recreational"
    },
    "payment": {
      "requested_payment_method": "cash"
    },
    "items": [
      {
        "sku_id": 107907,
        "quantity": 1,
        "product_id": 800583,
        "name": "'oh' McDonald Farms - Nuken (1g)",
        "unit_type": "g",
        "unit": "1.1",
        "variant_id": "k107907",
        "quantity_on_hand": 30,
        "test_results": {
          "thc": {
            "current": 4.2,
            "low": 4.2,
            "high": 4.2,
            "unit_type": "%"
          },
          "cbd": {
            "current": 10,
            "low": 10,
            "high": 10,
            "unit_type": "%"
          },
          "thca": null,
          "cbda": null,
          "total_thc": {
            "current": 4.2,
            "low": 4.2,
            "high": 4.2,
            "unit_type": "%"
          },
          "total_cbd": null,
          "thcv": null,
          "cbdv": null,
          "cbc": null,
          "cbca": null,
          "cbcv": null,
          "cbn": null,
          "cbg": null,
          "cbga": null,
          "cbgv": null
        },
        "terpene_results": [],
        "product_image": {
          "is_product_specific_image": true,
          "lg": "https://pbit-staging.s3.amazonaws.com/images/image/210/large_image.jpg",
          "md": "https://pbit-staging.s3.amazonaws.com/images/image/210/medium_image.jpg"
        },
        "discount": 0,
        "price": 1500,
        "discount_ids": []
      }
    ],
    "taxes": [
      {
        "tax_id": 4286,
        "name": "Bellingham, WA",
        "price_included": true,
        "amount": 93,
        "tax_rate": "9.0"
      },
      {
        "tax_id": 4285,
        "name": "Cannabis Tax",
        "price_included": true,
        "amount": 380,
        "tax_rate": "37.0"
      }
    ],
    "totals": {
      "discount_ids": [],
      "subtotal": 1500,
      "discount": 0,
      "tax": 473,
      "total": 1500
    },
    "limits": {
      "exceeded_limits": [],
      "sum_per_limit": {
        "recreational_flower": 1.1
      }
    }
  }
}
GET /api/v3/incoming_quotes/{id}

Find an incoming quote by reference number

Looks the quote up by reference_no. Responds with { error: "Quote not found" } when missing.

Parameters

Name Type In Required Description
id string path Yes Quote reference number

Example

curl -X GET "https://app.posabit.com/api/v3/incoming_quotes/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
404 Requested reference number or id not found
422 Invalid parameters
500 Internal Server Error

Response Fields

Field Type Required Description
reference_no
string No Quote reference number
incoming_order_id
integer No Resulting order id (populated after finalize)
venue_id
integer No Venue id
integrator_id
integer No Integrator id (server-derived)
api_version
string No API version that created the quote
fulfillment
object No Fulfillment details
source
string No DEPRECATED: superseded by client_type / fulfillment_method. Order source channel.
order_type
string No Order type
client_type
string No Originating client
fulfillment_method
string No Fulfillment method
fulfillment_sub_type
string No Fulfillment sub type
requested_date
string No Requested date
requested_window_start_time
string No Requested window start time
requested_window_end_time
string No Requested window end time
tip_amount
integer No Tip amount in cents
tip_type
string No Tip type
processing_fee
integer No Processing fee in cents
tip_calculated
integer No Calculated tip in cents
delivery_address
object No Delivery address
address
string No Street address
city
string No City
state_abbrev
string No State abbreviation
zipcode
string No ZIP code
customer
object No Customer details
first_name
string No Customer first name
last_name
string No Customer last name
email
string No Customer email
telephone
string No Customer phone
customer_type
string No Customer type
payment
object No Payment details
requested_payment_method
string No Requested payment method
items
array (object) No Line items
sku_id
integer No Inventory SKU id
product_id
integer No Product id
variant_id
integer No Variant id
name
string No Product name
unit
string No Unit amount
unit_type
string No Unit type
quantity
integer No Quantity
quantity_on_hand
float No Quantity on hand
price
integer No Price in cents
discount
integer No Total discount on this line in cents, the sum of the discount_list amounts
discount_ids
array No Ids of the discounts applied to this line, matching the coupons endpoint. Same set as discount_list without the breakdown
discount_list
array (object) No The discounts applied to this line, one entry per discount, with what each took off
coupon_id
integer No Discount id, matching the coupons endpoint
coupon_name
string No Discount display name, falling back to its internal name
amount
integer No Amount this discount took off the line, in cents
product_image
object No Product image URLs
is_product_specific_image
boolean No Whether the image belongs to this product rather than being inherited
lg
string No Large image URL
md
string No Medium image URL
test_results
object No Cannabinoid measures for the lot behind this line
thc
object No THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thca
object No THCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_thc
object No TOTAL THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thcv
object No THCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbd
object No CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbda
object No CBDA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_cbd
object No TOTAL CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbdv
object No CBDV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbc
object No CBC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbca
object No CBCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbcv
object No CBCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbn
object No CBN measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbg
object No CBG measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbga
object No CBGA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbgv
object No CBGV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
terpene_results
array (object) No Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all
name
string No Terpene name, or "Total Terpenes" for the combined figure
current
string No Measured value, formatted to two decimal places. A string, unlike the cannabinoid measures
low
string No Low end of the range, formatted the same way
high
string No High end of the range, formatted the same way
unit_type
string No Unit the values are expressed in
taxes
array (object) No Tax summaries
tax_id
integer No Tax id
name
string No Tax name
price_included
boolean No Whether the tax is included in the price
amount
integer No Tax amount in cents
tax_rate
float No Tax rate
totals
object No Order totals
discount_ids
array No Ids of applied discounts
subtotal
integer No Subtotal in cents
discount
integer No Discount in cents
tax
integer No Tax in cents
total
integer No Total in cents
limits
object No Purchase-limit evaluation
exceeded_limits
array No Limits that were exceeded
sum_per_limit
object No Summed quantity per limit category
exceeded_quantities
array No Quantities that exceeded a limit

Response Example

{
  "code": 1,
  "quote": {
    "reference_no": "3221-1727814981-bb1314bf",
    "incoming_order_id": null,
    "venue_id": 3221,
    "fulfillment": {
      "source": "posabit_v2",
      "order_type": "pickup",
      "requested_date": null,
      "requested_window_start_time": null,
      "requested_window_end_time": null,
      "tip_amount": 0,
      "tip_type": null,
      "processing_fee": 300,
      "tip_calculated": 0,
      "delivery_address": {
        "address": "",
        "city": "",
        "state_abbrev": "",
        "zipcode": ""
      }
    },
    "customer": {
      "first_name": "Jane",
      "last_name": "Doe",
      "email": "test@posabit.com",
      "telephone": "5551111111",
      "customer_type": "recreational"
    },
    "payment": {
      "requested_payment_method": "cash"
    },
    "items": [
      {
        "sku_id": 107907,
        "quantity": 1,
        "product_id": 800583,
        "name": "'oh' McDonald Farms - Nuken (1g)",
        "unit_type": "g",
        "unit": "1.1",
        "variant_id": "k107907",
        "quantity_on_hand": 30,
        "test_results": {
          "thc": {
            "current": 4.2,
            "low": 4.2,
            "high": 4.2,
            "unit_type": "%"
          },
          "cbd": {
            "current": 10,
            "low": 10,
            "high": 10,
            "unit_type": "%"
          },
          "thca": null,
          "cbda": null,
          "total_thc": {
            "current": 4.2,
            "low": 4.2,
            "high": 4.2,
            "unit_type": "%"
          },
          "total_cbd": null,
          "thcv": null,
          "cbdv": null,
          "cbc": null,
          "cbca": null,
          "cbcv": null,
          "cbn": null,
          "cbg": null,
          "cbga": null,
          "cbgv": null
        },
        "terpene_results": [],
        "product_image": {
          "is_product_specific_image": true,
          "lg": "https://pbit-staging.s3.amazonaws.com/images/image/210/large_image.jpg",
          "md": "https://pbit-staging.s3.amazonaws.com/images/image/210/medium_image.jpg"
        },
        "discount": 0,
        "price": 1500,
        "discount_ids": []
      }
    ],
    "taxes": [],
    "totals": {
      "discount_ids": [],
      "subtotal": 1500,
      "discount": 0,
      "tax": 473,
      "total": 1500
    },
    "limits": {
      "exceeded_limits": [],
      "sum_per_limit": {
        "recreational_flower": 1.1
      }
    }
  }
}
PATCH /api/v3/incoming_quotes/{id}

Update an incoming quote

Updates the quote's fulfillment / customer / payment details and recalculates totals.

Parameters

Name Type In Required Description
id string path Yes Quote reference number
body object body Yes Quote payload

Example

curl -X PATCH "https://app.posabit.com/api/v3/incoming_quotes/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
quote
object Yes The quote
reference_no
string No Quote reference number (generated when blank)
fulfillment
object No Fulfillment details
source
string No DEPRECATED: use client_type / fulfillment_method instead. Order source channel.
order_type
string No Order type (e.g. pickup, delivery, in_store, kiosk)
client_type
string No Originating client
Allowed values: web, app, kiosk, pos
fulfillment_method
string No Fulfillment method
Allowed values: pickup, delivery, in_store
fulfillment_sub_type
string No Fulfillment sub type
Allowed values: drive_thru, curbside, in_store
requested_date
string No Requested date (YYYY-MM-DD)
requested_window_start_time
string No Requested pickup/delivery window start time
requested_window_end_time
string No Requested pickup/delivery window end time
tip_amount
integer No Tip amount in cents
tip_type
string No Tip type
processing_fee
integer No Processing fee in cents
delivery_address
object No Delivery address
address
string No Street address
city
string No City
state_abbrev
string No State abbreviation
zipcode
string No ZIP code
customer
object No Customer details
customer_id
integer No Existing POSaBIT customer id (links the quote to that customer)
first_name
string No Customer first name
last_name
string No Customer last name
email
string No Customer email
telephone
string No Customer phone
customer_type
string No Customer type (e.g. recreational, medical)
payment
object No Payment details
requested_payment_method
string No Requested payment method
items
array (object) No Line items
product_id
integer No POSaBIT product id
sku_id
integer No Inventory SKU id (mapped to inventory_sku_id)
unit
string No Unit amount, combined with unit_type into a weight (e.g. "3.5")
unit_type
string No Unit type, e.g. "g"
quantity
integer Yes Quantity (greater than 0)

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters

Response Fields

Field Type Required Description
reference_no
string No Quote reference number
incoming_order_id
integer No Resulting order id (populated after finalize)
venue_id
integer No Venue id
integrator_id
integer No Integrator id (server-derived)
api_version
string No API version that created the quote
fulfillment
object No Fulfillment details
source
string No DEPRECATED: superseded by client_type / fulfillment_method. Order source channel.
order_type
string No Order type
client_type
string No Originating client
fulfillment_method
string No Fulfillment method
fulfillment_sub_type
string No Fulfillment sub type
requested_date
string No Requested date
requested_window_start_time
string No Requested window start time
requested_window_end_time
string No Requested window end time
tip_amount
integer No Tip amount in cents
tip_type
string No Tip type
processing_fee
integer No Processing fee in cents
tip_calculated
integer No Calculated tip in cents
delivery_address
object No Delivery address
address
string No Street address
city
string No City
state_abbrev
string No State abbreviation
zipcode
string No ZIP code
customer
object No Customer details
first_name
string No Customer first name
last_name
string No Customer last name
email
string No Customer email
telephone
string No Customer phone
customer_type
string No Customer type
payment
object No Payment details
requested_payment_method
string No Requested payment method
items
array (object) No Line items
sku_id
integer No Inventory SKU id
product_id
integer No Product id
variant_id
integer No Variant id
name
string No Product name
unit
string No Unit amount
unit_type
string No Unit type
quantity
integer No Quantity
quantity_on_hand
float No Quantity on hand
price
integer No Price in cents
discount
integer No Total discount on this line in cents, the sum of the discount_list amounts
discount_ids
array No Ids of the discounts applied to this line, matching the coupons endpoint. Same set as discount_list without the breakdown
discount_list
array (object) No The discounts applied to this line, one entry per discount, with what each took off
coupon_id
integer No Discount id, matching the coupons endpoint
coupon_name
string No Discount display name, falling back to its internal name
amount
integer No Amount this discount took off the line, in cents
product_image
object No Product image URLs
is_product_specific_image
boolean No Whether the image belongs to this product rather than being inherited
lg
string No Large image URL
md
string No Medium image URL
test_results
object No Cannabinoid measures for the lot behind this line
thc
object No THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thca
object No THCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_thc
object No TOTAL THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thcv
object No THCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbd
object No CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbda
object No CBDA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_cbd
object No TOTAL CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbdv
object No CBDV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbc
object No CBC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbca
object No CBCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbcv
object No CBCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbn
object No CBN measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbg
object No CBG measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbga
object No CBGA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbgv
object No CBGV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
terpene_results
array (object) No Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all
name
string No Terpene name, or "Total Terpenes" for the combined figure
current
string No Measured value, formatted to two decimal places. A string, unlike the cannabinoid measures
low
string No Low end of the range, formatted the same way
high
string No High end of the range, formatted the same way
unit_type
string No Unit the values are expressed in
taxes
array (object) No Tax summaries
tax_id
integer No Tax id
name
string No Tax name
price_included
boolean No Whether the tax is included in the price
amount
integer No Tax amount in cents
tax_rate
float No Tax rate
totals
object No Order totals
discount_ids
array No Ids of applied discounts
subtotal
integer No Subtotal in cents
discount
integer No Discount in cents
tax
integer No Tax in cents
total
integer No Total in cents
limits
object No Purchase-limit evaluation
exceeded_limits
array No Limits that were exceeded
sum_per_limit
object No Summed quantity per limit category
exceeded_quantities
array No Quantities that exceeded a limit
POST /api/v3/incoming_quotes/{id}/ach_payment_auth

Authorize an ACH (PosaBIT Pay) payment for a quote

Requests a Hypur / PosaBIT Pay payment authorization for the quote.

Parameters

Name Type In Required Description
id string path Yes Quote reference number
body object body Yes Payment authorization payload

Example

curl -X POST "https://app.posabit.com/api/v3/incoming_quotes/{id}/ach_payment_auth" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
payment
object Yes The authorization details
pac
string No Hypur PAC (personal access code)
code
string No Authorization code
redirect_uri
string No Redirect URI

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters

Response Fields

Field Type Required Description
reference_no
string No Quote reference number
incoming_order_id
integer No Resulting order id (populated after finalize)
venue_id
integer No Venue id
integrator_id
integer No Integrator id (server-derived)
api_version
string No API version that created the quote
fulfillment
object No Fulfillment details
source
string No DEPRECATED: superseded by client_type / fulfillment_method. Order source channel.
order_type
string No Order type
client_type
string No Originating client
fulfillment_method
string No Fulfillment method
fulfillment_sub_type
string No Fulfillment sub type
requested_date
string No Requested date
requested_window_start_time
string No Requested window start time
requested_window_end_time
string No Requested window end time
tip_amount
integer No Tip amount in cents
tip_type
string No Tip type
processing_fee
integer No Processing fee in cents
tip_calculated
integer No Calculated tip in cents
delivery_address
object No Delivery address
address
string No Street address
city
string No City
state_abbrev
string No State abbreviation
zipcode
string No ZIP code
customer
object No Customer details
first_name
string No Customer first name
last_name
string No Customer last name
email
string No Customer email
telephone
string No Customer phone
customer_type
string No Customer type
payment
object No Payment details
requested_payment_method
string No Requested payment method
items
array (object) No Line items
sku_id
integer No Inventory SKU id
product_id
integer No Product id
variant_id
integer No Variant id
name
string No Product name
unit
string No Unit amount
unit_type
string No Unit type
quantity
integer No Quantity
quantity_on_hand
float No Quantity on hand
price
integer No Price in cents
discount
integer No Total discount on this line in cents, the sum of the discount_list amounts
discount_ids
array No Ids of the discounts applied to this line, matching the coupons endpoint. Same set as discount_list without the breakdown
discount_list
array (object) No The discounts applied to this line, one entry per discount, with what each took off
coupon_id
integer No Discount id, matching the coupons endpoint
coupon_name
string No Discount display name, falling back to its internal name
amount
integer No Amount this discount took off the line, in cents
product_image
object No Product image URLs
is_product_specific_image
boolean No Whether the image belongs to this product rather than being inherited
lg
string No Large image URL
md
string No Medium image URL
test_results
object No Cannabinoid measures for the lot behind this line
thc
object No THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thca
object No THCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_thc
object No TOTAL THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thcv
object No THCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbd
object No CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbda
object No CBDA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_cbd
object No TOTAL CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbdv
object No CBDV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbc
object No CBC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbca
object No CBCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbcv
object No CBCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbn
object No CBN measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbg
object No CBG measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbga
object No CBGA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbgv
object No CBGV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
terpene_results
array (object) No Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all
name
string No Terpene name, or "Total Terpenes" for the combined figure
current
string No Measured value, formatted to two decimal places. A string, unlike the cannabinoid measures
low
string No Low end of the range, formatted the same way
high
string No High end of the range, formatted the same way
unit_type
string No Unit the values are expressed in
taxes
array (object) No Tax summaries
tax_id
integer No Tax id
name
string No Tax name
price_included
boolean No Whether the tax is included in the price
amount
integer No Tax amount in cents
tax_rate
float No Tax rate
totals
object No Order totals
discount_ids
array No Ids of applied discounts
subtotal
integer No Subtotal in cents
discount
integer No Discount in cents
tax
integer No Tax in cents
total
integer No Total in cents
limits
object No Purchase-limit evaluation
exceeded_limits
array No Limits that were exceeded
sum_per_limit
object No Summed quantity per limit category
exceeded_quantities
array No Quantities that exceeded a limit
PUT /api/v3/incoming_quotes/{id}/finalize

Finalize an incoming quote (submits an order)

Converts the quote into an Incoming::Order. For PosaBIT Pay quotes this also captures the previously authorized ACH payment. On success the returned quote's incoming_order_id is populated.

Parameters

Name Type In Required Description
id string path Yes Quote reference number

Example

curl -X PUT "https://app.posabit.com/api/v3/incoming_quotes/{id}/finalize" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters

Response Fields

Field Type Required Description
reference_no
string No Quote reference number
incoming_order_id
integer No Resulting order id (populated after finalize)
venue_id
integer No Venue id
integrator_id
integer No Integrator id (server-derived)
api_version
string No API version that created the quote
fulfillment
object No Fulfillment details
source
string No DEPRECATED: superseded by client_type / fulfillment_method. Order source channel.
order_type
string No Order type
client_type
string No Originating client
fulfillment_method
string No Fulfillment method
fulfillment_sub_type
string No Fulfillment sub type
requested_date
string No Requested date
requested_window_start_time
string No Requested window start time
requested_window_end_time
string No Requested window end time
tip_amount
integer No Tip amount in cents
tip_type
string No Tip type
processing_fee
integer No Processing fee in cents
tip_calculated
integer No Calculated tip in cents
delivery_address
object No Delivery address
address
string No Street address
city
string No City
state_abbrev
string No State abbreviation
zipcode
string No ZIP code
customer
object No Customer details
first_name
string No Customer first name
last_name
string No Customer last name
email
string No Customer email
telephone
string No Customer phone
customer_type
string No Customer type
payment
object No Payment details
requested_payment_method
string No Requested payment method
items
array (object) No Line items
sku_id
integer No Inventory SKU id
product_id
integer No Product id
variant_id
integer No Variant id
name
string No Product name
unit
string No Unit amount
unit_type
string No Unit type
quantity
integer No Quantity
quantity_on_hand
float No Quantity on hand
price
integer No Price in cents
discount
integer No Total discount on this line in cents, the sum of the discount_list amounts
discount_ids
array No Ids of the discounts applied to this line, matching the coupons endpoint. Same set as discount_list without the breakdown
discount_list
array (object) No The discounts applied to this line, one entry per discount, with what each took off
coupon_id
integer No Discount id, matching the coupons endpoint
coupon_name
string No Discount display name, falling back to its internal name
amount
integer No Amount this discount took off the line, in cents
product_image
object No Product image URLs
is_product_specific_image
boolean No Whether the image belongs to this product rather than being inherited
lg
string No Large image URL
md
string No Medium image URL
test_results
object No Cannabinoid measures for the lot behind this line
thc
object No THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thca
object No THCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_thc
object No TOTAL THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thcv
object No THCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbd
object No CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbda
object No CBDA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_cbd
object No TOTAL CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbdv
object No CBDV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbc
object No CBC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbca
object No CBCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbcv
object No CBCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbn
object No CBN measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbg
object No CBG measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbga
object No CBGA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbgv
object No CBGV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
terpene_results
array (object) No Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all
name
string No Terpene name, or "Total Terpenes" for the combined figure
current
string No Measured value, formatted to two decimal places. A string, unlike the cannabinoid measures
low
string No Low end of the range, formatted the same way
high
string No High end of the range, formatted the same way
unit_type
string No Unit the values are expressed in
taxes
array (object) No Tax summaries
tax_id
integer No Tax id
name
string No Tax name
price_included
boolean No Whether the tax is included in the price
amount
integer No Tax amount in cents
tax_rate
float No Tax rate
totals
object No Order totals
discount_ids
array No Ids of applied discounts
subtotal
integer No Subtotal in cents
discount
integer No Discount in cents
tax
integer No Tax in cents
total
integer No Total in cents
limits
object No Purchase-limit evaluation
exceeded_limits
array No Limits that were exceeded
sum_per_limit
object No Summed quantity per limit category
exceeded_quantities
array No Quantities that exceeded a limit
PUT /api/v3/incoming_quotes/{id}/items

Replace an incoming quote's line items

Replaces all line items on the quote and recalculates totals. Each item's unit + unit_type are combined into a weight (e.g. "3.5g").

Parameters

Name Type In Required Description
id string path Yes Quote reference number
body object body Yes Items payload

Example

curl -X PUT "https://app.posabit.com/api/v3/incoming_quotes/{id}/items" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
quote
object Yes The replacement items
items
array (object) Yes Replacement line items
product_id
integer No POSaBIT product id
sku_id
integer No Inventory SKU id (mapped to inventory_sku_id)
unit
string No Unit amount, combined with unit_type into a weight (e.g. "3.5")
unit_type
string No Unit type, e.g. "g"
quantity
integer Yes Quantity (greater than 0)

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters

Response Fields

Field Type Required Description
reference_no
string No Quote reference number
incoming_order_id
integer No Resulting order id (populated after finalize)
venue_id
integer No Venue id
integrator_id
integer No Integrator id (server-derived)
api_version
string No API version that created the quote
fulfillment
object No Fulfillment details
source
string No DEPRECATED: superseded by client_type / fulfillment_method. Order source channel.
order_type
string No Order type
client_type
string No Originating client
fulfillment_method
string No Fulfillment method
fulfillment_sub_type
string No Fulfillment sub type
requested_date
string No Requested date
requested_window_start_time
string No Requested window start time
requested_window_end_time
string No Requested window end time
tip_amount
integer No Tip amount in cents
tip_type
string No Tip type
processing_fee
integer No Processing fee in cents
tip_calculated
integer No Calculated tip in cents
delivery_address
object No Delivery address
address
string No Street address
city
string No City
state_abbrev
string No State abbreviation
zipcode
string No ZIP code
customer
object No Customer details
first_name
string No Customer first name
last_name
string No Customer last name
email
string No Customer email
telephone
string No Customer phone
customer_type
string No Customer type
payment
object No Payment details
requested_payment_method
string No Requested payment method
items
array (object) No Line items
sku_id
integer No Inventory SKU id
product_id
integer No Product id
variant_id
integer No Variant id
name
string No Product name
unit
string No Unit amount
unit_type
string No Unit type
quantity
integer No Quantity
quantity_on_hand
float No Quantity on hand
price
integer No Price in cents
discount
integer No Total discount on this line in cents, the sum of the discount_list amounts
discount_ids
array No Ids of the discounts applied to this line, matching the coupons endpoint. Same set as discount_list without the breakdown
discount_list
array (object) No The discounts applied to this line, one entry per discount, with what each took off
coupon_id
integer No Discount id, matching the coupons endpoint
coupon_name
string No Discount display name, falling back to its internal name
amount
integer No Amount this discount took off the line, in cents
product_image
object No Product image URLs
is_product_specific_image
boolean No Whether the image belongs to this product rather than being inherited
lg
string No Large image URL
md
string No Medium image URL
test_results
object No Cannabinoid measures for the lot behind this line
thc
object No THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thca
object No THCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_thc
object No TOTAL THC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
thcv
object No THCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbd
object No CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbda
object No CBDA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
total_cbd
object No TOTAL CBD measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbdv
object No CBDV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbc
object No CBC measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbca
object No CBCA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbcv
object No CBCV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbn
object No CBN measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbg
object No CBG measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbga
object No CBGA measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
cbgv
object No CBGV measure, or null when the venue's menu does not display it
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. % or mg
terpene_results
array (object) No Terpene measures for the lot behind this line. Null rather than an empty array when the lot has no terpene data at all
name
string No Terpene name, or "Total Terpenes" for the combined figure
current
string No Measured value, formatted to two decimal places. A string, unlike the cannabinoid measures
low
string No Low end of the range, formatted the same way
high
string No High end of the range, formatted the same way
unit_type
string No Unit the values are expressed in
taxes
array (object) No Tax summaries
tax_id
integer No Tax id
name
string No Tax name
price_included
boolean No Whether the tax is included in the price
amount
integer No Tax amount in cents
tax_rate
float No Tax rate
totals
object No Order totals
discount_ids
array No Ids of applied discounts
subtotal
integer No Subtotal in cents
discount
integer No Discount in cents
tax
integer No Tax in cents
total
integer No Total in cents
limits
object No Purchase-limit evaluation
exceeded_limits
array No Limits that were exceeded
sum_per_limit
object No Summed quantity per limit category
exceeded_quantities
array No Quantities that exceeded a limit

Info

2 endpoints
GET /api/v3/info

List the venues this integrator is connected to

Authenticated with the integrator token alone; no venue token is required and no venue permission is checked. Returns one entry per connected venue, including that venue's token, so this is the call used to discover which venues an integration can reach.

Example

curl -X GET "https://app.posabit.com/api/v3/info" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
400 Bad Request
500 Internal Server Error

Response Fields

Field Type Required Description
code
integer No Status code, 1 on success
integrator_name
string No Integrator name
integrator_id
integer No Integrator id
venues
array (object) Yes Connected venues
venue_id
integer Yes Venue id
venue_name
string No Venue name
merchant_id
integer No Merchant id
merchant_name
string No Merchant name
venue_token
string No Venue token to pair with the integrator token when calling venue endpoints
active
boolean No Whether the connection is active
first_connected_date
datetime No First request seen from this pairing
last_connected_date
datetime No Most recent request seen from this pairing
current_month_request_count
integer No Requests made through this pairing so far this calendar month

Response Example

{
  "code": 1,
  "venues": [
    {
      "merchant_name": "POSaBIT Demo",
      "merchant_id": 7654,
      "venue_name": "The Pot Shop",
      "active": true,
      "venue_token": "abcdefg12345ABCDEFG123",
      "first_connected_date": "2025-09-26",
      "last_connected_date": "2025-09-29"
    }
  ]
}
GET /api/v3/venue/info

Venue Info

Example

curl -X GET "https://app.posabit.com/api/v3/venue/info" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters
500 Internal Server Error

Response Fields

Field Type Required Description
name
string No Venue name
license
string No Traceability system license number
region
string No Regulatory region name
locale
string No Region locale, e.g. en-US
vertical
string No The merchant's business vertical
logo_thumb
string No Venue logo, thumbnail size. Falls back to a placeholder
logo_medium
string No Venue logo, medium size. Falls back to a placeholder
telephone
string No Venue telephone number
address
string No Street, city and state joined into one line
street_address_line_1
string No Street address
city
string No City
state
string No State or territory
zip_code
string No Postal code
country
string No Country
timezone
string No Venue timezone, the one ordered_at_local uses on the sales endpoints
latitude
float No Latitude
longitude
float No Longitude
tax_rates
array (object) No Active tax rates
id
integer Yes Tax id
name
string No Tax name
rate
integer No Rate in basis points, e.g. 800 for 8%
tax_rate
string No Rate as a percentage string, e.g. "8.0"
price_included
boolean No Whether the tax is already included in displayed prices
payment_methods
array No Payment methods the venue accepts
venue_settings
object No Venue settings as a map of setting name to value

Response Example

{
  "name": "The Bong Marché",
  "license": "413813",
  "region": "Washington State",
  "locale": "en-US",
  "vertical": "dispensaries",
  "logo_thumb": "https://pbit-staging.s3.amazonaws.com/logos/Venue/thumb_3221_logo.png",
  "logo_medium": "https://pbit-staging.s3.amazonaws.com/logos/Venue/medium_3221_logo.png",
  "telephone": "",
  "address": "1128 8th St, Kirkland, WA",
  "street_address_line_1": "1128 8th St",
  "city": "Kirkland",
  "state": "WA",
  "zip_code": "98000",
  "country": "USA",
  "timezone": "Pacific Time (US & Canada)",
  "latitude": "48.7382",
  "longitude": "-122.47",
  "domains": [],
  "tax_rates": [
    {
      "id": 4285,
      "name": "Cannabis Tax",
      "rate": 3700,
      "tax_rate": "37.0",
      "price_included": true
    },
    {
      "id": 4286,
      "name": "Bellingham, WA",
      "rate": 900,
      "tax_rate": "9.0",
      "price_included": true
    }
  ],
  "payment_methods": [
    "Cash",
    "Debit Card",
    "Other"
  ],
  "venue_settings": {
    "online_order_curbside": "1",
    "online_order_delivery": "1"
  }
}

Inventories

3 endpoints
The default view of the inventory page will show you all of your active inventory, from lowest to highest number of units (or grams) on hand - this is so you can easily see which products are running low. Using the filters on the left side of the page, you can narrow down your search results by a particular product type, brand, supplier, etc.
GET /api/v3/venue/inventories

Get all inventories for a venue

Returns paginated inventory SKUs (only those with stock on hand) for the authenticated venue. per_page is capped at max_per_page (100). Larger values are silently reduced to the cap, so page through the result set using total_pages. Fields marked "Enterprise only" are returned only when the integrator has advanced_inventory_access.

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 100, max 100)
q[updated_at_gt] datestring query No Only return inventory records updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return inventory records updated before this time, e.g. q[updated_at_lt]='2019-07-01'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/inventories" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
max_per_page
integer No Ceiling on per_page
inventory
array (object) Yes Inventory SKUs
id
integer Yes Inventory SKU id
product_id
integer No Product id
active
boolean No Whether the SKU is active
name
string No Product name
display_name
string No Display name (falls back to product name)
description
string No Plain-text product description (HTML stripped)
unit
string No Unit size, weight plus short unit (e.g. "1.0 g")
image
array No Cover image URL(s)
description_html
string No Enterprise only. Product description including HTML
internal_product_identifier
string No Enterprise only. Internal product id
price
float No Enterprise only. Retail (recreational) price
med_price
float No Enterprise only. Medical price (null unless the venue uses medical pricing)
last_price
float No Enterprise only. Previous price (for strike-through / sale display)
tier_name
string No Enterprise only. Pricing tier name (weighable products only)
quantity_on_hand
float No Enterprise only. Quantity on hand
sellable_quantity
float No Enterprise only. Quantity available to sell
ecomm_quantity
float No Enterprise only. Quantity available for e-commerce
vendor_id
integer No Enterprise only. Supplier id
vendor
string No Enterprise only. Supplier name
vendor_license
string No Enterprise only. Supplier license number
brand
string No Enterprise only. Product brand name
category
string No Enterprise only. Product type / category name
compliance_type
string No Enterprise only. Product type external (compliance) name
flower_type
string No Enterprise only. Flower type
concentrate_type
string No Enterprise only. Concentrate type
product_type
string No Enterprise only. Concentrate type, else flower type, else blank
product_family
string No Enterprise only. Product family name
pack_size
string No Enterprise only. Pack size
tags
array No Enterprise only. Product tags for the venue
bulk_item
boolean No Enterprise only. Whether the product is weighable / sold in bulk
strain
string No Enterprise only. Product strain name
thc_measure
string No Enterprise only. THC measure (from the first lot)
cbd_measure
string No Enterprise only. CBD measure (from the first lot)
sku
string No Enterprise only. SKU barcode
discountable
boolean No Enterprise only. Whether the SKU is discountable
doh_compliant
boolean No Enterprise only. DOH compliance flag (CCRS regions only)
terpenes
array No Enterprise only. Terpenes
effects
array No Enterprise only. Effect trait names
flavors
array No Enterprise only. Flavor trait names
sdp_category
string No Enterprise only. Strain Data Project category (from the oldest in-stock lot)
sdp_compass
string No Enterprise only. Strain Data Project compass image URL (from the oldest in-stock lot)
rooms
object No Enterprise only. Map of room name to quantity on hand (rooms with positive quantity only)
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 1161,
  "current_page": 1,
  "total_pages": 1161,
  "per_page": 1,
  "inventory": [
    {
      "id": 210113,
      "product_id": 902429,
      "name": "Phat Panda - Lemon Danish Glaze",
      "unit": "280.0 gm",
      "price": 1300,
      "med_price": null,
      "last_price": 1300,
      "quantity_on_hand": "369.7",
      "sellable_quantity": "369.7",
      "ecomm_quantity": "369.7",
      "vendor": "PIONEER PRODUCTION AND PROCESSING",
      "vendor_license": null,
      "brand": "Phat Panda",
      "category": "Bulk Flower",
      "flower_type": "hybrid",
      "concentrate_type": null,
      "product_type": "hybrid",
      "product_family": "Flower",
      "description": "A perfect wake and bake strain. Sweet lemon and mell...",
      "image": [
        null
      ],
      "active": false,
      "bulk_item": true,
      "strain": "Lemon Danish",
      "thc_measure": "21.5%",
      "cbd_measure": "0.7%",
      "sku": "3264-902429",
      "discountable": true,
      "tier_name": "Top Shelf Tier",
      "created_at": "2019-10-16T20:37:49.000Z",
      "updated_at": "2022-07-05T17:31:23.000Z",
      "rooms": [
        {
          "Display Case 3": "369.7"
        }
      ]
    }
  ]
}
GET /api/v3/venue/inventories/{id}

Get a single inventory for a venue

Returns a single inventory SKU by id. Responds 404 with { message: "Inventory not found" } when the id does not belong to the venue. Fields marked "Enterprise only" are returned only when the integrator has advanced_inventory_access.

Parameters

Name Type In Required Description
id integer path Yes Inventory SKU id

Example

curl -X GET "https://app.posabit.com/api/v3/venue/inventories/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized
404 Inventory not found

Response Fields

Field Type Required Description
id
integer Yes Inventory SKU id
product_id
integer No Product id
active
boolean No Whether the SKU is active
name
string No Product name
display_name
string No Display name (falls back to product name)
unit
string No Unit size, weight plus short unit (e.g. "1.0 g")
description
string No Plain-text product description (HTML stripped)
image
array No Cover image URL(s)
description_html
string No Enterprise only. Product description including HTML
internal_product_identifier
string No Enterprise only. Internal product id
price
float No Enterprise only. Retail (recreational) price
med_price
float No Enterprise only. Medical price
last_price
float No Enterprise only. Previous price (for strike-through / sale display)
quantity_on_hand
float No Enterprise only. Quantity on hand
sellable_quantity
float No Enterprise only. Quantity available to sell
ecomm_quantity
float No Enterprise only. Quantity available for e-commerce
vendor
string No Enterprise only. Supplier name
vendor_license
string No Enterprise only. Supplier license number
brand
string No Enterprise only. Product brand name
category
string No Enterprise only. Product type / category name
compliance_type
string No Enterprise only. Product type external (compliance) name
flower_type
string No Enterprise only. Flower type
concentrate_type
string No Enterprise only. Concentrate type
product_type
string No Enterprise only. Concentrate type, else flower type, else blank (kept for backwards compatibility)
product_family
string No Enterprise only. Product family name
pack_size
string No Enterprise only. Pack size
tags
array No Enterprise only. Product tags for the venue
bulk_item
boolean No Enterprise only. Whether the product is weighable / sold in bulk
strain
string No Enterprise only. Product strain name
thc_measure
string No Enterprise only. THC measure (from the first lot)
thca_measure
string No Enterprise only. THCA measure (from the first lot)
total_thc_measure
string No Enterprise only. Total THC measure (from the first lot)
cbd_measure
string No Enterprise only. CBD measure (from the first lot)
cbda_measure
string No Enterprise only. CBDA measure (from the first lot)
total_cbd_measure
string No Enterprise only. Total CBD measure (from the first lot)
sku
string No Enterprise only. SKU barcode
discountable
boolean No Enterprise only. Whether the SKU is discountable
tier_name
string No Enterprise only. Pricing tier name (weighable products only)
doh_compliant
boolean No Enterprise only. DOH compliance flag (CCRS regions only)
tier_prices
array (object) No Enterprise only. Tier pricing by weight
weight
string No Tier weight
weight_unit
string No Tier weight unit
weight_in_grams
float No Tier weight in grams (rounded to 2 decimals)
price
float No Retail (recreational) price for this weight
med_price
float No Medical price for this weight
terpenes
array No Enterprise only. Terpenes
effects
array No Enterprise only. Effect names
flavors
array No Enterprise only. Flavor names
sdp_category
string No Enterprise only. Strain Data Project category (from the oldest in-stock lot)
sdp_compass
string No Enterprise only. Strain Data Project compass image URL (from the oldest in-stock lot)
images
array (object) No Enterprise only. Product image variants
name
string No Image name
og
string No Original image URL
lg
string No Large (web) image URL
md
string No Medium image URL
thumb
string No Thumbnail image URL
is_product_specific_image
boolean No Whether the image is specific to this product (not the default)
position
integer No Image sort position
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "id": 107890,
  "product_id": 800566,
  "name": " zz Panacea - Cherry OG Trim (14g)",
  "unit": "14.0 gm",
  "price": 1000,
  "med_price": null,
  "last_price": 5400,
  "quantity_on_hand": "95.0",
  "sellable_quantity": "94.0",
  "ecomm_quantity": "94.0",
  "vendor": "Solar Joes",
  "vendor_license": "415819",
  "brand": "Panacea",
  "category": "Flower",
  "compliance_type": "Usable Cannabis",
  "flower_type": "hybrid",
  "concentrate_type": null,
  "product_type": "hybrid",
  "product_family": "Flower",
  "tags": [
    "Industry",
    "Sale Day"
  ],
  "description": "Double trimmed premium shake bag with Cherry OG, a very balanced hybrid. Great flavors.",
  "description_html": "<div>Double <strong>trimmed</strong> premium <em>shake</em> bag with <del>Cherry</del> OG, a very balanced hybrid. Great flavors.</div>",
  "image": [
    "https://pbit-staging.s3.amazonaws.com/images/image/3194/leaf_2.jpeg"
  ],
  "active": true,
  "bulk_item": true,
  "strain": "Cherry OG Trim",
  "thc_measure": "61.9%",
  "thca_measure": "0.0",
  "total_thc_measure": "0.0",
  "cbd_measure": "5.4%",
  "cbda_measure": "0.0",
  "total_cbd_measure": "0.0",
  "sku": "6033512330004399",
  "discountable": true,
  "tier_name": "Top Tier",
  "doh_compliant": false,
  "tier_prices": [
    {
      "weight": "1.0",
      "weight_unit": "grams",
      "weight_in_grams": 1,
      "price": 1000,
      "med_price": null
    },
    {
      "weight": "3.5",
      "weight_unit": "grams",
      "weight_in_grams": 3.5,
      "price": 3000,
      "med_price": null
    },
    {
      "weight": "7.0",
      "weight_unit": "grams",
      "weight_in_grams": 7,
      "price": 5500,
      "med_price": null
    },
    {
      "weight": "14.0",
      "weight_unit": "grams",
      "weight_in_grams": 14,
      "price": 10000,
      "med_price": null
    }
  ],
  "terpenes": [],
  "effects": [],
  "flavors": [],
  "images": [
    {
      "name": "leaf_2.jpeg",
      "og": "https://pbit-staging.s3.amazonaws.com/images/image/3194/leaf_2.jpeg",
      "lg": "https://pbit-staging.s3.amazonaws.com/images/image/3194/web_leaf_2.jpeg",
      "md": "https://pbit-staging.s3.amazonaws.com/images/image/3194/medium_leaf_2.jpeg",
      "thumb": "https://pbit-staging.s3.amazonaws.com/images/image/3194/thumb_leaf_2.jpeg",
      "is_product_specific_image": true,
      "position": 1
    },
    {
      "name": "brand.jpeg",
      "og": "https://pbit-staging.s3.amazonaws.com/images/image/2620/brand.jpeg",
      "lg": "https://pbit-staging.s3.amazonaws.com/images/image/2620/web_brand.jpeg",
      "md": "https://pbit-staging.s3.amazonaws.com/images/image/2620/medium_brand.jpeg",
      "thumb": "https://pbit-staging.s3.amazonaws.com/images/image/2620/thumb_brand.jpeg",
      "is_product_specific_image": true,
      "position": 4
    }
  ],
  "created_at": "2018-08-08T18:37:47.000Z",
  "updated_at": "2024-12-10T18:54:53.000Z"
}
PATCH /api/v3/venue/inventories/{id}

Update pricing for a single inventory

Updates the pricing fields of an inventory SKU. Only price, med_price and last_price may be set. On success responds with the updated record. Responds 404 when the id does not belong to the venue, and 422 when no valid attributes are supplied or validation fails.

Parameters

Name Type In Required Description
id integer path Yes Inventory SKU id
body object body Yes Pricing payload

Example

curl -X PATCH "https://app.posabit.com/api/v3/venue/inventories/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
inventory_sku
object Yes The pricing fields
price
float No Retail (recreational) price
med_price
float No Medical price
last_price
float No Previous price (used to show strike-through / sale pricing)

Responses

Status Description
200 Success
401 Unauthorized
404 Inventory not found
422 No valid attributes to update / validation failed

Response Fields

Field Type Required Description
id
integer Yes Inventory SKU id
product_id
integer No Product id
active
boolean No Whether the SKU is active
name
string No Product name
display_name
string No Display name (falls back to product name)
unit
string No Unit size, weight plus short unit (e.g. "1.0 g")
description
string No Plain-text product description (HTML stripped)
image
array No Cover image URL(s)
description_html
string No Enterprise only. Product description including HTML
internal_product_identifier
string No Enterprise only. Internal product id
price
float No Enterprise only. Retail (recreational) price
med_price
float No Enterprise only. Medical price
last_price
float No Enterprise only. Previous price (for strike-through / sale display)
quantity_on_hand
float No Enterprise only. Quantity on hand
sellable_quantity
float No Enterprise only. Quantity available to sell
ecomm_quantity
float No Enterprise only. Quantity available for e-commerce
vendor
string No Enterprise only. Supplier name
vendor_license
string No Enterprise only. Supplier license number
brand
string No Enterprise only. Product brand name
category
string No Enterprise only. Product type / category name
compliance_type
string No Enterprise only. Product type external (compliance) name
flower_type
string No Enterprise only. Flower type
concentrate_type
string No Enterprise only. Concentrate type
product_type
string No Enterprise only. Concentrate type, else flower type, else blank (kept for backwards compatibility)
product_family
string No Enterprise only. Product family name
pack_size
string No Enterprise only. Pack size
tags
array No Enterprise only. Product tags for the venue
bulk_item
boolean No Enterprise only. Whether the product is weighable / sold in bulk
strain
string No Enterprise only. Product strain name
thc_measure
string No Enterprise only. THC measure (from the first lot)
thca_measure
string No Enterprise only. THCA measure (from the first lot)
total_thc_measure
string No Enterprise only. Total THC measure (from the first lot)
cbd_measure
string No Enterprise only. CBD measure (from the first lot)
cbda_measure
string No Enterprise only. CBDA measure (from the first lot)
total_cbd_measure
string No Enterprise only. Total CBD measure (from the first lot)
sku
string No Enterprise only. SKU barcode
discountable
boolean No Enterprise only. Whether the SKU is discountable
tier_name
string No Enterprise only. Pricing tier name (weighable products only)
doh_compliant
boolean No Enterprise only. DOH compliance flag (CCRS regions only)
tier_prices
array (object) No Enterprise only. Tier pricing by weight
weight
string No Tier weight
weight_unit
string No Tier weight unit
weight_in_grams
float No Tier weight in grams (rounded to 2 decimals)
price
float No Retail (recreational) price for this weight
med_price
float No Medical price for this weight
terpenes
array No Enterprise only. Terpenes
effects
array No Enterprise only. Effect names
flavors
array No Enterprise only. Flavor names
sdp_category
string No Enterprise only. Strain Data Project category (from the oldest in-stock lot)
sdp_compass
string No Enterprise only. Strain Data Project compass image URL (from the oldest in-stock lot)
images
array (object) No Enterprise only. Product image variants
name
string No Image name
og
string No Original image URL
lg
string No Large (web) image URL
md
string No Medium image URL
thumb
string No Thumbnail image URL
is_product_specific_image
boolean No Whether the image is specific to this product (not the default)
position
integer No Image sort position
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Inventory Tiers

1 endpoints
Tiered pricing is a great way to set different price points when selling bulk products. Using preset product quality's allows you to easily price out different brands and strains. In addition, you have the ability to set price points for as many weights as you wish in order to guarantee your products are priced exactly how you want them.
GET /api/v3/venue/inventory_tiers

Get the venue's inventory pricing tiers

Requires advanced_inventory_access. Not paginated: every tier is returned, each with a price entry for every active tier weight of the merchant.

Example

curl -X GET "https://app.posabit.com/api/v3/venue/inventory_tiers" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
inventory_tiers
array (object) Yes Inventory tiers
id
integer Yes Inventory tier id
name
string No Tier name
weights
array (object) No Prices by tier weight, in tier weight position order
id
integer No Tier weight id
name
string No Tier weight name
position
integer No Tier weight position
price
integer No Retail (recreational) price at this weight; null when unset
med_price
integer No Medical price at this weight; null when unset
weight
string No Weight, as a decimal string
weight_unit
string No Unit of weight (e.g. g, oz)
weight_in_grams
string No Weight converted to grams, currently serialized as a fraction string (e.g. "7/2")

Response Example

{
  "inventory_tiers": [
    {
      "id": 1,
      "name": "Low Tier",
      "weights": [
        {
          "name": "1g",
          "position": 1,
          "price": 100,
          "med_price": null,
          "weight": "1.0",
          "weight_unit": "grams",
          "weight_in_grams": "1.0"
        },
        {
          "name": "3.5g",
          "position": 2,
          "price": 180,
          "med_price": null,
          "weight": "3.5",
          "weight_unit": "grams",
          "weight_in_grams": "3.5"
        },
        {
          "name": "7",
          "position": 6,
          "price": 0,
          "med_price": null,
          "weight": "7.0",
          "weight_unit": "grams",
          "weight_in_grams": "7.0"
        },
        {
          "name": ".5 oz",
          "position": 7,
          "price": 500,
          "med_price": null,
          "weight": "14.0",
          "weight_unit": "grams",
          "weight_in_grams": "14.0"
        },
        {
          "name": "Weight 8oz",
          "position": 8,
          "price": 840,
          "med_price": null,
          "weight": "8.0",
          "weight_unit": "ounces",
          "weight_in_grams": "45359237/200000"
        }
      ]
    },
    {
      "id": 2,
      "name": "Top Tier",
      "weights": [
        {
          "name": "1g",
          "position": 1,
          "price": 1000,
          "med_price": null,
          "weight": "1.0",
          "weight_unit": "grams",
          "weight_in_grams": "1.0"
        },
        {
          "name": "3.5g",
          "position": 2,
          "price": 3000,
          "med_price": null,
          "weight": "3.5",
          "weight_unit": "grams",
          "weight_in_grams": "3.5"
        },
        {
          "name": "7",
          "position": 6,
          "price": 5500,
          "med_price": null,
          "weight": "7.0",
          "weight_unit": "grams",
          "weight_in_grams": "7.0"
        },
        {
          "name": ".5 oz",
          "position": 7,
          "price": 10000,
          "med_price": null,
          "weight": "14.0",
          "weight_unit": "grams",
          "weight_in_grams": "14.0"
        },
        {
          "name": "Weight 8oz",
          "position": 8,
          "price": 30000,
          "med_price": null,
          "weight": "8.0",
          "weight_unit": "ounces",
          "weight_in_grams": "45359237/200000"
        }
      ]
    }
  ]
}

Inventory Transactions

1 endpoints
GET /api/v3/venue/inventory_transactions

Get the venue's inventory transactions

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return inventory transactions updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return inventory transactions updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[transaction_type_eq] string query No Only return transactions of this type: sale, purchase, refund, adjustment, manifest_adjustment, manifest_cost_adjustment, reset, item_destroyed, split_parent, split_child, transferred_out, voided_transfer_out, void_sale, item_removed, item_added, import, item_transformed, transformed_adjustment, lot_merge, cost_change
q[manifest_item_id_eq] integer query No Only return transactions for this manifest item id
q[order_id_eq] integer query No Only return transactions for this order id
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/inventory_transactions" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
inventory_transactions
array (object) Yes Inventory transactions
id
integer Yes Transaction id
sku_id
integer No Inventory SKU id the movement applies to
manifest_item_id
integer No Lot the movement applies to, when it came from one
transaction_type
string No One of: sale, purchase, refund, adjustment, manifest_adjustment, manifest_cost_adjustment, reset, item_destroyed, split_parent, split_child, transferred_out, voided_transfer_out, void_sale, item_removed, item_added, import, item_transformed, transformed_adjustment, lot_merge, cost_change
order_id
integer No Id of the record that caused the movement, when there is one
order_type
string No Class of the record named by order_id, e.g. Order
quantity
string No Signed quantity moved. Negative for stock leaving
reason
string No Reason code, for adjustments
note
string No Free-text note
updated_by
string No Who recorded the movement
cost_diff
integer No Change in unit cost in cents
previous_cost
integer No Unit cost in cents before the movement
updated_cost
integer No Unit cost in cents after the movement
previous_quantity
float No Quantity on hand before the movement
updated_quantity
float No Quantity on hand after the movement
created_at
string No Date the movement was recorded (a date, not a timestamp)
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 116327,
  "current_page": 1,
  "total_pages": 116327,
  "per_page": 1,
  "inventory_transactions": [
    {
      "id": 8984553,
      "manifest_item_id": 178188,
      "sku_id": 107893,
      "transaction_type": "purchase",
      "order_id": 178188,
      "order_type": "ManifestItem",
      "quantity": "5.0",
      "reason": "auto replenish",
      "updated_by": null,
      "note": null,
      "cost_diff": 1000,
      "previous_cost": 2000,
      "updated_cost": 3000,
      "previous_quantity": 3791,
      "updated_quantity": 3796,
      "created_at": "2024-02-22",
      "updated_at": "2024-02-22T10:37:02.000Z"
    }
  ]
}

Manifest Items

1 endpoints
GET /api/v3/venue/manifest_items

Get all manifest items for a venue

Returns paginated manifest items (individual lots/packages) for the authenticated venue. Requires advanced_inventory_access. per_page is capped at max_per_page (100). Larger values are silently reduced to the cap, so page through the result set using total_pages. Supports ransack filters under q[...]: state_eq (aliased to aasm_state_eq), inventory_id_eq (aliased to inventory_sku_id_eq), updated_at_gt, updated_at_lt, quantity_on_hand_gt, quantity_on_hand_lt, quantity_on_hand_eq, id_eq, barcode_eq, and s (sort).

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 100, max 100)
q[updated_at_gt] datestring query No Only return manifest items updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return manifest items updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[aasm_state_eq] string query No Only return lots in this state: pending, active, active_unassigned, quarantined, destruction_scheduled, item_destroyed, closed, transferred_out, rejected, unsellable, locked. Also accepted as q[state_eq]
q[id_eq] integer query No Only return the manifest item with this id
q[barcode_eq] string query No Only return manifest items with this barcode
q[inventory_sku_id_eq] integer query No Only return manifest items for this inventory sku id. Also accepted as q[inventory_id_eq]
q[quantity_on_hand_gt] string query No Only return manifest items with quantity on hand greater than this
q[quantity_on_hand_lt] string query No Only return manifest items with quantity on hand less than this
q[quantity_on_hand_eq] string query No Only return manifest items with exactly this quantity on hand
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/manifest_items" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
max_per_page
integer No Ceiling on per_page
manifest_items
array (object) Yes Manifest items
id
integer Yes Manifest item id
manifest_id
integer No Parent manifest id
state
string No Workflow state (aasm_state)
supplier_quantity
float No Quantity received from the supplier
accepted_quantity
float No Accepted quantity
quantity_on_hand
float No Quantity currently on hand
pre_return_quantity
float No Quantity prior to any return
cost_per_unit
float No Cost per unit
inventory_id
integer No Inventory SKU id
lot_number
string No Lot number
barcode
string No Barcode
batch_number
string No Batch number
sku_reference
string No Supplier's own SKU for the product, as sent on the transfer manifest (WCIA product_sku)
last_audit
string No Timestamp of the last audit
venue_room
string No Name of the room the item is stored in
harvest_date
string No Harvest date
thc_measure
string No THC measure (formatted for display)
cbd_measure
string No CBD measure (formatted for display)
thca_measure
string No THCA measure (formatted for display)
cbda_measure
string No CBDA measure (formatted for display)
total_thc_measure
string No Total THC measure (formatted for display)
total_cbd_measure
string No Total CBD measure (formatted for display)
other_cannabinoids
string No Minor / other cannabinoids label
coa_url
string No Certificate of analysis URL
unit_weight
float No Weight per unit
unit_of_weight
string No Unit of weight (e.g. g, oz)
weight_in_grams
float No Weight per unit converted to grams
accepted_date
string No Date the item was accepted
doh_compliant
boolean No DOH compliance flag (CCRS regions only)
parent_id
integer No Parent manifest item id (when split from another item)
parent_manifest_id
integer No Manifest id of the parent item
transformed_from_id
integer No Manifest item id this was transformed from
transformed_from_manifest_id
integer No Manifest id of the item this was transformed from
sdp_category
string No SDP category
sdp_compass
string No SDP compass value
terpenes
array (object) No Terpene results
name
string No Terpene name
potency
float No Terpene potency
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 208,
  "current_page": 1,
  "total_pages": 208,
  "per_page": 1,
  "manifest_items": [
    {
      "id": 261878,
      "manifest_id": null,
      "state": "active",
      "supplier_quantity": "365.0",
      "accepted_quantity": "365.0",
      "quantity_on_hand": "369.7",
      "pre_return_quantity": null,
      "cost_per_unit": 300,
      "inventory_id": 210113,
      "lot_number": "WAR414871.IN6BJ9N",
      "barcode": "WAJ416063.IN6AEJ2",
      "batch_number": null,
      "last_audit": null,
      "venue_room": "Display Case 3",
      "harvest_date": null,
      "thc_measure": "21.5%",
      "cbd_measure": "0.7%",
      "coa_url": null,
      "created_at": "2019-10-16T20:37:50.000Z",
      "updated_at": "2022-06-27T21:25:45.000Z"
    }
  ]
}

Manifests

1 endpoints
GET /api/v3/venue/manifests

Get all manifest items for a venue

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return manifests updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return manifests updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[aasm_state_eq] string query No Only return manifests in this state: pending, accepted, rejected, accepted_unassigned, voided, pre_import. Also accepted as q[state_eq]
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/manifests" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
manifests
array (object) Yes Manifests
id
integer Yes Manifest id
reference_no
string No Reference number
state
string No One of: pending, accepted, rejected, accepted_unassigned, voided, pre_import
supplier
string No Supplier name
supplier_license
string No Supplier license number
transfer_date
datetime No Transfer date
delivery_time
datetime No Delivery time
notes
string No Free-text notes
accepted_at
datetime No Inbound manifests only. When the manifest was accepted
accepted_by
string No Inbound manifests only. Who accepted it
received_cost
integer No Inbound manifests only. Cost as received, in cents
accepted_cost
integer No Inbound manifests only. Cost as accepted, in cents
received_quantity
string No Inbound manifests only. Quantity as received
accepted_quantity
string No Inbound manifests only. Quantity as accepted
has_marijuana
boolean No Inbound manifests only. Whether the manifest contains cannabis
import_source
string No Inbound manifests only. Where the manifest was imported from
discount
integer No Inbound manifests only. Discount in cents
return_destination_name
string No Return and transfer manifests only. Destination name
return_destination_license
string No Return and transfer manifests only. Destination license number
transferred_at
datetime No Return and transfer manifests only. When the transfer happened
manifest_items
array Yes The lots on this manifest. Each entry has the same shape as ManifestItemResponse on the manifest_items endpoint, which renders from the same partial
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 46,
  "current_page": 1,
  "total_pages": 46,
  "per_page": 1,
  "manifests": [
    {
      "id": 364,
      "reference_no": "2",
      "supplier": "Oregon Top Shelf",
      "state": "accepted",
      "transfer_date": "2019-10-22",
      "delivery_time": null,
      "notes": "",
      "accepted_at": "2019-12-05T18:13:24.000Z",
      "accepted_by": "Matt McCullough",
      "received_cost": 10000,
      "accepted_cost": null,
      "received_quantity": 100,
      "accepted_quantity": null,
      "has_marijuana": true,
      "import_source": null,
      "discount": null,
      "manifest_items": [
        {
          "id": 276454,
          "manifest_id": 364,
          "state": "active",
          "supplier_quantity": "100.0",
          "accepted_quantity": "100.0",
          "quantity_on_hand": "5.0",
          "pre_return_quantity": null,
          "cost_per_unit": 100,
          "inventory_id": 214643,
          "lot_number": "1A4FFFB0007A122000003899",
          "barcode": "1A4FFFB0007A122000003899",
          "batch_number": "ncx7pmo24XXNGt0H",
          "last_audit": null,
          "venue_room": "Display Case 1",
          "harvest_date": null,
          "thc_measure": "70.0%",
          "cbd_measure": "0.0%",
          "coa_url": null,
          "created_at": "2019-10-22T00:18:31.000Z",
          "updated_at": "2020-05-04T20:21:26.000Z"
        }
      ],
      "created_at": "2019-10-22T00:18:31.000Z",
      "updated_at": "2019-12-05T18:13:24.000Z"
    }
  ]
}

Menu Feeds

2 endpoints
GET /api/v3/menu_feeds/{id}

Show a Menu Feed

Returns the feed's categories ("menu_groups"), each with the products that match the category's filters, each with one entry in "prices" per sellable variant. The response is cached for 10 minutes, so edits to products, pricing or the feed's categories can take that long to appear. Identifying a product: menu_items[].id is NOT a reliable product id. When the category has combine_weights set, siblings are grouped by strain and brand and the item id becomes a "Strain - Brand - Type" label covering several products. Use prices[].product_id, which is always the id of the product that variant belongs to. For the same reason brand_id and strain_id are the only ids on the item itself; product_type_id, supplier_id and the tier ids are per price entry.

Parameters

Name Type In Required Description
id integer path Yes Feed Key

Example

curl -X GET "https://app.posabit.com/api/v3/menu_feeds/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
400 Bad Request
422 Invalid parameters
500 Internal Server Error

Response Fields

Field Type Required Description
menu_feed
object Yes The feed and its categories
title
string No Feed title
feed_key
string No Feed key (the id used to request this feed)
description
string No Feed description
feed_type
string No Feed type, e.g. endpoint, weedmaps, leafly
menu_groups
array (object) Yes Feed categories, in display order
id
integer Yes Menu feed category id
name
string No Category name
category_guid
string No Stable category guid
name_template
string No Template used to build each item's display name
combine_weights
boolean No Whether products sharing a strain and brand are combined into a single item with one price entry per sibling
description
string No Category description
image
object No Category image
is_default
boolean No Whether this is the placeholder rather than an uploaded image
og
string No Original image URL
lg
string No Large image URL
md
string No Medium image URL
sm
string No Small image URL
menu_items
array (object) Yes Products in this category
id
string Yes Product id as a string, or a "Strain - Brand - Type" label when the category combines weights. Not a reliable product id -- use prices[].product_id
guid
string No Random uuid regenerated whenever the feed cache is rebuilt. Not a stable identifier
name
string No Display name, built from the category's name template
description
string No Plain-text product description (HTML stripped)
description_html
string No Product description including HTML
is_medical_only
boolean No Whether the product is medical only
is_recreational_only
boolean No Whether the product is recreational only
tag_list
array No Product tag names visible to this venue
tag_ids
array No Product tag ids, in the same order as tag_list. Discounts match on these ids
pack_size
string No Pack size
flower_type
string No Flower type
concentrate_type
string No Concentrate type
brand
string No Product brand name
brand_id
integer No Product brand id. Uniform across a combined item, since brand is part of the grouping key
strain
string No Product strain name
strain_id
integer No Product strain id. Uniform across a combined item, since strain is part of the grouping key
terpenes
array No Terpene names
effects
array No Effect trait names
flavors
array No Flavor trait names
product_type
string No Product type name. With combine_weights this is the representative product's type and siblings may differ -- use prices[].product_type_id
product_family
string No Product family name
is_marijuana
boolean No Whether the product type is marijuana
popularity
integer No Bestseller position for this venue, or 9999 when the product is not ranked
tier_name
string No Pricing tier name. Present only for weighable products priced from a tier
doh_compliant
boolean No DOH compliance flag. Present only in CCRS regions
brand_logo
object No Brand logo
is_default
boolean No Whether this is the placeholder rather than an uploaded image
og
string No Original image URL
lg
string No Large image URL
md
string No Medium image URL
sm
string No Small image URL
product_image
object No DEPRECATED: use product_image_v2. Product cover image
is_default
boolean No Whether this is the placeholder rather than an uploaded image
is_product_specific_image
boolean No Whether the image belongs to this product rather than being inherited
og
string No Original image URL
lg
string No Large image URL
md
string No Medium image URL
sm
string No Small image URL
thumb
string No Thumbnail image URL
product_image_v2
object No Product cover image
is_default
boolean No Whether this is the placeholder rather than an uploaded image
is_product_specific_image
boolean No Whether the image belongs to this product rather than being inherited
og
string No Original image URL
lg
string No Large image URL
md
string No Medium image URL
sm
string No Small image URL
thumb
string No Thumbnail image URL
images
array (object) No All product images, in position order
name
string No Image name
og
string No Original image URL
lg
string No Large (web) image URL
md
string No Medium image URL
thumb
string No Thumbnail image URL
is_product_specific_image
boolean No Whether the image belongs to this product rather than being inherited
position
integer No Sort position
prices
array (object) Yes One entry per sellable variant. Empty when nothing is sellable
id
string Yes Variant key: the product id, or "productId_tierName_weightName" for a tier weight. Not a database id -- use product_id and inventory_id
product_id
integer Yes Product id for this variant
inventory_id
integer No Inventory SKU id for this variant
product_type_id
integer No Product type id for this variant
tier_id
integer No Pricing tier id, or null when the SKU is not tiered
tier_weight_id
integer No Tier weight id, or null when this entry is not a tier weight
supplier
string No Supplier name
supplier_id
integer No Supplier id
name
string No Product name for this variant
price_cents
integer No Recreational price in cents
med_price_cents
integer No Medical price in cents, or null when the venue does not use medical pricing
calculated_med_price_cents
integer No Derived medical price in cents. Not returned for tier weight entries
last_price_cents
integer No Previous price in cents, for strike-through display. Not returned for tier weight entries
unit
string No Unit size. Milligram weights are converted to grams
unit_type
string No Unit of measure
quantity_on_hand
string No E-commerce quantity available, in grams for tier weight entries
equivalent_weight
string No Equivalent weight for purchase-limit purposes
equivalent_unit
string No Unit of the equivalent weight
discountable
boolean No Whether the SKU may be discounted
thc
object No THC measure
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. percent or milligrams
cbd
object No CBD measure
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. percent or milligrams
thca
object No THCA measure
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. percent or milligrams
cbda
object No CBDA measure
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. percent or milligrams
total_thc
object No Total THC, computed from THC and THCA when not supplied
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. percent or milligrams
total_cbd
object No Total CBD, computed from CBD and CBDA when not supplied
current
float No Measured value
low
float No Low end of the range
high
float No High end of the range
unit_type
string No Unit the values are expressed in, e.g. percent or milligrams
GET /api/v3/menu_feeds/{menu_feed_id}/options

Check that a feed key is valid and authorized

Returns an empty object. This is a reachability and authorization check: 200 when the feed key resolves for the authenticated venue, 404 when it does not. It previously returned menu widget display settings (theme, fonts, colors, allow_orders and so on). Those columns were removed in 2019 and the values now reach the widget through the embed snippet the venue pastes into their site, not through this endpoint, so the body has been emptied rather than left raising. Despite the name this is a GET, and it has no role in CORS -- browser preflight is answered by the CORS middleware before routing.

Parameters

Name Type In Required Description
menu_feed_id integer path Yes Feed Key

Example

curl -X GET "https://app.posabit.com/api/v3/menu_feeds/{menu_feed_id}/options" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
400 Bad Request
404 Could not find menu feed
422 Invalid parameters
500 Internal Server Error

Product Brands

1 endpoints
Check out the Brand library and view sales metrics for any brand, by any date range. Various insights can be easily surfaced with the click of a button to help the store figure out how well different brands are performing throughout the store. Information such as: top selling products, top employee sales, total applied discounts/loyalty rewards, and sales by age and gender are all included.
GET /api/v3/venue/product_brands

Get the venue's product brands

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return product brands updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return product brands updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[used_eq] boolean query No When true, only return brands that have inventory at this venue
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/product_brands" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
product_brands
array (object) Yes Product brands
id
integer Yes Brand id. Discounts scoped to a brand match on this
merchant_id
integer No Merchant id
name
string No Brand name
display_name
string No Display name, when it differs from name
abbreviation
string No Short form of the name
color
string No Display colour
image
object No Brand image and its size variants
url
string No Original image URL
large
object No Large variant
url
string No Image URL, null when no image has been uploaded
medium
object No Medium variant
url
string No Image URL, null when no image has been uploaded
small
object No Small variant
url
string No Image URL, null when no image has been uploaded
thumb
object No Thumbnail variant
url
string No Image URL, null when no image has been uploaded
image_assocs_count
integer No Number of images associated with the brand
curated_brand_id
integer No Curated catalog brand id
core_brand_id
integer No Shared catalog brand id
imported_from
string No Source system, when the brand was imported
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 297,
  "current_page": 1,
  "total_pages": 297,
  "per_page": 1,
  "product_brands": [
    {
      "id": 8222,
      "merchant_id": 7705,
      "name": "High Five Farms",
      "abbreviation": null,
      "image": {
        "url": null,
        "large": {
          "url": null
        },
        "medium": {
          "url": null
        },
        "small": {
          "url": null
        },
        "thumb": {
          "url": null
        }
      },
      "created_at": "2019-10-16T20:37:49.000Z",
      "updated_at": "2019-10-16T20:37:49.000Z",
      "imported_from": "file",
      "curated_brand_id": null
    }
  ]
}

Product Strains

1 endpoints
Under the Product Strain tab, you can create new strain names ahead of time when you know you are expecting new product, and manage strains to ensure your library remains free of duplicate names with our handy strain migration tool.
GET /api/v3/venue/product_strains

Get the venue's product strains

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return product strains updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return product strains updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[used_eq] boolean query No When true, only return strains that have inventory at this venue
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/product_strains" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
product_strains
array (object) Yes Product strains
id
integer Yes Strain id. Discounts scoped to a strain match on this
merchant_id
integer No Merchant id
name
string No Strain name
sanitized_name
string No Name with punctuation and spacing removed, used for matching
color
string No Display colour
image_assocs_count
integer No Number of images associated with the strain
imported_from
string No Source system, when the strain was imported
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 532,
  "current_page": 1,
  "total_pages": 532,
  "per_page": 1,
  "product_strains": [
    {
      "id": 32041,
      "merchant_id": 7705,
      "name": "Ghost Train Haze",
      "created_at": "2019-10-16T20:37:49.000Z",
      "updated_at": "2019-10-16T20:37:49.000Z",
      "imported_from": "file"
    }
  ]
}

Product Tags

5 endpoints
Product tags can be created at either the venue or merchant level. These tags can be used when setting up discounts as well as provide in-depth sales data for a specific group of products. First you'll create your tag(s), then you can assign products to each tag! Tags can be added to products one by one or you can use our bulk tagging feature that allows you to filter and apply tags to a group of products. <ul><li>Venue Tags: These tags are specific to your store and cannot be seen by any other venue within your merchant account.</li> <li>Merchant Tags: These tags are shared across all venues within your merchant account.</li></ul>
GET /api/v3/venue/product_tags

Get the venue's product tags

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return product tags updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return product tags updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/product_tags" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
product_tags
array (object) Yes Product tags
id
integer Yes Tag id. Discounts scoped to product tags match on this, and it is what menu feed items report in tag_ids
merchant_id
integer No Merchant id
venue_id
integer No Venue id when the tag belongs to a single venue, null when it is merchant wide
name
string No Tag name
description
string No Tag description
color
string No Display colour
active
boolean No Whether the tag is active
pos_enabled
boolean No Whether the tag is selectable in the POS
taggings_count
integer No Number of products carrying the tag
qr_code
object No Generated QR code image
url
string No Image URL, null when no QR code has been generated
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 510,
  "current_page": 1,
  "total_pages": 510,
  "per_page": 1,
  "product_tags": [
    {
      "id": 26439,
      "merchant_id": 7684,
      "venue_id": null,
      "name": "$1offlighter",
      "active": true,
      "pos_enabled": true,
      "description": null,
      "taggings_count": 16,
      "created_at": "2023-07-31T17:29:33.000Z",
      "updated_at": "2023-07-31T17:29:34.000Z",
      "color": "#674E21",
      "qr_code": {
        "url": "https://pbit-staging.s3.amazonaws.com/uploads/ptag_26439.png"
      }
    }
  ]
}
POST /api/v3/venue/product_tags

Create a product tag

Creates a tag for this venue, or for every venue of the merchant when merchant_wide is true. Creating a name that matches a deactivated tag in the same scope reactivates that tag. Requires the Product Management permission.

Parameters

Name Type In Required Description
body object body Yes JSON formatted body

Example

curl -X POST "https://app.posabit.com/api/v3/venue/product_tags" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
product_tag
object Yes The tag to create
name
string Yes Tag name, 3 to 125 characters, unique among the tags of its scope
description
string No Tag description, up to 500 characters
color
string No Display colour as #RRGGBB; a random dark colour when omitted or too light for white text
pos_enabled
boolean No Whether the tag is selectable in the POS (default true)
merchant_wide
boolean No true creates the tag for every venue of the merchant; false or omitted creates it for this venue only

Responses

Status Description
200 Success
401 Unauthorized
422 Unprocessable Entity

Response Fields

Field Type Required Description
product_tag
object Yes The product tag
id
integer Yes Tag id. Discounts scoped to product tags match on this, and it is what menu feed items report in tag_ids
merchant_id
integer No Merchant id
venue_id
integer No Venue id when the tag belongs to a single venue, null when it is merchant wide
name
string No Tag name
description
string No Tag description
color
string No Display colour
active
boolean No Whether the tag is active
pos_enabled
boolean No Whether the tag is selectable in the POS
taggings_count
integer No Number of products carrying the tag
qr_code
object No Generated QR code image
url
string No Image URL, null when no QR code has been generated
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp
DELETE /api/v3/venue/product_tags/{id}

Deactivate a product tag

Deactivates the tag; nothing is deleted, and creating the same name again reactivates it. Deactivating a merchant-wide tag hides it at every venue of the merchant. Requires the Product Management permission.

Parameters

Name Type In Required Description
id integer path Yes Product tag id

Example

curl -X DELETE "https://app.posabit.com/api/v3/venue/product_tags/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized
404 Cannot find product tag

Response Fields

Field Type Required Description
product_tag
object Yes The product tag
id
integer Yes Tag id. Discounts scoped to product tags match on this, and it is what menu feed items report in tag_ids
merchant_id
integer No Merchant id
venue_id
integer No Venue id when the tag belongs to a single venue, null when it is merchant wide
name
string No Tag name
description
string No Tag description
color
string No Display colour
active
boolean No Whether the tag is active
pos_enabled
boolean No Whether the tag is selectable in the POS
taggings_count
integer No Number of products carrying the tag
qr_code
object No Generated QR code image
url
string No Image URL, null when no QR code has been generated
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp
PUT /api/v3/venue/product_tags/{id}/products/add

Add a tag to many products

Up to 250 product ids per call. Products already carrying the tag are left unchanged; ids that are not products of this venue are listed in ignored_product_ids. Requires the Product Management permission.

Parameters

Name Type In Required Description
id integer path Yes Product tag id
body object body Yes JSON formatted body

Example

curl -X PUT "https://app.posabit.com/api/v3/venue/product_tags/{id}/products/add" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
product_ids
array (integer) Yes Product ids, at most 250

Responses

Status Description
200 Success
401 Unauthorized
404 Cannot find product tag
422 Unprocessable Entity

Response Fields

Field Type Required Description
product_tag
object Yes The product tag
id
integer Yes Tag id. Discounts scoped to product tags match on this, and it is what menu feed items report in tag_ids
merchant_id
integer No Merchant id
venue_id
integer No Venue id when the tag belongs to a single venue, null when it is merchant wide
name
string No Tag name
description
string No Tag description
color
string No Display colour
active
boolean No Whether the tag is active
pos_enabled
boolean No Whether the tag is selectable in the POS
taggings_count
integer No Number of products carrying the tag
qr_code
object No Generated QR code image
url
string No Image URL, null when no QR code has been generated
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp
changed_product_ids
array (integer) Yes Products that were tagged or untagged by this call
ignored_product_ids
array (integer) Yes Requested ids that are not products of this venue
PUT /api/v3/venue/product_tags/{id}/products/remove

Remove a tag from many products

Up to 250 product ids per call. Products without the tag are left unchanged; ids that are not products of this venue are listed in ignored_product_ids. Requires the Product Management permission.

Parameters

Name Type In Required Description
id integer path Yes Product tag id
body object body Yes JSON formatted body

Example

curl -X PUT "https://app.posabit.com/api/v3/venue/product_tags/{id}/products/remove" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
product_ids
array (integer) Yes Product ids, at most 250

Responses

Status Description
200 Success
401 Unauthorized
404 Cannot find product tag
422 Unprocessable Entity

Response Fields

Field Type Required Description
product_tag
object Yes The product tag
id
integer Yes Tag id. Discounts scoped to product tags match on this, and it is what menu feed items report in tag_ids
merchant_id
integer No Merchant id
venue_id
integer No Venue id when the tag belongs to a single venue, null when it is merchant wide
name
string No Tag name
description
string No Tag description
color
string No Display colour
active
boolean No Whether the tag is active
pos_enabled
boolean No Whether the tag is selectable in the POS
taggings_count
integer No Number of products carrying the tag
qr_code
object No Generated QR code image
url
string No Image URL, null when no QR code has been generated
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp
changed_product_ids
array (integer) Yes Products that were tagged or untagged by this call
ignored_product_ids
array (integer) Yes Requested ids that are not products of this venue

Product Types

1 endpoints
Product types are used to classify and group like products. They should be set up upon installation and maintained as you create and add new product types. It is important to take extra care when configuring each type and ensure compliance-related settings such as purchase limits and taxes are properly set.
GET /api/v3/venue/product_types

Get the venue's product types

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return product types updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return product types updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/product_types" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
product_types
array (object) Yes Product types
id
integer Yes Product type id. Discounts scoped to a product type match on this
name
string No Product type name
description
string No Product type description
is_marijuana
boolean No Whether products of this type are cannabis
weighable
boolean No Whether products of this type are sold by weight
family_id
integer No Product family id
family_name
string No Product family name
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 90,
  "current_page": 1,
  "total_pages": 18,
  "per_page": 5,
  "product_types": [
    {
      "id": 3673,
      "name": "Default",
      "description": null,
      "created_at": "2018-08-08T17:28:52.000Z",
      "updated_at": "2023-01-06T17:08:09.000Z",
      "is_marijuana": true,
      "weighable": false,
      "family_id": 2,
      "family_name": "Flower"
    }
  ]
}

Products

2 endpoints
Product content is completely customizable and managed by the store as new products arrive. Create a new product if you are accepting something that you've never carried before! Products can be created prior to accepting a new manifest by clicking the New Product button located in the top right of this page, or you can create the product on the fly while in-taking a new manifest.
PUT /api/v3/venue/products/{id}/product_tags/add

Add tags to a product

Ids that are not active tags of this venue or its merchant are ignored, as are tags the product already has. Requires the Product Management permission.

Parameters

Name Type In Required Description
id integer path Yes Product id (product_id in GET /api/v3/venue/inventories)
body object body Yes JSON formatted body

Example

curl -X PUT "https://app.posabit.com/api/v3/venue/products/{id}/product_tags/add" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
tag_ids
array (integer) Yes Product tag ids

Responses

Status Description
200 Success
401 Unauthorized
404 Cannot find product

Response Fields

Field Type Required Description
product_id
integer Yes Product id
product_tags
array (object) Yes Product tags
id
integer Yes Tag id. Discounts scoped to product tags match on this, and it is what menu feed items report in tag_ids
merchant_id
integer No Merchant id
venue_id
integer No Venue id when the tag belongs to a single venue, null when it is merchant wide
name
string No Tag name
description
string No Tag description
color
string No Display colour
active
boolean No Whether the tag is active
pos_enabled
boolean No Whether the tag is selectable in the POS
taggings_count
integer No Number of products carrying the tag
qr_code
object No Generated QR code image
url
string No Image URL, null when no QR code has been generated
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp
PUT /api/v3/venue/products/{id}/product_tags/remove

Remove tags from a product

Ids the product is not tagged with, and tags belonging to another venue, are ignored. Requires the Product Management permission.

Parameters

Name Type In Required Description
id integer path Yes Product id (product_id in GET /api/v3/venue/inventories)
body object body Yes JSON formatted body

Example

curl -X PUT "https://app.posabit.com/api/v3/venue/products/{id}/product_tags/remove" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{...}'

Request Body Fields

Field Type Required Description
tag_ids
array (integer) Yes Product tag ids

Responses

Status Description
200 Success
401 Unauthorized
404 Cannot find product

Response Fields

Field Type Required Description
product_id
integer Yes Product id
product_tags
array (object) Yes Product tags
id
integer Yes Tag id. Discounts scoped to product tags match on this, and it is what menu feed items report in tag_ids
merchant_id
integer No Merchant id
venue_id
integer No Venue id when the tag belongs to a single venue, null when it is merchant wide
name
string No Tag name
description
string No Tag description
color
string No Display colour
active
boolean No Whether the tag is active
pos_enabled
boolean No Whether the tag is selectable in the POS
taggings_count
integer No Number of products carrying the tag
qr_code
object No Generated QR code image
url
string No Image URL, null when no QR code has been generated
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Sales Histories

2 endpoints
The Sales window, is where you can see and sort through all of your previous transactions. Use the filters on the left side of the page to sort the transactions however you'd like. You can use this tab when looking for a return or if you'd like to dive into the details of a specific transaction.
GET /api/v3/venue/sales_histories

Get all sales histories for a venue

When no filters are provided, results are limited to sales ordered since the start of day (venue-local) two days ago. The applied ordered_at_gt value is echoed in the response along with default_filter_applied.

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[ordered_at_gt] datestring query No Limit results to sales ordered after this time (defaults to the start of day, venue-local, two days ago when no other filters are given)
q[updated_at_gt] datestring query No Only return sales updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return sales updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[ordered_at_lt] datestring query No Only return sales ordered before this time
q[customer_id_eq] integer query No Only return sales for this customer id
q[incoming_order_id_eq] integer query No Only return the sale for this incoming order id
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/sales_histories" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
ordered_at_gt
string No The ordered_at lower bound actually applied, whether supplied or defaulted. Omitted when no bound applies
default_filter_applied
boolean No True when no bounding filter was supplied and the default two-day window was applied
sales_histories
array (object) Yes Sales
id
integer Yes Sale id
ordered_at
datetime No When the sale was placed, in UTC
ordered_at_local
datetime No When the sale was placed, in the venue's timezone
sale_type
string No Either sale or refund
total
integer No Sale total in cents
user_id
integer No Id of the employee who rang the sale
is_medical
boolean No Enterprise only. Whether this was a medical sale
order_source
string No Enterprise only. Channel the order came from
status
string No Enterprise only. Sale status
terminal_id
integer No Enterprise only. Terminal the sale was rung on
terminal_till_id
integer No Enterprise only. Till the sale was rung against
local_order_id
integer No Enterprise only. Order number local to the venue
incoming_order_id
integer No Enterprise only. Incoming order this sale fulfilled, when it came from one
customer_id
integer No Enterprise only. Customer id
sub_total
integer No Enterprise only. Subtotal in cents, before discount and tax
discount
integer No Enterprise only. Order level discount in cents
tax
integer No Enterprise only. Tax in cents
cost
integer No Enterprise only. Cost of goods in cents
sales_tenders
array (object) No Enterprise only. How the sale was paid for
sales_tender_id
integer Yes Tender id
payment_method_name
string No Payment method used
subtotal
integer No Subtotal covered by this tender, in cents
tax
integer No Tax covered by this tender, in cents
total
integer No Total value of this tender, in cents
items
array (object) Yes Line items
item_id
integer Yes Line item id
sales_history_id
integer No Id of the sale this line belongs to
product_id
integer No Product id
product_name
string No Product name
inventory_id
integer No Inventory SKU id, resolved through the lot. Null when the line has no lot
total
integer No Line total in cents
quantity
string No Enterprise only. Quantity sold
weight
string No Enterprise only. Quantity per unit
lot_id
integer No Enterprise only. Manifest item (lot) id
lot_number
string No Enterprise only. Lot number
sku
string No Enterprise only. Lot barcode
is_marijuana
boolean No Enterprise only. Whether the item is cannabis
unit_weight
string No Enterprise only. Weight of one unit, from the lot
unit_of_weight
string No Enterprise only. Unit the weight is expressed in
weight_in_grams
string No Enterprise only. Unit weight converted to grams
cost
integer No Enterprise only. Cost of goods in cents
sub_total
integer No Enterprise only. Line price in cents before discount and tax
tax
integer No Enterprise only. Line tax in cents
discount
integer No Enterprise only. Line discount in cents
category
string No Enterprise only. Product type name
brand
string No Enterprise only. Product brand name
family_name
string No Enterprise only. Product family name
tier_name
string No Enterprise only. Pricing tier the line was sold at
discount_list
array (object) No Enterprise only. Discounts applied to this line
coupon_id
integer No Discount id, matching the coupons endpoint. Null if the discount has since been deleted
coupon_name
string No Discount name as recorded at the time of sale
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 36,
  "current_page": 1,
  "total_pages": 36,
  "per_page": 1,
  "sales_histories": [
    {
      "id": 49053313,
      "is_medical": false,
      "ordered_at": "2022-06-14T19:37:28.000Z",
      "ordered_at_local": "2022-06-14T12:37:28.000-07:00",
      "sale_type": "sale",
      "order_source": "walk_in",
      "terminal_till_id": 4676,
      "local_order_id": "3264-3-8881-123727",
      "customer_id": 544773,
      "user_id": 12777,
      "sub_total": 1127,
      "discount": 260,
      "tax": 173,
      "total": 1040,
      "cost": 275,
      "items": [
        {
          "item_id": 91312852,
          "sales_history_id": 49053313,
          "product_id": 902427,
          "inventory_id": 210111,
          "lot_id": 261876,
          "lot_number": "WAR414871.IN5SAJM",
          "is_marijuana": true,
          "quantity": 1,
          "weight": "1.0",
          "cost": 275,
          "sub_total": 1127,
          "tax": 173,
          "discount": 260,
          "sku": "WAJ416746.IN5NZ29",
          "category": "Bulk Flower",
          "brand": "High Five Farms",
          "product_name": "High Five Farms - Ghost Train Haze",
          "family_name": "Flower",
          "unit_of_weight": "gm",
          "tier_name": "Top Shelf Tier",
          "discount_list": [
            {
              "coupon_id": 47769,
              "coupon_name": "test happy hour"
            }
          ],
          "total": 1040
        }
      ],
      "sales_tenders": [
        {
          "sales_tender_id": 11738303,
          "subtotal": 867,
          "tax": 173,
          "total": 1040,
          "payment_method_name": "Cash"
        }
      ],
      "created_at": "2022-06-14T19:37:30.000Z",
      "updated_at": "2022-06-14T19:37:30.000Z"
    }
  ]
}
GET /api/v3/venue/sales_histories/{id}

Get a sales history for a venue

Parameters

Name Type In Required Description
id integer path Yes Sales History ID

Example

curl -X GET "https://app.posabit.com/api/v3/venue/sales_histories/{id}" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
sales_history
object Yes The sale
id
integer Yes Sale id
ordered_at
datetime No When the sale was placed, in UTC
ordered_at_local
datetime No When the sale was placed, in the venue's timezone
sale_type
string No Either sale or refund
total
integer No Sale total in cents
user_id
integer No Id of the employee who rang the sale
is_medical
boolean No Enterprise only. Whether this was a medical sale
order_source
string No Enterprise only. Channel the order came from
status
string No Enterprise only. Sale status
terminal_id
integer No Enterprise only. Terminal the sale was rung on
terminal_till_id
integer No Enterprise only. Till the sale was rung against
local_order_id
integer No Enterprise only. Order number local to the venue
incoming_order_id
integer No Enterprise only. Incoming order this sale fulfilled, when it came from one
customer_id
integer No Enterprise only. Customer id
sub_total
integer No Enterprise only. Subtotal in cents, before discount and tax
discount
integer No Enterprise only. Order level discount in cents
tax
integer No Enterprise only. Tax in cents
cost
integer No Enterprise only. Cost of goods in cents
sales_tenders
array (object) No Enterprise only. How the sale was paid for
sales_tender_id
integer Yes Tender id
payment_method_name
string No Payment method used
subtotal
integer No Subtotal covered by this tender, in cents
tax
integer No Tax covered by this tender, in cents
total
integer No Total value of this tender, in cents
items
array (object) Yes Line items
item_id
integer Yes Line item id
sales_history_id
integer No Id of the sale this line belongs to
product_id
integer No Product id
product_name
string No Product name
inventory_id
integer No Inventory SKU id, resolved through the lot. Null when the line has no lot
total
integer No Line total in cents
quantity
string No Enterprise only. Quantity sold
weight
string No Enterprise only. Quantity per unit
lot_id
integer No Enterprise only. Manifest item (lot) id
lot_number
string No Enterprise only. Lot number
sku
string No Enterprise only. Lot barcode
is_marijuana
boolean No Enterprise only. Whether the item is cannabis
unit_weight
string No Enterprise only. Weight of one unit, from the lot
unit_of_weight
string No Enterprise only. Unit the weight is expressed in
weight_in_grams
string No Enterprise only. Unit weight converted to grams
cost
integer No Enterprise only. Cost of goods in cents
sub_total
integer No Enterprise only. Line price in cents before discount and tax
tax
integer No Enterprise only. Line tax in cents
discount
integer No Enterprise only. Line discount in cents
category
string No Enterprise only. Product type name
brand
string No Enterprise only. Product brand name
family_name
string No Enterprise only. Product family name
tier_name
string No Enterprise only. Pricing tier the line was sold at
discount_list
array (object) No Enterprise only. Discounts applied to this line
coupon_id
integer No Discount id, matching the coupons endpoint. Null if the discount has since been deleted
coupon_name
string No Discount name as recorded at the time of sale
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Suppliers

1 endpoints
GET /api/v3/venue/suppliers

Get the venue's suppliers

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return suppliers updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return suppliers updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[used_eq] boolean query No When true, only return suppliers that have a manifest at this venue
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/suppliers" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
suppliers
array (object) Yes Suppliers
id
integer Yes Supplier id. Discounts scoped to a supplier match on this
merchant_id
integer No Merchant id
vendor_id
integer No Vendor id, when the supplier is linked to a connected vendor
core_supplier_id
integer No Shared catalog supplier id
name
string No Supplier name
license_number
string No License number
certificate_number
string No Certificate number
telephone_number
string No Telephone number
email
string No Contact email
inv_notify_emails
string No Comma separated emails notified about inventory levels
address
string No Street address
city
string No City
state
string No State
zipcode
string No ZIP code
country
string No Country
notes
string No Free-text notes
color
string No Display colour
deactivated
boolean No Whether the supplier is deactivated
is_default
boolean No Whether this is the venue's default supplier
excise_tax
boolean No Whether excise tax applies
manifest_freq_in_days
integer No Expected days between manifests
lead_time
integer No Order lead time in days
velocity_days
integer No Window in days used for velocity calculations
manifests_count
integer No Number of manifests from this supplier
last_adj_levels
datetime No When inventory levels were last adjusted
notification_day
string No Day of week for inventory notifications
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 104,
  "current_page": 1,
  "total_pages": 104,
  "per_page": 1,
  "suppliers": [
    {
      "id": 123456,
      "merchant_id": 1111,
      "name": "POSaBIT Farms",
      "license_number": "12345",
      "telephone_number": "5551234567",
      "email": "",
      "address": "123 Test Ln",
      "city": "Seattle",
      "state": "WA",
      "zipcode": "12345",
      "country": "US",
      "notes": "",
      "created_at": "2022-02-14T04:08:30.000Z",
      "updated_at": "2022-03-31T18:56:49.000Z",
      "deactivated": false,
      "manifest_freq_in_days": 13,
      "lead_time": 2,
      "velocity_days": 30,
      "manifests_count": 4,
      "last_adj_levels": null
    }
  ]
}

Terminal Tills

1 endpoints
GET /api/v3/venue/terminal_tills

Get all terminal tills for a venue

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return terminal tills updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return terminal tills updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[terminal_id_eq] integer query No Only return tills for this terminal id
q[aasm_state_eq] string query No Only return tills in this state: open, reopened, pending, discrepancy, closed, reconciled. Also accepted as q[state_eq]
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/terminal_tills" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
terminal_tills
array (object) Yes Terminal tills
id
integer Yes Till id
terminal_id
integer No Terminal the till belongs to
till_ref
string No Till reference
state
string No One of: open, reopened, pending, discrepancy, closed, reconciled
start_time
datetime No When the till was opened
end_time
datetime No When the till was closed
start_amount
integer No Cash in the drawer at open
end_amount
integer No Cash counted at close
left_in_drawer
integer No Cash left in the drawer after close
notes
string No Free-text notes
opened_by
string No Who opened the till. Requires employee_data_access on the venue token
closed_by
string No Who closed the till. Requires employee_data_access on the venue token
adjustments
array (object) Yes Paid in and paid out movements against this till
id
integer Yes Adjustment id
adjustment_type
string No Paid In when the amount is positive, Paid Out when negative
amount
integer No Signed amount in cents
reason
string No Reason given
adjusted_by
string No Full name of the employee who made the adjustment
adjusted_at
datetime No When the adjustment was made
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 1408,
  "current_page": 1,
  "total_pages": 1408,
  "per_page": 1,
  "terminal_tills": [
    {
      "id": 1673,
      "terminal_id": 8216,
      "state": "pending",
      "till_ref": "326411571689226811",
      "start_time": "2019-10-21T20:20:26.000Z",
      "end_time": "2019-10-21T22:11:54.000Z",
      "start_amount": 20000,
      "end_amount": 0,
      "left_in_drawer": 0,
      "notes": "",
      "opened_by": "Andy Sweet",
      "closed_by": "Andy Sweet",
      "created_at": "2019-10-21T20:20:27.000Z",
      "updated_at": "2019-10-21T22:11:55.000Z",
      "adjustments": []
    }
  ]
}

Users

1 endpoints
GET /api/v3/venue/users

Get all users for a venue

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return employees updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return employees updated before this time, e.g. q[updated_at_lt]='2019-07-01'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/users" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
users
array (object) Yes Employees
id
integer Yes Employee Id
first_name
string No First Name (requires employee_data_access)
last_name
string No Last Name (requires employee_data_access)
email
string No Email (requires employee_data_access)
perm_level
string No Permission level name
access_level
string No Access level name for this venue
created_at
datetime No Created At
updated_at
datetime No Updated At

Response Example

{
  "total_records": 10,
  "current_page": 1,
  "total_pages": 10,
  "per_page": 1,
  "users": [
    {
      "id": 12926,
      "first_name": "Budtender 2",
      "last_name": "Budtender 2",
      "perm_level": "none",
      "access_level": "cashier",
      "email": "budtender2@posabit.com",
      "created_at": "2019-11-08T00:54:36.000Z",
      "updated_at": "2021-04-19T21:25:19.000Z"
    }
  ]
}

Venue Rooms

1 endpoints
GET /api/v3/venue/venue_rooms

Get the venue's rooms

Parameters

Name Type In Required Description
page integer query No Page Number
per_page integer query No Results per page (default 1000)
q[updated_at_gt] datestring query No Only return venue rooms updated after this time, e.g. q[updated_at_gt]='2019-07-01'
q[updated_at_lt] datestring query No Only return venue rooms updated before this time, e.g. q[updated_at_lt]='2019-07-01'
q[s] string query No Sort order, e.g. q[s]='updated_at desc'

Example

curl -X GET "https://app.posabit.com/api/v3/venue/venue_rooms" \
  -H "Authorization: Basic BASE64(INTEGRATOR_TOKEN:VENUE_TOKEN)" \
  -H "Accept: application/json"

Responses

Status Description
200 Success
401 Unauthorized

Response Fields

Field Type Required Description
total_records
integer No Total number of matching records
current_page
integer No Current page number
total_pages
integer No Total number of pages
per_page
integer No Results per page
venue_rooms
array (object) Yes Venue rooms
id
integer Yes Room id. Discounts scoped to a room match on this
name
string No Room name
description
string No Room description
color
string No Display colour
pos_visible
boolean No Whether the room is selectable in the POS
ecommerce_visible
boolean No Whether inventory in this room is published to e-commerce
created_at
datetime No Created timestamp
updated_at
datetime No Updated timestamp

Response Example

{
  "total_records": 11,
  "current_page": 1,
  "total_pages": 4,
  "per_page": 3,
  "venue_rooms": [
    {
      "id": 14,
      "name": "Drawer #1",
      "pos_visible": true,
      "description": "",
      "color": "#00ADEE",
      "created_at": "2018-08-13T20:55:54.000Z",
      "updated_at": "2024-06-24T20:52:17.000Z",
      "ecommerce_visible": true
    },
    {
      "id": 15,
      "name": "Drawer #2",
      "pos_visible": true,
      "description": "",
      "color": "#ffd966",
      "created_at": "2018-08-13T20:56:08.000Z",
      "updated_at": "2022-04-18T20:31:22.000Z",
      "ecommerce_visible": true
    },
    {
      "id": 16,
      "name": "Drawer #3",
      "pos_visible": true,
      "description": "",
      "color": "#f9cb9c",
      "created_at": "2018-08-13T21:01:17.000Z",
      "updated_at": "2022-04-18T20:31:22.000Z",
      "ecommerce_visible": true
    }
  ]
}