Skip to main content
Manage teams, configure settings, and control member access. The Teams API handles team creation, configuration, member management, and system-wide settings for invoicing and payments.

Overview

Teams are organizational units that contain settings, members, and resources. Each team has its own configuration for invoicing, taxes, series, and automation preferences.

Key Features

  • Team Management - Create and configure teams with initial member setup
  • Member Administration - Add/remove team members, bulk import from master team
  • Settings Configuration - Invoice, tax, and email settings
  • SAT Connection - Upload CSD certificates for CFDI invoicing
  • Series Management - Configure invoice series and folios
  • Integration Support - Connect with external services
  • gigstack Connect - Enable multi-team access

Endpoints

List Teams

Retrieve a paginated list of teams. Query Parameters:
  • limit (integer, 1-100) - Number of results per page (default: 10)
  • next (string) - Pagination cursor for next page
  • team (string) - gigstack Connect: Target team ID
Example Request:
Example Response:

Create Team

Create a new team with initial configuration. This operation requires a live key; it rejects test keys. Creating an issuing team does not configure its certificates or establish that it can issue fiscal documents.
Requires the multipleIssuerAccounts feature on your plan. Without it this endpoint returns 403, as does DELETE /teams/{id}.
Request Body:
Body Parameters:
  • legal_name (string, optional) - Legal name of the team/company
  • tax_id (string, optional) - Tax identification number (RFC)
  • tax_system (string, optional) - SAT tax system code (regimen fiscal)
  • brand (object, optional) - Branding configuration
    • alias (string, required within object) - Team display name
    • primary_color (string, optional) - Primary brand color
    • secondary_color (string, optional) - Secondary brand color
    • logo (string, optional) - Logo URL
  • support_email (string, optional) - Support contact email
  • support_phone (string, optional) - Support contact phone
  • generate_onboarding_url (boolean, optional) - When true, includes a secure onboarding URL in the response
  • address (object, optional) - Team address information
    • country (string, required within object) - Country code (e.g., “MEX”)
    • street (string, optional) - Street address
    • exterior (string, optional) - Exterior number
    • interior (string, optional) - Interior number
    • neighborhood (string, optional) - Neighborhood/colony
    • municipality (string, optional) - Municipality
    • city (string, optional) - City
    • state (string, optional) - State/province
    • zip (string, optional) - Postal code
  • metadata (object, optional) - Arbitrary key-value pairs to store with the team
  • add_members (array, optional) - Array of members to add to the team on creation
    • id (string, required) - User ID to add as a team member
    • role (string, optional, defaults to “viewer”) - Member role. Options: “admin”, “editor”, “viewer”
  • add_master_team_members (boolean, optional) - When true, copies all members from the master team to the newly created team with their existing permissions. Only applicable for gigstack Connect accounts
Example Request (basic team creation):
Example Request (with members):
Example Request (with master team members):
Example Response (201 Created):
Note: onboarding_url is only populated when generate_onboarding_url: true is sent in the request. Otherwise it is an empty string.

Get Team

Retrieve a specific team by ID. Example Request:
Example Response:

Team Response Structure

Core Fields

Address Object

Brand Object

Settings Object

The settings object contains comprehensive configuration for team operations:

Email Settings

Periodicity Object

Default Series Object

Each series object contains:
  • serie (string): Series identifier

SAT Object

Members Array

Each member object contains:

Integrations Object

The integrations object contains status for all available integrations. Each integration has: Available Integrations:
  • Payment providers: stripe, mercadopago, clip, whmcs, paypal, openpay, conekta, bank, shopify
  • Data integrations: zapier, airtable, google_sheets
  • Messaging: hilos

Update Team

Update team information. Uses the same schema as Create Team but all fields are optional for updates. Request Body (same as Create Team, all fields optional):
Example Request:

Update Team Settings

Update comprehensive team settings including defaults, taxes, and automation.

⚠️ Here periodicity is two_months — plural

PUT /teams/{id}/settings accepts exactly:
sent as a plain string, not an object. Anything else fails validation with 400. The receipts endpoints use two_month — singular (POST /v2/receipts, field periodicity). The two endpoints genuinely disagree and neither accepts the other’s spelling. This is the current state of the API, deliberately left alone because normalizing it would break live integrations. Never copy a periodicity value between the two — look it up. See Receipts → Periodicity Options. Note the asymmetry between write and read: you send periodicity as a string here, but GET /teams/{id} returns whatever is stored under the team’s defaults.periodicity, which for teams configured through the dashboard is a { label, value } object. Read periodicity.value defensively.
Request Body:
Example Request:

Get Team Integrations

🚧 Not yet available. The route is registered and reachable, but the handler is still a stub. Every call returns:
Do not build against it. Use GET /teams/{id} instead — the team response already carries the Integrations Object with a completed flag per provider, which is the information this endpoint is eventually meant to serve. (Historical note: this path used to be unreachable altogether — it was registered after GET /teams/{id}, so Express matched integrations as a team id and you got a 404 for a team that does not exist. The ordering is fixed; only the handler remains.)

Add Team Member

Add a member to a team with a specified role. Request Body:
Body Parameters:
  • id (string, required) - User ID of the member to add
  • role (string, optional) - Member role. If not specified, defaults to “viewer”
    • Options: "admin", "editor", "viewer"
    • Default: "viewer"
