# Create multiple businesses

Create multiple business accounts from a JSON array in the request body.

Endpoint: POST /businesses/bulk
Version: 2.0.53
Security: authJWT

## Request fields (application/json):

  - `businesses` (array, required)
    The list of businesses to create

  - `businesses.email` (string)
    The email of the business, this is unique and will be used to identify the business.

  - `businesses.businessLegalName` (string)
    The legal name of the business, this is the name that will be used for legal purposes.

  - `businesses.registrationNumber` (string)
    The business registration number (e.g., company registration, VAT number, EIN)

  - `businesses.displayName` (string)
    The display name of the business, this is the name that will be shown to the public.

  - `businesses.description` (string)
    The description of the business, this is the description that will be shown to the public.

  - `businesses.shortDescription` (string)
    The short description of the business, this is the description that will be shown to the public.

  - `businesses.websiteUrl` (string)
    The website of the business, this is the website that will be shown to the public.

  - `businesses.imageUrl` (string)
    The image of the business, this is the image that will be shown to the public.

  - `businesses.logoUrl` (string)
    The logo of the business (smaller icon/avatar), this is the logo that will be shown to the public.

  - `businesses.streetAddress` (string)
    The address of the business, this is the address that will be shown to the public.

  - `businesses.phoneNumber` (string)
    The phone number of the business.

  - `businesses.neighborhood` (string)
    Neighborhood/area name (e.g., "West Bay", "Pearl Qatar", "Lusail") - auto-populated from geocoding

  - `businesses.district` (string)
    District/administrative area - auto-populated from geocoding

  - `businesses.city` (string)
    The city of the business. **Geocoding behavior:** Changing address fields will auto-update coordinates. To adjust pin without changing address, set BOTH coords AND address fields in the same request.

  - `businesses.postalCode` (string)
    The postal code of the business, this is the postal code that will be shown to the public.

  - `businesses.country` (string)
    The country of the business (auto-populated from geocoding if coordinates provided)

  - `businesses.countryCode` (string)
    ISO 3166-1 alpha-2 country code (e.g., QA, US, AE) - auto-populated from geocoding
    Example: QA

  - `businesses.coordsLatitude` (number)
    The latitude of the business. **Geocoding behavior:** Changing coords will auto-update address fields. To adjust pin position without changing address (e.g., parking entrance), set BOTH coordinates AND address fields in the same request.

  - `businesses.coordsLongitude` (number)
    The longitude of the business, this is the longitude that will be shown to the public

  - `businesses.businessTypeId` (number)
    The business type of the business, this is the business type that will be shown to the public.

  - `businesses.tags` (array)
    Tags for categorization and filtering
    Example: ["partner","food-beverage","downtown"]

  - `businesses.customData` (object)
    Structured custom field data. Keys are custom field definition keys; values are validated against CustomFieldDefinition rules.
    Example: {"placeID":"ChIJN1t_tDeuEmsRUsoyG83frY4","currentOpeningHours":{"open_now":true}}

