Como funciona

Da chave de API a livros reconciliados em cinco passos.

O WalletD e uma API REST diante de um livro-razao oficial. Este e o caminho que um unico pagamento percorre, do onboarding de um usuario a um movimento que seus auditores podem recalcular.

Como funciona

A forma de uma integracao

  1. 1. Espelhe seu usuario

    Crie um usuario de carteira com seu proprio id externo. O WalletD abre contas por finalidade (dinheiro, pontos) na primeira vez em que cada uma e usada, entao nao ha nada para provisionar antecipadamente.

  2. 2. Financie a carteira

    Inicie uma recarga pelo Stripe. O saldo e creditado apenas quando o gateway confirma com um webhook assinado ou uma consulta de reconciliacao, nunca por um callback do cliente.

  3. 3. Movimente o dinheiro

    Envie entre pessoas, receba um pagamento com uma reserva ou divida uma venda de marketplace. Cada chamada carrega uma chave de idempotencia e lanca lancamentos balanceados no livro-razao em uma unica transacao.

  4. 4. Recompensas e liquidacao vem em seguida

    Cashback e pontos sao concedidos no momento da captura; tarifas e comissao sao divididas; repasses geram um extrato de liquidacao. Tudo isso lanca nos mesmos livros.

  5. 5. Leia e verifique

    Leia saldos e historico pela API, receba webhooks assinados para cada evento e deixe o verificador interno reavaliar as invariantes do livro-razao de forma agendada.

Financie uma carteira e depois envie dinheiro

Financie uma carteira e depois envie dinheiro

A mesma requisicao em seis linguagens. Os valores sao em unidades minimas inteiras; o livro-razao faz o resto.

# Fund a wallet, then send money. Balances only move on the ledger.
curl -sS -X POST "$WALLETD_API/v1/users" \
  -H "Authorization: Bearer $WALLETD_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: usr-42-create" \
  -d '{"external_id":"user-42","kind":"consumer","display_name":"Ada Lovelace","handle":"ada"}'

curl -sS -X POST "$WALLETD_API/v1/transfers" \
  -H "Authorization: Bearer $WALLETD_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: xfer-ada-grace-001" \
  -d '{"from":"user-42","to":"@grace","amount":2500,"currency":"USD"}'
client := walletd.New(os.Getenv("WALLETD_API"), os.Getenv("WALLETD_API_KEY"))

var transfer walletd.Transfer
err := client.Do(ctx, http.MethodPost, "/v1/transfers", map[string]any{
    "from":     "user-42",
    "to":       "@grace",
    "amount":   2500, // minor units, $25.00, never a float
    "currency": "USD",
}, &transfer, "xfer-ada-grace-001") // idempotency key
if err != nil {
    return fmt.Errorf("transfer: %w", err)
}
client = WalletD()  # reads WALLETD_API / WALLETD_API_KEY

transfer = client.request(
    "POST",
    "/v1/transfers",
    {
        "from": "user-42",
        "to": "@grace",
        "amount": 2500,      # minor units, $25.00
        "currency": "USD",
    },
    idempotency_key="xfer-ada-grace-001",
)
print(transfer["status"])  # "settled"
const res = await fetch(`${API}/v1/transfers`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": "xfer-ada-grace-001",
  },
  body: JSON.stringify({
    from: "user-42",
    to: "@grace",
    amount: 2500, // minor units, $25.00
    currency: "USD",
  }),
});
const transfer = await res.json();
$transfer = $walletd->request('POST', '/v1/transfers', [
    'from'     => 'user-42',
    'to'       => '@grace',
    'amount'   => 2500,      // minor units, $25.00
    'currency' => 'USD',
], idempotencyKey: 'xfer-ada-grace-001');

echo $transfer['status']; // "settled"
var body = Map.of(
    "from", "user-42",
    "to", "@grace",
    "amount", 2500,      // minor units, $25.00
    "currency", "USD");

Transfer transfer = client.post(
    "/v1/transfers", body, "xfer-ada-grace-001", Transfer.class);

Principios que valem em cada passo

Idempotente por padrao

Cada chamada de movimentacao financeira recebe uma chave de idempotencia. Novas tentativas sao seguras; o livro-razao repete o resultado armazenado byte a byte.

Balanceado em uma transacao

Tarifas, reservas, limites e estornos sao aplicados dentro do mesmo lancamento, entao os livros nunca ficam errados nem por um instante.

Confirmado, nao presumido

O dinheiro se move mediante confirmacao verificada do gateway e liquida no livro-razao, nao em uma resposta otimista do cliente.

Verificado continuamente

Um verificador agendado recalcula conservacao, saldos e pisos, e falha ruidosamente no instante em que algo desvia.

Acesso antecipado

Torne-se um parceiro de design.

Estamos trabalhando com um pequeno numero de equipes que constroem produtos de carteira e financeiros sobre o WalletD. Se essa e a sua equipe, vamos conversar. Voce tera acesso direto as pessoas que o construiram.