The user must belong to the caller’s billing account. For user-scoped credentials, the caller cannot grant a role above their own. An API key or OAuth token represents the team; the endpoint still checks team and billing-account access. Use id, not user_id, in this body. Example Request (with specified role):
Example Request (default role - viewer):

Remove Team Member

Remove a member from a team. Request Body:
Body Parameters:
  • id (string, required) - User ID of the member to remove
The user must belong to the caller’s billing account. For user-scoped credentials, the caller cannot grant a role above their own. An API key or OAuth token represents the team; the endpoint still checks team and billing-account access. Use id, not user_id, in this body. Example Request:

Get Team Series

Get invoice series configuration for a team. Example Request:

Create Team Series

Create a new invoice series for a team. Request Body:
Body Parameters:
  • series (string, required) - Series identifier (alphanumeric, max 10 characters)
  • live (number, optional) - Initial folio number for live mode (default: 0)
  • test (number, optional) - Initial folio number for test mode (default: 0)
Example Request:

Update Team Series

Update an existing team series. Request Body:
Body Parameters:
  • live (number, optional) - Update folio number for live mode
  • test (number, optional) - Update folio number for test mode
Note: At least one of live or test must be provided. Example Request:

Get Team Onboarding URL

Generate a secure onboarding URL for team setup and configuration. This endpoint is only available for gigstack Connect accounts (master teams). Important: This endpoint is only available for gigstack Connect accounts. Use Cases:
  • Generate onboarding links for new teams
  • Allow secure team configuration setup
  • Enable embedded team management flows
Parameters:
  • id (path, required) - Team ID to generate onboarding URL for
Example Request:
Example Response:
Error Responses:
  • 401 Unauthorized - Only available for master teams
  • 404 Not Found - Team not found
The generated URL provides secure access to the team onboarding interface with a temporary session and secure code.

Upload SAT CSD Certificates

Upload SAT CSD (Certificado de Sello Digital) certificates to establish SAT connection for CFDI invoicing. This endpoint accepts multipart form data with the certificate files and password. Required Files:
  • cert: Certificate file (.cer) - The public certificate
  • key: Private key file (.key) - The encrypted private key
  • keyPass: Password for the private key
First-Time Connection: When this is the first SAT connection for a team (no previous SAT setup), the system will automatically initialize default invoice series (G, NC, P, T). gigstack Connect: Upload SAT certificates for other teams using the team query parameter. Parameters:
  • id (path, required) - Team ID to upload SAT certificates for
  • team (query, optional) - Target team ID for gigstack Connect
Request Body (multipart/form-data):
  • cert (binary, required) - Certificate file (.cer)
  • key (binary, required) - Private key file (.key)
  • keyPass (string, required) - Password for the private key
Example Request:
Example Response:
Response Fields:
  • isValid (boolean) - Whether the certificate is valid
  • details.serialNumber (string) - Certificate serial number
  • details.validTo (number) - Unix timestamp in milliseconds when certificate expires
Error Responses: 400 - Bad Request:
401 - Unauthorized:
403 - Forbidden:

Sign Manifest Document

Sign a manifest document (Carta Manifiesto) using the FIEL (Firma Electronica Avanzada) for SAT compliance. This endpoint is used to sign the authorization manifest that authorizes the PAC (Proveedor Autorizado de Certificacion) to issue CFDI invoices on behalf of your team’s RFC. The manifest must be signed to grant the PAC permission to stamp and process invoices under your team’s tax identification. Once signed, the manifest is stored in your team’s SAT configuration and includes both XML and PDF files. Important Requirements:
  • Your SAT configuration must be completed before signing the manifest
  • The FIEL certificate must be valid and issued by SAT
  • The certificate must match your team’s RFC
  • The team ID is specified in the URL path parameter
Supported Formats: This endpoint accepts two content types:
  1. JSON format (application/json): Send Base64 encoded certificate files
  2. Form Data format (multipart/form-data): Upload certificate files directly
Parameters:
  • id (path, required) - Team ID to sign manifest for
Request Body (JSON):
Request Body (Form Data):
  • key (file) - FIEL .key file upload
  • cert (file) - FIEL .cer file upload
  • password (string) - FIEL password (private key password)
Example Request (JSON):
Example Request (Form Data):
Example Response:
Response Fields:
  • xmlBase64 (string) - Base64 encoded signed manifest XML
  • pdfBase64 (string) - Base64 encoded manifest PDF
  • fechaFirma (string) - Signature date and time in ISO 8601 format
  • mensajeResultado (string) - Result message from signing service
Error Responses:

Team Settings Structure

Core Settings

Tax Configuration

Email Settings

Series Configuration

Configuration Examples

Basic Team Setup

Professional Services Configuration

E-commerce Configuration

International Business Configuration

Best Practices

  1. Configure defaults early - Set up team settings before creating invoices
  2. Use appropriate tax settings - Configure taxes based on business type
  3. Set up email BCCs - Ensure accounting gets copies
  4. Manage series carefully - Don’t duplicate series across invoice types
  5. Test in staging - Verify settings with test folios first
  6. Enable automations wisely - Understand impact on workflows
  7. Keep member roles updated - Regular access reviews

Member Roles

Team Workflows

Initial Setup

Member Management

Error Handling

Team Not Found

Invalid Tax Configuration

Member Already Exists

Invalid Series

Permission Denied


For additional assistance, contact support@gigstack.io