vermilion
guides

Customers & tokens

A platform token (tok_…) is one stored payment method mapped to references at every PSP that tokenized it. Charge it later — recurring, off-session — and routing picks among the PSPs that hold a reference.

1 · Create a customer

POST /v1/customers { "external_ref": "user-42", "email": "u42@example.com" }

2 · Store a payment method

POST /v1/payment_methods { "customer_id": "cus_…", "type": "card", "stripe": { "token": "pm_…" }, "adyen": { "encryptedCardNumber": "…", … } }

Tokenization runs at every eligible PSP; the response reports each one individually. Partial success is fine — the token simply routes only to the PSPs that succeeded:

"references": [ { "provider": "stripe", "status": "active" }, { "provider": "adyen", "status": "active" } ]

3 · Charge the token

POST /v1/payments { "amount": 4900, "currency": "EUR", "payment_method": { "type": "token", "token": "tok_…" } }

Routing rules apply as usual, filtered to reference-holding PSPs; fallback between them works too. Declines surface exactly like any other payment.

Revoking

DELETE /v1/payment_methods/tok_… # status becomes revoked; charges are rejected

Portability honesty

PSP tokens are not magically portable: a token charges only through PSPs that hold their own reference for it. What Vermilion gives you is one id, one API, and parallel references — so switching your primary PSP doesn't mean re-collecting cards from customers who were tokenized on both.