Overview
The Organization Setup endpoint is your one-stop shop for provisioning customer data in Sticker. Call it when a customer enables procurement in your platform—it creates the organization, user profile, shipping locations, and even sets up billing with Stripe.When to Call This Endpoint
What Gets Created
When you call the setup endpoint, Sticker automatically:- Creates a Stripe Customer - For billing and payment method storage
- Creates the Organization - Linked to your
internalOrgId - Creates Shipping Locations - For order delivery
- Creates an Auth User - For secure authentication
- Creates a User Profile - Linked to the org and auth user
API Endpoint
https://api.usesticker.com
Authentication
Include your Partner API Key in the Authorization header:Request Format
Request Parameters
Required Fields
| Field | Type | Description |
|---|---|---|
internalOrgId | string | Your internal org identifier |
organizationName | string | Display name for the organization |
internalUserId | string | Your internal user identifier |
user.firstName | string | User’s first name |
user.lastName | string | User’s last name |
user.email | string | User’s email (must be valid format) |
Optional Fields
| Field | Type | Description |
|---|---|---|
user.phoneNumber | string | User’s phone number |
userAddress | object | User’s personal address |
shippingLocations | array | Organization’s shipping locations |
billingAddress | object | Organization’s billing address |
organizationEmail | string | Organization’s contact email |
organizationPhone | string | Organization’s phone number |
Address Object
| Field | Type | Required | Description |
|---|---|---|---|
line1 | string | Yes | Street address |
line2 | string | No | Apt/Suite/Unit |
city | string | Yes | City |
province | string | Yes | State (e.g., “CA” or “California”) |
postalCode | string | Yes | ZIP code |
country | string | No | Defaults to “United States” |
State Normalization: The API accepts both abbreviations (“CA”) and full names (“California”). Internally, all values are stored as full state names.
Shipping Location Object
| Field | Type | Required | Description |
|---|---|---|---|
internalShippingLocationId | string | Yes | Your internal location ID |
name | string | Yes | Location name (e.g., “Main Office”) |
nickname | string | No | Short nickname |
address | object | Yes | Address object (see above) |
contact.name | string | No | Contact person name |
contact.phone | string | No | Contact phone |
contact.email | string | No | Contact email |
isDefault | boolean | No | Is this the default location? |
deliveryInstructions | string | No | Notes for delivery drivers |
Response Format
Success (200 OK)
Key Response Fields
| Field | Description |
|---|---|
organization.id | Sticker’s UUID for the org (store this if needed) |
organization.stripeCustomerId | Stripe customer for billing |
profile.id | User profile UUID (use in handshake if needed) |
profile.internal_user_id | Your internal user ID (echoed back) |
isNewOrganization | true if org was created, false if user was added to existing |
Adding Users to Existing Organizations
Call the same endpoint with the sameinternalOrgId but a different internalUserId:
isNewOrganization: false, and the new user will have access to the existing organization’s shipping locations and shared payment methods.
Error Handling
400 Validation Error
400 Validation Error
- Invalid email format
- Invalid state/province (must be valid US state)
- Missing required fields
401 Unauthorized
401 Unauthorized
409 User Already Exists
409 User Already Exists
profileId for handshake.Code Examples
Best Practices
Use Your Internal IDs
Use Your Internal IDs
Always use your own internal IDs for
internalOrgId, internalUserId, and internalShippingLocationId. This makes it easy to correlate Sticker data with your system.Include Shipping Locations
Include Shipping Locations
Always include at least one shipping location when creating a new organization. This ensures users can complete checkout immediately.
Handle the 409 Response
Handle the 409 Response
If you get a 409 (User Already Exists), don’t treat it as an error—the user is already set up! Just use the returned profile ID.
Store the Profile ID
Store the Profile ID
Store the returned
profile.id in your database. While you can use internal_user_id for handshake, having the profile ID is useful for debugging.
