Overview
A card issuer integration connects a card issuing platform (e.g. Rain, Stripe Issuing, Marqeta) with Sprinter Credit so that cardholders can spend against DeFi collateral instead of prefunded balances. The card issuer handles KYC, card issuance, and deposit contracts — Sprinter handles the credit line.Card Issuer Interface
The integration uses a genericCardIssuer interface that can be swapped for any card issuing platform:
This guide covers the full card issuer integration. If you only need the core credit draw mechanics (lock, draw, repay, unlock), see the Credit Draw quickstart.
Architecture
The integration has two sides:| Component | Responsibility |
|---|---|
| Card Issuer | KYC/onboarding, card issuance, deposit contracts, card network settlement |
| Sprinter Credit | Collateral locking, credit line management, USDC draws, repayment |
Integration Steps
Create User (KYC)
Submit the user’s wallet address to the card issuer for KYC onboarding. The issuer handles identity verification and compliance.
KYC approval may be instant or require manual review depending on the issuer. Poll the application status or register a webhook to be notified when the user is approved.
Retrieve Deposit Contract
Each card issuer provides a per-user deposit contract on the target chain. This is the address where USDC must be sent to fund the card.The deposit address is chain-specific. For Base (chain ID 8453), the issuer returns a Base address where USDC deposits are auto-detected and credited to the card balance.
Lock Collateral via Sprinter
Lock DeFi collateral to activate the user’s credit line. This is the same Returns
/lock call from the Credit Draw quickstart.{ calls: ContractCall[] } — execute in the user’s wallet.Draw Credit to Card Issuer
Draw USDC from the credit line directly to the card issuer’s deposit address. The issuer detects the on-chain deposit and credits the card balance.
Returns
| Parameter | Description |
|---|---|
account | User’s wallet address (borrower) |
amount | USDC amount (6 decimals — $50 = 50000000) |
receiver | Card issuer’s deposit address from step 2 |
{ calls: ContractCall[] } — execute on-chain. The USDC goes directly to the issuer’s deposit contract, funding the card.A 0.50% origination fee is deducted from each draw. See Fees.
Repay & Unlock
When the user wants to close out or at the end of a billing cycle, repay outstanding debt and unlock collateral.Credit runs on a 30-day billing cycle with a 7-day grace period. See Fees.
Integration Notes
Deposit Address vs Settlement Address
Deposit Address vs Settlement Address
The deposit address comes from the card issuer (per-user, per-chain). This is different from a settlement address used in authorization webhook flows. In this integration, USDC goes directly to the issuer’s deposit contract — the issuer handles crediting the card.
Funding Model
Funding Model
This integration uses a pre-funding model: draw USDC to the card issuer before the user spends. For a just-in-time model where credit is drawn at swipe time via webhooks, see the Authorization Webhook Handler.
KYC Timing
KYC Timing
KYC approval can take seconds to days depending on the issuer. Design your UX to handle pending states — lock collateral after KYC is approved, not before.
Signer Security
Signer Security
The signing key that executes draws must be secured with HSM or cloud KMS in production. See the Credit Draw guide for delegated draw patterns.
Try It
The Card Issuer Demo runs the full integration lifecycle — KYC, card issuance, collateral locking, credit draw to deposit address, repay, and unlock — with a mock card issuer that can be swapped for a real implementation.Card Issuer Integration Demo
Clone the repo, add a wallet with USDC on Base, and run
npm run dev to launch the demo on port 3003. Swap MockCardIssuer for a real card issuer implementation to validate against a live API.Related
Credit Draw
Core credit draw lifecycle without card issuer integration.
Credit Engine
Health factor, LTVs, and liquidation mechanics.
Credit API Reference
Full API reference with interactive playground.