Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
Ring
AWS
Documentation
Support
Contact Us
My Cases
Docs
Resources
Ecommerce Plug-ins
Publish
Connect

Process Auth

POST /auth/v2/processAuth

Once startAuth returns true and your device has completed its authentication flow, call processAuth to deliver your authentication decision to the JWO gate. This API must only be called after full authentication on your side is complete and the shopper has been identified (or denied).

Request Body Input

Field Required Type Description
authEventId Yes String The authEventId returned by the prior startAuth call.
deviceId Yes String Your authentication device identifier.
storeId Yes String Your store identifier, provided by Amazon during store onboarding.
personId Conditional String (nullable) Your system's identifier for the authenticated person. Nullable when authResult is DENIED.
personType Yes PERSON_TYPE SHOPPER (a person whose shopping activity will be tracked and a cart will be generated) or NON_SHOPPER (a person like a store associate for whom no cart is generated).
timestamp Yes Long Unix timestamp in milliseconds.
authResult Yes AUTH_RESULT Your authentication decision: ACCEPTED, DENIED, or PROCESSED.
deniedReason Conditional DENIED_REASON (nullable) Reason why customer was denied. Used for reporting as well as potential customer CX changes. Nullable if the customer was accepted, or if there is no specific reason.

AUTH_RESULT

Value Gate Behavior Use Case
ACCEPTED Success visual/audio cues on the gate, gate opens. Standard successful authentication.
DENIED Failure visual/audio cues on the gate. Gate does not open. Authentication failed or was rejected.
PROCESSED Amazon begins tracking the shopper's shopping journey. Gate is not opened, no cues are played. Reserved for future use; there is currently no supported use case. Use ACCEPTED or DENIED.

DENIED_REASON

Value Description
BAD_DEBT Shopper has outstanding unpaid balance, and requires remediation.
ACCOUNT_NOT_FOUND Shopper is not found/recognized in your systems.

Response Body Output

Field Type Description
authProcessed Boolean Whether your auth decision was successfully applied.
reason String (nullable) Set only when authProcessed is false. Values: AUTH_EVENT_MISMATCH, LOCK_EXPIRED, LANE_UNAVAILABLE, STALE_REQUEST. See Errors.
timestamp Long Server-side timestamp.
processAuthMetadata Array Reserved for future use.

Response Example (Success)

{
  "authProcessed": true,
  "reason": null,
  "timestamp": 1717545602200,
  "processAuthMetadata": []
}
Important: After a successful processAuth with authResult ACCEPTED, wait 3 seconds before accepting the next scan to prevent double-entry for the same person.

Errors

When processAuth fails, authProcessed is false and reason is set to one of the following values:

Reason Status Meaning Action
AUTH_EVENT_MISMATCH 409 The authEventId doesn't match the lane's active auth. Start over from startAuth. Investigate a possible bug in how you pass authEventId.
LOCK_EXPIRED 409 The gate reservation (authTimeout) elapsed before processAuth was received. Show "Timed out." and start over from startAuth. This usually indicates a bug: processAuth should never be called after authTimeout has elapsed. Increase authTimeout or update your logic to call processAuth earlier (e.g., call processAuth with DENIED when your auth budget runs out).
LANE_UNAVAILABLE 503 The gate went offline or cannot be reached. Show "Gate unavailable." Do NOT retry.
STALE_REQUEST 400 The timestamp is too far from Amazon's server time. Sync your device clock (e.g., via NTP) and start over from startAuth.