Skip to main content
POST
Criar assinatura
POST /subscriptions Faz parte do recurso Assinaturas — o conceito, os dez estados e a máquina de transições estão lá. Cria a assinatura e coloca o motor de cobrança para funcionar. A partir daqui, quem emite fatura e quem cobra é a Z2Pay, no ritmo da recorrência configurada.
Informe exatamente um entre customerId e customer. Enviar os dois, ou nenhum, responde 400. O customer inline cria o cadastro na hora ou reaproveita um existente, casando primeiro pelo documento e depois pelo e-mail — é o atalho para quem ainda não tem o cust_.
Informe planId, items, ou os dois. Sem nenhum dos dois não há o que cobrar. Com os dois, os itens recorrentes do plano entram e os de items se somam a eles.Quando todos os itens são avulsos, recurrence e currency passam a ser obrigatórios: não há preço de onde derivá-los.

O estado inicial não se escolhe

Não existe campo status no corpo. O estado em que a assinatura nasce é decidido pela combinação que você envia, avaliada nesta ordem:
trialing vence a forma de pagamento. Com trialSpec, a assinatura entra em teste mesmo com o cartão já cadastrado — e a primeira fatura só nasce quando o teste acaba. Se você esperava cobrança imediata, não envie trialSpec.
pending_enrollment tem prazo; incomplete quase nunca. A adesão precisa ser paga dentro da janela da conta (7 dias por padrão) ou a assinatura é cancelada. Já a incomplete só expira quando nasceu de um teste com requiresPaymentMethod — cerca de 23 horas. A incomplete comum fica parada até alguém agir. Ver Do incomplete ao active.

Formas de pagamento

Em defaultPaymentMethodRef, o type diz o meio e o resto diz qual:
  • cartão novo — tokenize com o Tokenizer SDK e envie o tok_ em token. O cartão é salvo na carteira do cliente antes de virar o padrão;
  • cartão já salvo — envie o crd_ em cardId. Ele precisa pertencer ao cliente da assinatura, senão responde 409;
  • PIX ou boleto — só o type, sem token nem cardId.
Três combinações são recusadas com 409:
  • enrollmentItems sem defaultPaymentMethodRef — a adesão precisa de como ser cobrada;
  • trialSpec junto com enrollmentItems — são opostos: um adia a cobrança, o outro a antecipa;
  • bootstrapPayment numa assinatura que não nasceria active — ele afirma que o ciclo 1 já foi pago, o que é incompatível com teste ou com falta de forma de pagamento.
referenceCode é o seu identificador do contrato. Volta nas respostas e é filtrável por correspondência exata na listagem. Não é único: a Z2Pay não recusa dois contratos com o mesmo código.
upfront emite tudo de uma vez. Com invoiceGenerationMode: "upfront", todas as maxCycles faturas nascem na criação, cada uma com o seu vencimento — e maxCycles passa a ser obrigatório. O padrão, just_in_time, emite uma fatura por ciclo, na virada.

Exemplo

Resposta 201
O exemplo está abreviado — o playground ao lado mostra o corpo inteiro.

Authorizations

x-api-key
string
header
required

API Key da Credential (gerada no Backoffice)

Headers

Idempotency-Key
string

Chave única para garantir idempotência da requisição

Body

application/json
customerId
string

ID de um cliente existente (exatamente um entre customerId e customer).

Minimum string length: 1
customer
object

Cliente inline: cria ou reusa (por documento, depois email) na criação da assinatura.

planId
string

Instancia a assinatura a partir de um plano; pode coexistir com items extras.

Minimum string length: 1
itemOverrides
object

Override de quantidade por item do plano: { "<plan_item.key>": quantity }.

items
object[]

Items da assinatura: referência (priceVersionId) ou inline (description + unitAmount em centavos).

recurrence
object

Regra de recorrência; obrigatória quando todos os items são inline.

currency
string

Moeda ISO 4217; obrigatória quando todos os items são inline.

billingGroupId
string

Grupo de cobrança (billing group).

defaultPaymentMethodRef
object

Forma de pagamento default dos ciclos. Cartão: token (novo, do Tokenizer SDK) OU cardId (cartão já salvo do cliente).

splitConfig
object[]

Divisão de receita aplicada a cada ciclo cobrado; ausente = 100% pro recebedor owner.

Minimum array length: 1
collectionMethod
enum<string>
default:charge_automatically

Como a fatura é cobrada. Hoje só a cobrança automática na forma de pagamento padrão.

Available options:
charge_automatically
collectionTiming
enum<string>
default:prepaid

'prepaid' (default) cobra no início do ciclo; 'postpaid' cobra no fim.

Available options:
prepaid,
postpaid
invoiceGenerationMode
enum<string>
default:just_in_time

'just_in_time' (default) gera 1 invoice por ciclo; 'upfront' emite todas na criação (requer maxCycles).

Available options:
just_in_time,
upfront
paymentBehavior
enum<string>
default:allow_incomplete

O que fazer quando a primeira cobrança da assinatura não é aprovada. allow_incomplete (default) cria a assinatura mesmo assim, com a fatura em aberto e a régua de cobrança seguindo. error_if_incomplete cancela a assinatura quando a primeira cobrança falha — use quando não fizer sentido manter um contrato que nunca chegou a ser pago.

