Saltar para o conteúdo principal
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

  1. Gatilho: Registo é atualizado (Oportunidade)
  2. Filtro: Etapa = Closed Won
  3. Pesquisar Registo: Obter detalhes da empresa
  4. Código (opcional): Formatar o payload
  5. Pedido HTTP: Enviar para o sistema de faturação

Etapa 1: Configurar o Gatilho

  1. Crie um novo fluxo de trabalho
  2. Selecione o gatilho Registo é atualizado
  3. 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çãoValor
CampoEtapa
CondiçãoIgual a
ValorCLOSED_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çãoValor
ObjetoEmpresa
Correspondência porID igual a {{trigger.object.companyId}}
Isto obtém o registo completo da Empresa com morada de faturação, NIF, etc.

Etapa 4: Formatar o Payload (Opcional)

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çãoValor
MétodoPOST
URLO endpoint da API do seu sistema de faturação
CabeçalhosAuthorization: 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

EtapaAçãoFinalidade
1Gatilho: Registo atualizadoDispara quando qualquer Oportunidade é alterada
2FiltroSó prossiga se Etapa = Closed Won
3Pesquisar RegistoObter detalhes completos da Empresa para faturação
4CódigoFormatar dados para a API de faturação
5Requisição HTTPCriar 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