## Response 200 fields (application/json):

  - `id` (string, required)
    The id of the business, this is unique and will be used to identify the business.

  - `email` (string, required)
    The email of the business, this is unique and will be used to identify the business.

  - `accountAddress` (string, required)
    The address of the business, this is the address that will be shown to the public.

  - `currentSigningAccountId` (string, required)
    Current active signing account ID for external wallet operations

  - `wallets` (array, required)
    Business-owned counterfactual smart contract wallets that can receive tokens

  - `wallets.id` (string, required)
    Unique identifier for the internal wallet

  - `wallets.ownerType` (string, required)
    Owner type for polymorphic ownership
    Enum: "user", "business", "tenant", "system", "external"

  - `wallets.ownerId` (string, required)
    Owner ID for polymorphic ownership
    Example: user_123

  - `wallets.walletManagementType` (string, required)
    Type of internal wallet
    Enum: "custodial", "non-custodial"

  - `wallets.address` (string, required)
    CREATE2 generated address that can receive tokens

  - `wallets.chainId` (number, required)
    Blockchain network chain identifier

  - `wallets.status` (string, required)
    Current status of the wallet
    Enum: "pending", "active", "suspended", "archived"

  - `wallets.ownerSigningAccountId` (string)
    ID of signing account that owns this internal wallet

  - `wallets.tags` (array, required)
    Tags associated with the wallet for categorization

  - `wallets.createdAt` (string, required)
    Timestamp when the wallet was created

  - `wallets.updatedAt` (string, required)
    Timestamp when the wallet was last updated

  - `businessLegalName` (string, required)
    The legal name of the business, this is the name that will be used for legal purposes.

  - `registrationNumber` (string, required)
    The business registration number (e.g., company registration, VAT number, EIN)

  - `displayName` (string, required)
    The display name of the business, this is the name that will be shown to the public.

  - `description` (string, required)
    The description of the business, this is the description that will be shown to the public.

  - `shortDescription` (string, required)
    The short description of the business, this is the description that will be shown to the public.

  - `websiteUrl` (string, required)
    The website of the business, this is the website that will be shown to the public.

  - `imageUrl` (string, required)
    The image of the business, this is the image that will be shown to the public.

  - `logoUrl` (string, required)
    Logo URL for the business

  - `streetAddress` (string, required)
    The address of the business, this is the address that will be shown to the public.

  - `phoneNumber` (string, required)
    The phone number of the business.

  - `neighborhood` (string, required)
    Neighborhood/area name (e.g., "West Bay", "Pearl Qatar", "Lusail") - auto-populated from geocoding

  - `district` (string, required)
    District/administrative area - auto-populated from geocoding

  - `city` (string, required)
    The city of the business, this is the city that will be shown to the public.

  - `postalCode` (string, required)
    The postal code of the business, this is the postal code that will be shown to the public.

  - `country` (string, required)
    The country of the business (auto-populated from geocoding if coordinates provided)

  - `countryCode` (string, required)
    ISO 3166-1 alpha-2 country code (e.g., QA, US, AE) - auto-populated from geocoding
    Example: QA

  - `coordsLatitude` (number, required)
    The latitude of the business, this is the latitude that will be shown to the public.

  - `coordsLongitude` (number, required)
    The longitude of the business, this is the longitude that will be shown to the public.

  - `businessType` (object, required)
    The business type of the business, this is the business type that will be shown to the public.

  - `businessType.id` (string)
    Business type id

  - `businessType.name` (string, required)
    Business type name

  - `businessType.description` (string, required)
    Business type description

  - `businessType.code` (string, required)
    Business type code

  - `businessType.iconUrl` (string, required)
    Business type icon url

  - `isActive` (boolean, required)
    The status of the business, this is the status that will be shown to the public.

  - `approval` (object, required)
    Approval metadata for this business.

  - `approval.status` (string, required)
    Approval state: pending_approval = awaiting admin review, approved = active, rejected = denied.
    Enum: "pending_approval", "approved", "rejected"

  - `approval.approvedAt` (string)
    Timestamp when the entity was approved or rejected by an admin.

  - `approval.approvedBy` (string)
    Admin user ID who approved or rejected this entity.

  - `approval.rejectionReason` (string)
    Reason provided when the entity was rejected.

  - `canMintToken` (boolean, required)
    The ability to mint token for the business, this is the ability that will be shown to the public.

  - `canChargeToken` (boolean, required)
    The ability to charge token for the business, this is the ability that will be shown to the public.

  - `canManageUsers` (boolean, required)
    The ability to manage users for the business, this is the ability that will be shown to the public.

  - `canReceiveDonation` (boolean, required)
    The ability to receive donation for the business, this is the ability that will be shown to the public.

  - `tags` (array, required)
    Tags for categorization and filtering

  - `customData` (object, required)
    Custom business data including Google Places information (placeID, currentOpeningHours)
    Example: {"placeID":"ChIJN1t_tDeuEmsRUsoyG83frY4","currentOpeningHours":{"open_now":true,"weekday_text":["Monday: 9:00 AM – 5:00 PM","Tuesday: 9:00 AM – 5:00 PM"]}}