Available options:
allow_incomplete,
error_if_incomplete
enrollmentInstallments
integer

Parcelas no cartão da fatura de adesão (1–12; default 1); >1 exige defaultPaymentMethodRef.type=card.

Required range: 1 <= x <= 12
enrollmentItems
object[]

Itens de adesão cobrados uma única vez na 1ª fatura (amount em centavos); ignorado quando planId está set.

maxCycles
integer | null

Número máximo de ciclos; null/ausente = sem fim.

Required range: x > 0
metadata
object

Metadados livres do integrador.

referenceCode
string

Código do contrato no sistema do integrador; pesquisável, sem unicidade.

Required string length: 1 - 255
bootstrapPayment
object

Comprovante de cobrança externa do ciclo 1 — a Invoice #1 nasce paga; exige defaultPaymentMethodRef e é incompatível com trial.

trialSpec
object

Override do trial no nível da subscription; mutuamente exclusivo com bootstrapPayment.

Response

Assinatura criada

id
string

Identificador único do registro.

number
object

Número do endereço.

referenceCode
string | null

Código do contrato no sistema do integrador; pesquisável, sem unicidade.

customerId
string

ID do cliente associado ao registro.

customerEmail
string

E-mail do cliente.

customerName
string

Nome do cliente.

customerDocument
string

Documento do cliente (CPF ou CNPJ).

currency
string

Moeda no padrão ISO 4217 (ex.: BRL).

status
enum<string>

Status atual do registro (assinatura, fatura, plano ou slip de pagamento).

Available options:
incomplete,
incomplete_expired,
trialing,
active,
past_due,
unpaid,
paused,
canceled,
completed
billingGroupId
any | null

ID do grupo de cobrança ao qual o registro pertence; nulo se não agrupado.

currentPeriodStart
string<date-time>

Início do período de cobrança atual da assinatura (ISO 8601).

currentPeriodEnd
string<date-time>

Fim do período de cobrança atual da assinatura (ISO 8601).

nextInvoiceAt
string<date-time> | null

Data e hora prevista para a próxima fatura da assinatura (ISO 8601).

recurrence
object

Regra de recorrência (intervalo, unidade e âncora do ciclo).

collectionMethod
enum<string>

Como a fatura é cobrada. Hoje só a cobrança automática na forma de pagamento padrão.

Available options:
charge_automatically
collectionTiming
enum<string>

Momento da cobrança do ciclo: prepaid (no início) ou postpaid (no fim).

Available options:
prepaid,
postpaid
invoiceGenerationMode
enum<string>

Modo de geração de faturas: just_in_time (a cada ciclo) ou upfront (todas antecipadas).

Available options:
just_in_time,
upfront
cancelAtPeriodEnd
boolean

Indica se a assinatura será cancelada ao fim do período atual.

canceledAt
any | null

Data e hora do cancelamento; nula se não cancelado (ISO 8601).

endedAt
any | null

Data e hora em que a assinatura foi efetivamente encerrada; nula se ainda ativa (ISO 8601).

cancellationReason
any | null

Motivo do cancelamento da assinatura.

pausedAt
any | null

Data e hora em que a assinatura foi pausada; nula se não pausada (ISO 8601).

pauseResumesAt
any | null

Data e hora agendada para a retomada automática da assinatura pausada (ISO 8601).

pauseReason
any | null

Motivo da pausa da assinatura.

trialEnd
any | null

Data e hora de término do período de teste; nula se sem trial (ISO 8601).

incompleteExpiresAt
any | null

Prazo para concluir o primeiro pagamento antes de a assinatura incompleta expirar (ISO 8601).

trialRemindersFired
any[]

Lembretes de fim do período de teste já disparados para a assinatura.

maxCycles
any | null

Número máximo de ciclos da assinatura; nulo se não houver limite.

issuedCycles
integer

Número de ciclos já faturados (faturas emitidas) da assinatura.

completedCycles
integer

Número de ciclos já concluídos (pagos) da assinatura.

defaultPaymentMethodRef
object

Referência da forma de pagamento padrão usada para cobrar a assinatura.

splitConfig
any | null

Configuração de divisão (split) dos valores entre recebedores; nula se sem split.

paymentBehavior
enum<string>

O que fazer quando a primeira cobrança não é aprovada: allow_incomplete cria a assinatura com a fatura em aberto; error_if_incomplete cancela a assinatura.

Available options:
allow_incomplete,
error_if_incomplete
latestInvoiceId
any | null

ID da fatura mais recente gerada pela assinatura.

paymentUpdateToken
any | null

Token do link público para o cliente atualizar a forma de pagamento; nulo se não gerado.

paymentUpdateMethods
any | null

Formas de pagamento permitidas no link público de troca; nula se não habilitada.

metadata
object

Metadados livres (pares chave-valor) para uso do integrador; não afeta o processamento.

createdAt
string<date-time>

Data e hora de criação do registro (ISO 8601).

updatedAt
string<date-time>

Data e hora da última atualização do registro (ISO 8601).