> ## Documentation Index
> Fetch the complete documentation index at: https://userepass.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Conversions

> Ingestão, atribuição, anulação e auditoria de conversões.

`repass.conversions` gerencia [conversões](/docs/conceitos/conversoes-e-fraude): ingestão server-to-server, [atribuição](/docs/conceitos/atribuicao) ao afiliado, criação manual, anulação e trilha de auditoria. Para o fluxo de integração completo, veja o [guia S2S](/docs/guias/conversoes-server-to-server).

## Ingestão

`create` recebe os dados da conversão e ao menos um identificador de matching: `clickId`, `visitorId`, `emailHash`, `fingerprint`, `couponCode` ou `customer.email`.

```ts theme={null}
// Ingestão S2S, retorna o envelope de atribuição
const result = await repass.conversions.create({
  sourceEventId: "order_8842", // idempotência por fato de negócio
  type: "one_time_purchase",
  amountCents: 9990,
  customer: { id: "cus_8842" },
  clickId: "clk_…",
}); // → ConversionCreateResult ({ attributed, deduplicated, replayed, conversion })
```

## Criação manual

```ts theme={null}
// Registra uma conversão atribuída diretamente a um afiliado
await repass.conversions.createManual({
  affiliateId: "aff_…",
  type: "custom",
  amountCents: 5000,
  customer: { id: "cus_1" },
  justification: "venda por telefone",
}); // → Conversion
```

## Leitura

```ts theme={null}
// Buscar (expand opcional: "click" | "affiliate")
await repass.conversions.retrieve("conv_…", { expand: ["click", "affiliate"] }); // → ExpandedConversion (Conversion + click/affiliate quando expandido)

// Listar (RepassPage, filtros opcionais)
await repass.conversions.list({ affiliate_id: "aff_…", status: "approved" }); // → RepassPage<Conversion>
```

## Anulação e auditoria

```ts theme={null}
await repass.conversions.void("conv_…", { reason: "reembolso" }); // → Conversion (anula a conversão)
await repass.conversions.audit("conv_…");                         // → ConversionAudit ({ conversionId, events })
```

<Note>
  `create` exige ao menos um identificador de matching e retorna o envelope `{ attributed, deduplicated, replayed, conversion }`. Para o schema completo de cada corpo (tipos de conversão, formato de `customer`, identificadores etc.) e os campos de cada objeto retornado, consulte a [Referência da API](/docs/convencoes/ids-e-recursos). As regras de negócio estão em [Conversões e fraude](/docs/conceitos/conversoes-e-fraude) e [Atribuição](/docs/conceitos/atribuicao).
</Note>
