Payment Instruments

Payment instruments let you store reusable payment details (bank accounts, debit cards and other payment instruments coming soon) against each customer. They power
autopay, refunds, and manual payments without asking for sensitive numbers
every time.


Payment Instrument Lifecycle (Bank Account)

flowchart TD
    A[Create Instrument status: INACTIVE, verification: PENDING] -->|
Verification approved| B[Verified, status: INACTIVE, verification: VERIFIED]
    A -->|Verification failed / revoked| C[Verification Failed, status:
INACTIVE, verification: FAILED or REVOKED]
    B -->|Activate| D[Active status: ACTIVE, verification: VERIFIED]
    D -->|Deactivate| E[Inactive, status: INACTIVE, verification: VERIFIED]
    E -->|Re-activate| D
    C -->|Retry verification| A
    D -->|Delete| F[Deleted, status: DELETED, verification: preserved]
    E -->|Delete| F

Lifecycle & Verification

Create the instrument (status=INACTIVE initially).

Verify (micro-deposits, card tokenisation, etc.) and update
verificationState.

Activate once verified

Link to autopay or record transactions using the instrument ID.

Deactivate or delete if the customer revokes authorisation or the
instrument fails repeatedly.

What You Can Store

FieldDescription
TypeCurrently BANK_ACCOUNT; DEBIT_CARD
NicknameFriendly label (“Primary Checking”, “Corporate Debit”).
Holder name & typePerson or business name plus owner type.
Core identifiersAccount/routing numbers for bank accounts; card number (tokenised or masked) and expiry for debit cards.
Verification statusPENDING, VERIFIED, FAILED, REVOKED.
Operational statusACTIVE or INACTIVE, plus soft delete support.
MetadataBank or issuer name, external processor IDs, audit trail (created/updated by).

All timestamps are UTC; Embarc records who created or last modified each instrument.


Core APIs


DescriptionMethodEndpoint
List instrumentsGET/clients/{clientId}/payment-instruments
Create an instrumentPOST/clients/{clientId}/payment-instruments
Fetch instrument details (maskedidentifiers)GET/clients/{clientId}/payment-instruments/{paymentInstrumentId}
Fetch unmasked identifiersGET/clients/{clientId}/payment-instruments/{paymentInstrumentId}/unmasked
Update (nickname, holder name, externalId)PUT/clients/{clientId}/payment-instruments/{paymentInstrumentId}
Activate after verificationPOST/clients/{clientId}/payment-instruments/{paymentInstrumentId}?command=ACTIVATE
Deactivate (pause)the instrumentPOST/clients/{clientId}/payment-instruments/{paymentInstrumentId}?command=DEACTIVATE
Soft-delete the instrument (cancels linked autopays)DELETE/clients/{clientId}/payment-instruments/{paymentInstrumentId}

Create Example (Bank Account)

POST /clients/9876/payment-instruments
{
  "instrumentType": "BANK_ACCOUNT",
  "nickName": "Primary Checking",
  "accountHolderName": "Alice Martinez",
  "accountHolderType": "PERSONAL",
  "accountType": "CHECKING",
  "accountNumber": "1234567890",
  "routingNumber": "021000021",
  "bankName": "Chase",
  "verificationState": "PENDING",
  "status": "INACTIVE",
  "externalId": "ACCT-2025-001"
}

For debit cards, you’ll post the same payload with
instrumentType: DEBIT_CARD plus card-specific fields (token, last4,
expiry).


Lifecycle & Verification

  1. Create the instrument (status=INACTIVE initially).
  2. Verify (micro-deposits, card tokenisation, etc.) and update
    verificationState.
  3. Activate once verified (POST .../{id}?command=ACTIVATE).
  4. Link to autopay or record transactions using the instrument ID.
  5. Deactivate or delete if the customer revokes authorisation or the
    instrument fails repeatedly.

Security & Compliance

  • Permissions: Separate permissions for create/read/update/delete/activate
    and for viewing unmasked data. Assign only to trusted roles.
  • Audit trail: Every action runs through the command framework; audit
    entries include payloads and user IDs.
  • Soft delete: Keeps a history while hiding the instrument from normal
    listings. Reactivate if needed later.

Usage Scenarios

  • Autopay enrolment: Store the account or card once, activate it, and let
    Embarc handle scheduled pulls.

  • Refunds: Push funds back using the same verified instrument—no need to
    re-enter banking details.

  • Operational automation: Deactivate or delete instruments automatically
    after repeated failures or end of relationship.



Did this page help you?