Skip to main content
Split é a divisão do valor de um pagamento entre dois ou mais recebedores (rec_). Você define uma configuração de split (percentual ou valores fixos), e a Z2Pay calcula quanto cada recebedor recebe, quem arca com a taxa de processamento e quem é o responsável financeiro pela transação. Esta página explica como o cálculo funciona, com exemplos numéricos. Para criar, editar e listar configurações de split (o CRUD da API), veja Referência: Splits.
Todos os valores nesta página são inteiros em centavos. Um pagamento de R$ 100,00 é 10000. Veja Convenções.
Como o split chega à transação. O split se liga por pagamento, ao criar a transação (POST /transactions): cada item de payments[] aceita splitId (referência a uma configuração de split salva, prefixo spl_) ou split (a mesma config inline). Os dois são mutuamente exclusivos. Para o CRUD das configurações, veja Referência: Splits.

Anatomia de um item de split

Uma configuração de split é uma lista (config) de itens. Cada item descreve a fatia de um recebedor:
string
required
ID do recebedor que recebe esta fatia (rec_...). O recebedor precisa existir e estar vinculado ao gateway usado no pagamento.
number
required
Valor da fatia. Mínimo 0.01. Quando valueType é percentage, é o percentual (ex.: 60 = 60%). Quando é fixed, é o valor em centavos (ex.: 3000 = R$ 30,00).
string
required
Como interpretar value. Um de:
  • percentagevalue é um percentual.
  • fixedvalue é um valor fixo em centavos.
string
default:"sale"
Natureza da fatia. Um de:
  • sale — fatia de venda (padrão).
  • interest — fatia de juros/acréscimo.
  • platform_fee — fatia da plataforma (taxa de marketplace). Tem efeito especial no cálculo (veja Quando existe platform_fee).
boolean
Indica que este recebedor arca com a taxa de processamento (MDR/adquirência) do pagamento. Opcional no item, mas a configuração inteira precisa ter exatamente um item com processingFee: true.
boolean
Indica que este recebedor é o responsável financeiro da transação — quem responde por estornos e chargebacks. Opcional no item, mas a configuração inteira precisa ter exatamente um item com liable: true.

Regras de validação

Ao salvar ou usar uma configuração de split, a Z2Pay valida:
config não pode ser vazia.
Quando os itens usam valueType: "percentage", a soma de todos os value deve ser exatamente 100 (tolerância de 0.01). Caso contrário, a requisição é rejeitada com a mensagem “Soma dos percentuais deve ser 100%”.
Nem zero, nem dois. Exatamente um item da lista deve ter processingFee: true.
Mesma regra: exatamente um item deve ter liable: true.
As regras de processingFee e liable valem para a configuração como um todo. Se você montar a lista sem nenhum (ou com mais de um) item marcado, a validação falha. Erros de validação de payload retornam 400 (VALIDATION_ERROR); veja Erros.

Como o valor de cada fatia é calculado

O valor (amount) de cada item, em centavos, depende do valueType:
O arredondamento de percentuais é sempre para baixo (floor). Por isso a soma das fatias pode ficar alguns centavos abaixo do valor total — essa sobra é tratada na próxima seção.

processingFee e liable, em uma frase cada

  • processingFee → quem paga a taxa de processamento (MDR/adquirência) daquele pagamento e absorve a sobra de arredondamento (os centavos que sobraram do floor).
  • liable → quem é o responsável financeiro: responde por estornos e chargebacks.

Arredondamento via responsável (sobra)

Quando a soma das fatias não bate exatamente com o valor do pagamento (efeito do floor nos percentuais), a diferença restante é somada à fatia do responsável pela taxa. Assim o split sempre fecha com o valor total, ao centavo.
Na prática: o recebedor que arca com a taxa de processamento é também quem recebe (ou perde) os centavos de arredondamento. Isso mantém a conta exata sem distribuir frações entre todos.

Exemplo 1 — Split percentual simples (60/40)

Pagamento de R$ 100,00 (10000 centavos), dividido entre dois recebedores: 60% para o lojista, 40% para um parceiro. O lojista arca com a taxa e é o responsável.
Cálculo sobre 10000: Neste caso não há sobra: 6000 + 4000 = 10000.

Exemplo 2 — Arredondamento (sobra vai pro responsável)

Pagamento de R$ 100,01 (10001 centavos), mesmo split 60/40. 6000 + 4000 = 10000, faltou 1 centavo para fechar os 10001. Como rec_lojista é quem arca com a taxa (processingFee: true), ele absorve a sobra e recebe 6001. O split fecha exato.

Exemplo 3 — Valores fixos com vários recebedores

Pagamento de R$ 150,00 (15000 centavos), dividido em valores fixos para três recebedores. O primeiro arca com a taxa e é o responsável.
Em split fixo, a soma dos valores é responsabilidade sua — a Z2Pay não força que ela bata com o valor do pagamento. Se a soma das fatias fixas não fechar com o total, a diferença vai para a fatia do responsável pela taxa (mesmo mecanismo de sobra do Exemplo 2). Garanta que os fixos somem o que você espera.
Você não pode misturar percentual e fixo na lógica de soma: se houver itens percentage, a soma deles precisa ser 100%. Mantenha a configuração consistente (todos percentuais somando 100, ou valores fixos coerentes com o pagamento).

Quando existe platform_fee

Se algum item da configuração tem type: "platform_fee", a plataforma (dona da platform_fee) assume automaticamente o papel de responsável, independentemente dos flags individuais:
  • A fatia platform_fee passa a ser quem arca com a taxa de processamento.
  • A fatia platform_fee passa a ser a liable (responsável financeira).
  • A fatia platform_fee absorve a sobra de arredondamento.
Ou seja: existindo platform_fee, os flags processingFee/liable dos demais itens não mudam quem assume taxa/responsabilidade no cálculo — a plataforma assume. Use platform_fee para modelar a taxa do marketplace.

Exemplo 4 — Marketplace com platform_fee

Pagamento de R$ 100,00 (10000 centavos): 90% para o vendedor, 10% de taxa da plataforma.
Mesmo que rec_vendedor tenha processingFee: true e liable: true no JSON, como existe um item platform_fee é a plataforma que assume taxa e responsabilidade no cálculo das regras enviadas ao gateway. A configuração ainda precisa respeitar a regra de “exatamente 1 processingFee e 1 liable” na hora de salvar.

Onde o split aparece depois

Cada pagamento processado com split gera registros de split de pagamento (um por recebedor), com o amount calculado em centavos, o type, o valueType, e os flags processingFee/liable efetivos. Você consulta esses registros pela Referência: Splits.

Erros comuns


Veja também

Referência: Splits

CRUD de configurações de split e consulta dos splits de um pagamento.

Recebedores

Cadastre os recebedores (rec_) que entram no split.

Visão geral de valores

Como taxas, split e liquidação se encaixam.

Liquidação

Quando e como cada fatia é liquidada para o recebedor.