Animica Pay docs 2.00% per successful payment

Trust

Security

What we never store, why keys are hashed, and what must never reach browser code.

What we protect, how, and what is your responsibility. Written to be checkable rather than reassuring.

What we never store #

Passwords, seed phrases, private keys, full secret keys and auth tokens are also never logged. Logs are redacted at the point of writing, not scrubbed afterwards.

Why keys are hashed rather than encrypted #

A secret key is 32 characters of CSPRNG output over a 62-character alphabet — around 190 bits. There is no dictionary to attack, so a slow KDF would buy nothing but latency on every API request. Instead:

What a merchant must never put in browser code #

A publishable key (apk_…) is the browser-safe one. It is printed into HTML by design, which is exactly why it cannot create charges.

Tenant isolation #

Every query is scoped by merchant id taken from the session or the API key — never from the URL. A row id from a request is loaded and then ownership-checked, and another merchant’s row returns 404, not 403, so ids cannot be enumerated by watching status codes.

Sessions and the dashboard #

ControlBehaviour
Session idopaque random value, server-side lookup — so logout and revocation are real
Absolute lifetime12 hours
Idle lifetime2 hours
Cookie flagsHttpOnly; SameSite=Lax; Secure; Path=/
Password changedestroys every other session for that user
Password rulesat least 12 characters; length over composition, because length is what resists guessing
Every state-changing formCSRF token bound to the session, constant-time compared, plus a same-origin check

The public API uses no cookies at all, which is why it needs no CSRF token — and why an API key is never accepted from a cookie.

Browser-side hardening #

Chain-specific rules we enforce for you #

Reporting a vulnerability #

Report it to the Animica security contact rather than opening a public issue, include the request_id from any error body, and expect to be asked for a reproduction. Do not test against other merchants’ data — a tenant-isolation report can be demonstrated entirely with two accounts you control.