Skip to main content
A payment instrument is a tokenized card or bank account linked to a customer. You must register at least one instrument before you can create a payment for that customer. PayGood never stores raw card or bank account numbers — instead, it works exclusively with vault tokens that represent sensitive data held securely by your token vault provider.

How tokenization works

Raw card and bank account data never touches PayGood’s servers. Before registering an instrument, you tokenize the sensitive data using a supported vault provider, which will return an opaque token ID that represents the underlying data. You then pass that token ID to PayGood via POST /payment-instruments. PayGood forwards it to the payment processor on your behalf during a charge. This architecture means your integration never handles raw PANs or routing numbers, keeping you out of PCI scope.

Collecting a payment instrument

We provide two NPM packages you can integrate into your website to collect a card or bank account: collect-core (pure TypeScript component), or collect-react (React component). collect-core: link , collect-react: link
Due to a temporary issue, initialize the component with useStockDomain: false . Once a fix is released, this will no longer be necessary and docs will be updated.
Here’s what the component looks like:
Screenshot 2026 08 09 At 6 42 23 PM
See package docs for shape of result.

Register a card instrument

Once you have a vault token for a card, send a POST /payment-instruments request with type: "card" and the token details.
PayGood returns a payment instrument record with masked display details and an initial status.

Register a bank account instrument

To register a bank account, use the same endpoint with type: "bank_account" and a vault token that represents the tokenized account details.
The response includes bank account display details instead of card fields.

Instrument statuses

An instrument moves through the following statuses after registration.
Once an instrument reaches active status, store its paymentInstrumentId in your database. You’ll reference it on every payment you create for that customer.