Envie automaticamente os dados do negócio para o seu sistema de faturação (Stripe, QuickBooks, Xero, etc.) quando uma oportunidade é ganha.
Estrutura do Fluxo de Trabalho
- Gatilho: Registo é atualizado (Oportunidade)
- Filtro: Etapa = Closed Won
- Pesquisar Registo: Obter detalhes da empresa
- Código (opcional): Formatar o payload
- Pedido HTTP: Enviar para o sistema de faturação
Etapa 1: Configurar o Gatilho
- Crie um novo fluxo de trabalho
- Selecione o gatilho Registo é atualizado
- Escolha Oportunidade como o objeto
Etapa 2: Filtrar por Closed Won
Adicione uma ação de Filtro para só continuar quando o negócio for ganho:
| Configuração | Valor |
|---|
| Campo | Etapa |
| Condição | Igual a |
| Valor | CLOSED_WON (ou o nome da sua etapa) |
O gatilho é acionado em qualquer atualização de Oportunidade. O Filtro garante que o fluxo de trabalho só continue quando a etapa mudar para Closed Won.
Etapa 3: Obter detalhes da empresa
O registo de Oportunidade pode não incluir todos os campos da Empresa de que precisa para a fatura. Adicione uma ação de Pesquisar Registo:
| Configuração | Valor |
|---|
| Objeto | Empresa |
| Correspondência por | ID igual a {{trigger.object.companyId}} |
Isto obtém o registo completo da Empresa com morada de faturação, NIF, etc.
Se o seu sistema de faturação esperar um formato específico, adicione uma ação de Código:
export const main = async (params: {
opportunity: any;
company: any;
}): Promise<object> => {
const { opportunity, company } = params;
return {
invoice: {
// Customer info from Company
customer_name: company.name,
customer_email: company.email || "",
billing_address: {
line1: company.address?.street || "",
city: company.address?.city || "",
postal_code: company.address?.postalCode || "",
country: company.address?.country || ""
},
tax_id: company.taxId || null,
// Invoice details from Opportunity
amount: opportunity.amount,
currency: opportunity.currency || "USD",
description: `Invoice for ${opportunity.name}`,
due_days: 30,
// Reference back to Twenty
metadata: {
opportunity_id: opportunity.id,
company_id: company.id
}
}
};
};
Etapa 5: Enviar para o Sistema de Faturação
Adicione uma ação de Pedido HTTP:
| Configuração | Valor |
|---|
| Método | POST |
| URL | O endpoint da API do seu sistema de faturação |
| Cabeçalhos | Authorization: Bearer YOUR_API_KEY |
| Corpo | {{code.invoice}} ou faça o mapeamento dos campos diretamente |
Exemplo: Fatura Stripe
POST https://api.stripe.com/v1/invoices
Headers:
Authorization: Bearer sk_live_xxx
Content-Type: application/x-www-form-urlencoded
Body:
customer: {{company.stripeCustomerId}}
collection_method: send_invoice
days_until_due: 30
Exemplo: Fatura QuickBooks
POST https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice
Headers:
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
Body: {{code.invoice}}
Resumo Completo do Fluxo de Trabalho
| Etapa | Ação | Finalidade |
|---|
| 1 | Gatilho: Registo atualizado | Dispara quando qualquer Oportunidade é alterada |
| 2 | Filtro | Só prossiga se Etapa = Closed Won |
| 3 | Pesquisar Registo | Obter detalhes completos da Empresa para faturação |
| 4 | Código | Formatar dados para a API de faturação |
| 5 | Requisição HTTP | Criar fatura no sistema externo |
Dicas
- Armazene IDs externos: Guarde o ID da fatura retornado pela API na Oportunidade usando uma ação de Atualizar Registo
- Tratamento de erros: Adicione uma ramificação para enviar uma notificação se o pedido HTTP falhar
- Teste primeiro: Use o modo sandbox/de teste do seu sistema de faturação antes de ir para produção
Relacionados