curl --request PUT \
--url https://api.gigstack.io/v2/teams/{id}/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"keep_full_legal_name": false,
"default_description": "Professional consulting services",
"invoice_pdf_notes": "Thank you for your business",
"product_key": "80141503",
"unit_key": "E48",
"use": "G03",
"periodicity": "month",
"emails": {
"invoices_bcc": [
"admin@company.com"
],
"avoid_invoice_emails": false
},
"default_series": {
"income": {
"serie": "A",
"folio_number_live": 1001,
"folio_number_test": 1
}
}
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
keep_full_legal_name: false,
default_description: 'Professional consulting services',
invoice_pdf_notes: 'Thank you for your business',
product_key: '80141503',
unit_key: 'E48',
use: 'G03',
periodicity: 'month',
emails: {invoices_bcc: ['admin@company.com'], avoid_invoice_emails: false},
default_series: {income: {serie: 'A', folio_number_live: 1001, folio_number_test: 1}}
})
};
fetch('https://api.gigstack.io/v2/teams/{id}/settings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/teams/{id}/settings"
payload = {
"keep_full_legal_name": False,
"default_description": "Professional consulting services",
"invoice_pdf_notes": "Thank you for your business",
"product_key": "80141503",
"unit_key": "E48",
"use": "G03",
"periodicity": "month",
"emails": {
"invoices_bcc": ["admin@company.com"],
"avoid_invoice_emails": False
},
"default_series": { "income": {
"serie": "A",
"folio_number_live": 1001,
"folio_number_test": 1
} }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"message": "Team settings updated",
"data": {
"id": "team_1234567890",
"legal_name": "MI EMPRESA EJEMPLO SA DE CV",
"address": {
"street": "Av. Paseo de la Reforma",
"exterior": "222",
"neighborhood": "Juárez",
"city": "Ciudad de México",
"state": "CDMX",
"zip": "06600",
"country": "MEX"
},
"brand": {
"alias": "Mi Empresa",
"primary_color": "#1F2937",
"secondary_color": "#10B981",
"logo": null
},
"settings": {
"default_description": null,
"emails": {
"invoices_bcc": [],
"avoid_invoice_emails": false,
"avoid_test_invoice_emails": true,
"avoid_receipts_emails": false
},
"global_invoice_disabled": false,
"use": "G03",
"periodicity": {
"label": "Mes",
"value": "month"
}
},
"members": [
{
"id": "user_1234567890",
"email": "admin@ejemplo.com",
"role": "admin"
}
],
"owner": "user_1234567890",
"support_email": "soporte@ejemplo.com",
"support_phone": "+525512345678",
"tax_id": "MEE200101ABC",
"tax_system": "601",
"created_at": 1767225600000,
"sat": {
"completed": true,
"connected_at": 1767225600000,
"csd_expires_at": 1893456000000
},
"integrations": {
"stripe": {
"completed": false,
"category": null
}
},
"metadata": {},
"credit_limit": null,
"used_credits": 12,
"credit_period_start": 1767225600000,
"status": "active",
"scheduled_deletion": null
}
}Update team settings
Update team settings including defaults for invoicing, taxes, series, and email configurations.
gigstack Connect: Update settings for other teams using the team parameter.
Team Settings Configuration
This endpoint allows you to configure various team-wide defaults and behaviors:
- Invoice Settings: Default descriptions, PDF notes, product keys
- Tax Configuration: Default taxes for MXN and USD currencies
- Email Settings: BCC recipients, email preferences
- CFDI Configuration: Default series, uses, product/unit keys
- Automation: Payment complement automation for PPD invoices
curl --request PUT \
--url https://api.gigstack.io/v2/teams/{id}/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"keep_full_legal_name": false,
"default_description": "Professional consulting services",
"invoice_pdf_notes": "Thank you for your business",
"product_key": "80141503",
"unit_key": "E48",
"use": "G03",
"periodicity": "month",
"emails": {
"invoices_bcc": [
"admin@company.com"
],
"avoid_invoice_emails": false
},
"default_series": {
"income": {
"serie": "A",
"folio_number_live": 1001,
"folio_number_test": 1
}
}
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
keep_full_legal_name: false,
default_description: 'Professional consulting services',
invoice_pdf_notes: 'Thank you for your business',
product_key: '80141503',
unit_key: 'E48',
use: 'G03',
periodicity: 'month',
emails: {invoices_bcc: ['admin@company.com'], avoid_invoice_emails: false},
default_series: {income: {serie: 'A', folio_number_live: 1001, folio_number_test: 1}}
})
};
fetch('https://api.gigstack.io/v2/teams/{id}/settings', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.gigstack.io/v2/teams/{id}/settings"
payload = {
"keep_full_legal_name": False,
"default_description": "Professional consulting services",
"invoice_pdf_notes": "Thank you for your business",
"product_key": "80141503",
"unit_key": "E48",
"use": "G03",
"periodicity": "month",
"emails": {
"invoices_bcc": ["admin@company.com"],
"avoid_invoice_emails": False
},
"default_series": { "income": {
"serie": "A",
"folio_number_live": 1001,
"folio_number_test": 1
} }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text){
"message": "Team settings updated",
"data": {
"id": "team_1234567890",
"legal_name": "MI EMPRESA EJEMPLO SA DE CV",
"address": {
"street": "Av. Paseo de la Reforma",
"exterior": "222",
"neighborhood": "Juárez",
"city": "Ciudad de México",
"state": "CDMX",
"zip": "06600",
"country": "MEX"
},
"brand": {
"alias": "Mi Empresa",
"primary_color": "#1F2937",
"secondary_color": "#10B981",
"logo": null
},
"settings": {
"default_description": null,
"emails": {
"invoices_bcc": [],
"avoid_invoice_emails": false,
"avoid_test_invoice_emails": true,
"avoid_receipts_emails": false
},
"global_invoice_disabled": false,
"use": "G03",
"periodicity": {
"label": "Mes",
"value": "month"
}
},
"members": [
{
"id": "user_1234567890",
"email": "admin@ejemplo.com",
"role": "admin"
}
],
"owner": "user_1234567890",
"support_email": "soporte@ejemplo.com",
"support_phone": "+525512345678",
"tax_id": "MEE200101ABC",
"tax_system": "601",
"created_at": 1767225600000,
"sat": {
"completed": true,
"connected_at": 1767225600000,
"csd_expires_at": 1893456000000
},
"integrations": {
"stripe": {
"completed": false,
"category": null
}
},
"metadata": {},
"credit_limit": null,
"used_credits": 12,
"credit_period_start": 1767225600000,
"status": "active",
"scheduled_deletion": null
}
}Authorizations
Authentication Method: HTTP Bearer token.
The runtime requires the literal Bearer prefix — a bare token in the
Authorization header is rejected with 401 unauthorized.
Header Format: Authorization: Bearer YOUR_API_KEY
Your API key is a JWT. Live keys operate on live data (livemode: true);
test keys operate on isolated test data (livemode: false).
Get your key at: app.gigstack.pro/settings?tab=api
Errors: credential failures are answered by the authentication layer with a raw
{ "message": … } body, not the standardized envelope — 401 for a missing, malformed or
expired token, 403 for a revoked key or a plan without API access. See the Unauthorized
and AuthForbidden responses.
Path Parameters
Team ID
Query Parameters
gigstack Connect: Target team ID for multi-team access.
Requires gigstack Connect enabled on your team and shared billing account.
Also requires the multipleIssuerAccounts feature on your plan. Requests targeting a
team other than the one your API key belongs to return 403 without it.
Only API keys can use it: an OAuth access token sent with another team's id is rejected with
403 Team mismatch with OAuth token.
Optional — omit it entirely unless you are acting on another team. It deliberately
carries no example value so generated snippets do not emit ?team=undefined; when the
parameter is absent, the team is derived from your API key.
Example: ?team=team_xyz789
Body
Unknown top-level keys are rejected (400 validation_failed / unexpected_key) — body
validation runs in strict allowlist mode. team, livemode and owner are reserved
and injected by the auth middleware.
Keep full legal name in documents
false
Default description for items
"Consulting services"
Default taxes configuration for MXN invoices. Each object follows the TeamTaxDefault schema (type, rate, factor, inclusive, withholding).
Show child attributes
Show child attributes
[
{
"type": "IVA",
"rate": 0.16,
"factor": "Tasa",
"inclusive": false,
"withholding": false
}
]
Default taxes configuration for USD invoices. Each object follows the TeamTaxDefault schema (type, rate, factor, inclusive, withholding).
Show child attributes
Show child attributes
[
{
"type": "IVA",
"rate": 0.16,
"factor": "Tasa",
"inclusive": false,
"withholding": false
}
]
Show child attributes
Show child attributes
Override description for all items
"Professional services"
Disable global invoice functionality
false
CFDI complements configuration
Available CFDI uses on self-invoice portal
["G03", "S01"]
Default notes to include in invoice PDFs
"Additional notes for PDF invoices"
Default SAT product key
"80141503"
Default SAT unit key
"E48"
Default CFDI use
"G03"
Automatically create payment complement for PPD invoices
false
Withholding taxes configuration (natural persons). Each object follows the TeamTaxDefault schema (type, rate, factor, inclusive, withholding).
Show child attributes
Show child attributes
[
{
"type": "ISR",
"rate": 0.1,
"factor": "Tasa",
"withholding": true
}
]
Default billing/invoicing period for the team
day, week, two_weeks, month, two_months, null "month"
Show child attributes
Show child attributes