Skip to main content
POST
Create a transfer between two bank accounts of the same company.

Authorizations

Authorization
string
header
required

Token da sessão no cabeçalho Authorization, no formato Bearer (mesmo esquema ApiKeyAuth do contrato).

Headers

x-company-id
string
required

company uuid

Body

application/json

Transfer data

destination_bank_account_id
string
required
origin_bank_account_id
string
required
transfer_date
string
required
amount
number

Amount NÃO carrega validate:"required": para go-playground/validator, "required" num float64 rejeita o ZERO VALUE — e amount=0 é exatamente o caso de negócio que precisa produzir "valor da transferência deve ser maior que zero" (400, mensagem literal da tabela do plan.md), não o genérico "erro ao validar a requisição". Deixar o campo passar por esta validação de forma e cair na validação de NEGÓCIO do use case (T7, toRegisterParams) é o que garante a mensagem certa em amount<=0.

idempotency_key
string

IdempotencyKey é opcional no schema (plan.md), mas o front DEVE sempre enviá-la — ver spec.md § "Regras de negócio". Aceita nil (campo ausente).

more_infos
string
reference
string

Response

idempotent replay (same idempotency_key); reversed_at may be filled if the original transfer was already reversed

amount
string
amount_value
number
created_at
string
created_by
object
destination_account
object
destination_balance
number
id
string
more_infos
string
origin_account
object
origin_balance
number

OriginBalance/DestinationBalance só vêm preenchidos na resposta de criação (201/200 do POST) e de estorno (DELETE) — plan.md: "a resposta inclui os saldos resultantes das duas contas, para o front atualizar a tela sem refetch". GetByID/GetAll/PATCH não carregam efeito de saldo nenhum, então ficam de fora (omitempty) para não sugerir um refetch de saldo que a operação não fez.

reference
string
reversed_at
string

ReversedAt só aparece (ponteiro não-nil) quando a transferência foi estornada (D5b) — inclusive no replay idempotente pós-estorno (T4b): o handler responde 200 e o cliente vê, pelo campo preenchido, que aquela chave já havia sido usada e a transferência desfeita.

transfer_date
string
type
string
updated_at
string