## Response 201 fields (application/json):

  - `id` (string, required)
    The id of the business, this is unique and will be used to identify the business.

  - `email` (string, required)
    The email of the business, this is unique and will be used to identify the business.

  - `accountAddress` (string, required)
    The address of the business, this is the address that will be shown to the public.

  - `currentSigningAccountId` (string, required)
    Current active signing account ID for external wallet operations

  - `wallets` (array, required)
    Business-owned counterfactual smart contract wallets that can receive tokens

  - `wallets.id` (string, required)
    Unique identifier for the internal wallet

  - `wallets.ownerType` (string, required)
    Owner type for polymorphic ownership
    Enum: "user", "business", "tenant", "system", "external"

  - `wallets.ownerId` (string, required)
    Owner ID for polymorphic ownership
    Example: user_123

  - `wallets.walletManagementType` (string, required)
    Type of internal wallet
    Enum: "custodial", "non-custodial"

  - `wallets.address` (string, required)
    CREATE2 generated address that can receive tokens

  - `wallets.chainId` (number, required)
    Blockchain network chain identifier

  - `wallets.status` (string, required)
    Current status of the wallet
    Enum: "pending", "active", "suspended", "archived"

  - `wallets.ownerSigningAccountId` (string)
    ID of signing account that owns this internal wallet

  - `wallets.tags` (array, required)
    Tags associated with the wallet for categorization

  - `wallets.createdAt` (string, required)
    Timestamp when the wallet was created

  - `wallets.updatedAt` (string, required)
    Timestamp when the wallet was last updated

  - `businessLegalName` (string, required)
    The legal name of the business, this is the name that will be used for legal purposes.

  - `registrationNumber` (string, required)
    The business registration number (e.g., company registration, VAT number, EIN)

  - `displayName` (string, required)
    The display name of the business, this is the name that will be shown to the public.

  - `description` (string, required)
    The description of the business, this is the description that will be shown to the public.

  - `shortDescription` (string, required)
    The short description of the business, this is the description that will be shown to the public.

  - `websiteUrl` (string, required)
    The website of the business, this is the website that will be shown to the public.

  - `imageUrl` (string, required)
    The image of the business, this is the image that will be shown to the public.

  - `logoUrl` (string, required)
    Logo URL for the business

  - `streetAddress` (string, required)
    The address of the business, this is the address that will be shown to the public.

  - `phoneNumber` (string, required)
    The phone number of the business.

  - `neighborhood` (string, required)
    Neighborhood/area name (e.g., "West Bay", "Pearl Qatar", "Lusail") - auto-populated from geocoding

  - `district` (string, required)
    District/administrative area - auto-populated from geocoding

  - `city` (string, required)
    The city of the business, this is the city that will be shown to the public.

  - `postalCode` (string, required)
    The postal code of the business, this is the postal code that will be shown to the public.

  - `country` (string, required)
    The country of the business (auto-populated from geocoding if coordinates provided)

  - `countryCode` (string, required)
    ISO 3166-1 alpha-2 country code (e.g., QA, US, AE) - auto-populated from geocoding
    Example: QA

  - `coordsLatitude` (number, required)
    The latitude of the business, this is the latitude that will be shown to the public.

  - `coordsLongitude` (number, required)
    The longitude of the business, this is the longitude that will be shown to the public.

  - `businessType` (object, required)
    The business type of the business, this is the business type that will be shown to the public.

  - `businessType.id` (string)
    Business type id

  - `businessType.name` (string, required)
    Business type name

  - `businessType.description` (string, required)
    Business type description

  - `businessType.code` (string, required)
    Business type code

  - `businessType.iconUrl` (string, required)
    Business type icon url

  - `isActive` (boolean, required)
    The status of the business, this is the status that will be shown to the public.

  - `approval` (object, required)
    Approval metadata for this business.

  - `approval.status` (string, required)
    Approval state: pending_approval = awaiting admin review, approved = active, rejected = denied.
    Enum: "pending_approval", "approved", "rejected"

  - `approval.approvedAt` (string)
    Timestamp when the entity was approved or rejected by an admin.

  - `approval.approvedBy` (string)
    Admin user ID who approved or rejected this entity.

  - `approval.rejectionReason` (string)
    Reason provided when the entity was rejected.

  - `canMintToken` (boolean, required)
    The ability to mint token for the business, this is the ability that will be shown to the public.

  - `canChargeToken` (boolean, required)
    The ability to charge token for the business, this is the ability that will be shown to the public.

  - `canManageUsers` (boolean, required)
    The ability to manage users for the business, this is the ability that will be shown to the public.

  - `canReceiveDonation` (boolean, required)
    The ability to receive donation for the business, this is the ability that will be shown to the public.

  - `tags` (array, required)
    Tags for categorization and filtering

  - `customData` (object, required)
    Custom business data including Google Places information (placeID, currentOpeningHours)
    Example: {"placeID":"ChIJN1t_tDeuEmsRUsoyG83frY4","currentOpeningHours":{"open_now":true,"weekday_text":["Monday: 9:00 AM – 5:00 PM","Tuesday: 9:00 AM – 5:00 PM"]}}

