Infracard

Cards

Card lifecycle and management

List cards

Returns cards for the authenticated merchant with optional status filter and pagination.

GET
/cards

Authorization

x-api-key<token>

In: header

Query Parameters

statusstring

Filter by card status.

Value in: "PENDING" | "ACTIVE" | "FREEZING" | "FROZEN" | "UNFREEZING" | "CANCELLING" | "CANCELLED" | "FAILED" | "BLOCKED"
limitunknown

Items per page.

pageunknown

Page number (1-indexed).

Response Body

CardResponse paginated response

TypeScript Definitions

Use the response body type in TypeScript.

dataRequiredarray<object>
paginationRequiredobject
curl -X GET "https://example.com/cards?status=PENDING&limit=20&page=1" \
  -H "x-api-key: <token>"
fetch("https://example.com/cards?status=PENDING&limit=20&page=1", {
  headers: {
    "x-api-key": "<token>"
  }
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "https://example.com/cards?status=PENDING&limit=20&page=1"

  req, _ := http.NewRequest("GET", url, nil)
  req.Header.Add("x-api-key", "<token>")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://example.com/cards?status=PENDING&limit=20&page=1"

response = requests.request("GET", url, headers = {
  "x-api-key": "<token>"
})

print(response.text)
{
  "data": [
    {
      "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
      "merchantId": "mrc_01J2Y3Z4A5B6C7D8E9F0G1H2J3",
      "cardOfferingId": "off_01J2Y7Q8R9S0T1U2V3W4X5Y6Z7",
      "lastFour": "1234",
      "status": "ACTIVE",
      "balance": "100.00",
      "currency": "USD",
      "createdAt": "2026-02-09T18:04:05.000Z"
    }
  ],
  "pagination": {
    "total": 0,
    "page": 0,
    "limit": 0,
    "totalPages": 0
  }
}

Issue a new card

Submits an asynchronous card issuance request for a merchant.

POST
/cards

Authorization

x-api-key<token>

In: header

Request Body

application/jsonRequired
offeringIdRequiredstring

Card offering ID

amountRequiredstring

Initial load amount

merchantOrderNoRequiredstring

Unique merchant order reference

holderIdstring

Card holder ID (if offering requires one)

Response Body

OrderResponse response

TypeScript Definitions

Use the response body type in TypeScript.

dataRequiredobject
curl -X POST "https://example.com/cards" \
  -H "x-api-key: <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "offeringId": "off_01J2Y7Q8R9S0T1U2V3W4X5Y6Z7",
    "amount": "50.00",
    "merchantOrderNo": "ord_20260209_001",
    "holderId": "holder_01J2Y8A9B0C1D2E3F4G5H6I7J8"
  }'
const body = JSON.stringify({
  "offeringId": "off_01J2Y7Q8R9S0T1U2V3W4X5Y6Z7",
  "amount": "50.00",
  "merchantOrderNo": "ord_20260209_001",
  "holderId": "holder_01J2Y8A9B0C1D2E3F4G5H6I7J8"
})

fetch("https://example.com/cards", {
  headers: {
    "x-api-key": "<token>"
  },
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "https://example.com/cards"
  body := strings.NewReader(`{
    "offeringId": "off_01J2Y7Q8R9S0T1U2V3W4X5Y6Z7",
    "amount": "50.00",
    "merchantOrderNo": "ord_20260209_001",
    "holderId": "holder_01J2Y8A9B0C1D2E3F4G5H6I7J8"
  }`)
  req, _ := http.NewRequest("POST", url, body)
  req.Header.Add("x-api-key", "<token>")
  req.Header.Add("Content-Type", "application/json")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://example.com/cards"
body = {
  "offeringId": "off_01J2Y7Q8R9S0T1U2V3W4X5Y6Z7",
  "amount": "50.00",
  "merchantOrderNo": "ord_20260209_001",
  "holderId": "holder_01J2Y8A9B0C1D2E3F4G5H6I7J8"
}
response = requests.request("POST", url, json = body, headers = {
  "x-api-key": "<token>",
  "Content-Type": "application/json"
})

print(response.text)
{
  "data": {
    "orderNo": "ord_provider_01J2Y9K0L1M2N3P4Q5R6S7T8U9",
    "merchantOrderNo": "ord_20260209_001"
  }
}

Get sensitive card info (PAN, CVV, expiry)

Retrieves PCI-sensitive card fields for an issued card.

GET
/cards/sensitive

Authorization

x-api-key<token>

In: header

Query Parameters

cardIdRequiredstring

Card ID.

Response Body

SensitiveCardInfoResponse response

TypeScript Definitions

Use the response body type in TypeScript.

dataRequiredobject
curl -X GET "https://example.com/cards/sensitive?cardId=card_01J2Y4K5M6N7P8Q9R0S1T2U3V4" \
  -H "x-api-key: <token>"
fetch("https://example.com/cards/sensitive?cardId=card_01J2Y4K5M6N7P8Q9R0S1T2U3V4", {
  headers: {
    "x-api-key": "<token>"
  }
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "https://example.com/cards/sensitive?cardId=card_01J2Y4K5M6N7P8Q9R0S1T2U3V4"

  req, _ := http.NewRequest("GET", url, nil)
  req.Header.Add("x-api-key", "<token>")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://example.com/cards/sensitive?cardId=card_01J2Y4K5M6N7P8Q9R0S1T2U3V4"

response = requests.request("GET", url, headers = {
  "x-api-key": "<token>"
})

print(response.text)
{
  "data": {
    "cardNumber": "4111111111111111",
    "cvv": "123",
    "expiryMonth": "12",
    "expiryYear": "2027"
  }
}

Get card details

Returns non-sensitive card metadata and balance information.

GET
/cards/info

Authorization

x-api-key<token>

In: header

Query Parameters

cardIdRequiredstring

Card ID.

Response Body

CardResponse response

TypeScript Definitions

Use the response body type in TypeScript.

dataRequiredobject
curl -X GET "https://example.com/cards/info?cardId=card_01J2Y4K5M6N7P8Q9R0S1T2U3V4" \
  -H "x-api-key: <token>"
fetch("https://example.com/cards/info?cardId=card_01J2Y4K5M6N7P8Q9R0S1T2U3V4", {
  headers: {
    "x-api-key": "<token>"
  }
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "https://example.com/cards/info?cardId=card_01J2Y4K5M6N7P8Q9R0S1T2U3V4"

  req, _ := http.NewRequest("GET", url, nil)
  req.Header.Add("x-api-key", "<token>")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://example.com/cards/info?cardId=card_01J2Y4K5M6N7P8Q9R0S1T2U3V4"

response = requests.request("GET", url, headers = {
  "x-api-key": "<token>"
})

print(response.text)
{
  "data": {
    "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
    "merchantId": "mrc_01J2Y3Z4A5B6C7D8E9F0G1H2J3",
    "cardOfferingId": "off_01J2Y7Q8R9S0T1U2V3W4X5Y6Z7",
    "lastFour": "1234",
    "status": "ACTIVE",
    "balance": "100.00",
    "currency": "USD",
    "createdAt": "2026-02-09T18:04:05.000Z"
  }
}

Freeze a card

Blocks card usage while preserving card state for later unfreeze.

POST
/cards/freeze

Authorization

x-api-key<token>

In: header

Request Body

application/jsonRequired
cardIdRequiredstring

Card ID

merchantOrderNoRequiredstring

Unique merchant order reference

Response Body

Card frozen

curl -X POST "https://example.com/cards/freeze" \
  -H "x-api-key: <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
    "merchantOrderNo": "ord_20260209_002"
  }'
const body = JSON.stringify({
  "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
  "merchantOrderNo": "ord_20260209_002"
})

fetch("https://example.com/cards/freeze", {
  headers: {
    "x-api-key": "<token>"
  },
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "https://example.com/cards/freeze"
  body := strings.NewReader(`{
    "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
    "merchantOrderNo": "ord_20260209_002"
  }`)
  req, _ := http.NewRequest("POST", url, body)
  req.Header.Add("x-api-key", "<token>")
  req.Header.Add("Content-Type", "application/json")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://example.com/cards/freeze"
body = {
  "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
  "merchantOrderNo": "ord_20260209_002"
}
response = requests.request("POST", url, json = body, headers = {
  "x-api-key": "<token>",
  "Content-Type": "application/json"
})

print(response.text)
Empty

Unfreeze a card

Re-enables a previously frozen card.

POST
/cards/unfreeze

Authorization

x-api-key<token>

In: header

Request Body

application/jsonRequired
cardIdRequiredstring

Card ID

merchantOrderNoRequiredstring

Unique merchant order reference

Response Body

Card unfrozen

curl -X POST "https://example.com/cards/unfreeze" \
  -H "x-api-key: <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
    "merchantOrderNo": "ord_20260209_003"
  }'
const body = JSON.stringify({
  "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
  "merchantOrderNo": "ord_20260209_003"
})

fetch("https://example.com/cards/unfreeze", {
  headers: {
    "x-api-key": "<token>"
  },
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "https://example.com/cards/unfreeze"
  body := strings.NewReader(`{
    "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
    "merchantOrderNo": "ord_20260209_003"
  }`)
  req, _ := http.NewRequest("POST", url, body)
  req.Header.Add("x-api-key", "<token>")
  req.Header.Add("Content-Type", "application/json")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://example.com/cards/unfreeze"
body = {
  "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
  "merchantOrderNo": "ord_20260209_003"
}
response = requests.request("POST", url, json = body, headers = {
  "x-api-key": "<token>",
  "Content-Type": "application/json"
})

print(response.text)
Empty

Cancel a card

Permanently deactivates a card. The card must be in ACTIVE status.

POST
/cards/cancel

Authorization

x-api-key<token>

In: header

Request Body

application/jsonRequired
cardIdRequiredstring

Card ID

merchantOrderNoRequiredstring

Unique merchant order reference

Response Body

Card cancellation requested

curl -X POST "https://example.com/cards/cancel" \
  -H "x-api-key: <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
    "merchantOrderNo": "ord_20260209_006"
  }'
const body = JSON.stringify({
  "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
  "merchantOrderNo": "ord_20260209_006"
})

fetch("https://example.com/cards/cancel", {
  headers: {
    "x-api-key": "<token>"
  },
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "https://example.com/cards/cancel"
  body := strings.NewReader(`{
    "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
    "merchantOrderNo": "ord_20260209_006"
  }`)
  req, _ := http.NewRequest("POST", url, body)
  req.Header.Add("x-api-key", "<token>")
  req.Header.Add("Content-Type", "application/json")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://example.com/cards/cancel"
body = {
  "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
  "merchantOrderNo": "ord_20260209_006"
}
response = requests.request("POST", url, json = body, headers = {
  "x-api-key": "<token>",
  "Content-Type": "application/json"
})

print(response.text)
Empty

Withdraw funds from a card

Submits an asynchronous withdrawal request for an existing card.

POST
/cards/withdraw

Authorization

x-api-key<token>

In: header

Request Body

application/jsonRequired
cardIdRequiredstring

Card ID

amountRequiredstring

Withdrawal amount

merchantOrderNoRequiredstring

Unique merchant order reference

Response Body

Withdrawal requested

curl -X POST "https://example.com/cards/withdraw" \
  -H "x-api-key: <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
    "amount": "25.00",
    "merchantOrderNo": "ord_20260209_005"
  }'
const body = JSON.stringify({
  "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
  "amount": "25.00",
  "merchantOrderNo": "ord_20260209_005"
})

fetch("https://example.com/cards/withdraw", {
  headers: {
    "x-api-key": "<token>"
  },
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "https://example.com/cards/withdraw"
  body := strings.NewReader(`{
    "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
    "amount": "25.00",
    "merchantOrderNo": "ord_20260209_005"
  }`)
  req, _ := http.NewRequest("POST", url, body)
  req.Header.Add("x-api-key", "<token>")
  req.Header.Add("Content-Type", "application/json")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://example.com/cards/withdraw"
body = {
  "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
  "amount": "25.00",
  "merchantOrderNo": "ord_20260209_005"
}
response = requests.request("POST", url, json = body, headers = {
  "x-api-key": "<token>",
  "Content-Type": "application/json"
})

print(response.text)
Empty

Deposit funds to a card

Submits an asynchronous deposit request for an existing card.

POST
/cards/deposit

Authorization

x-api-key<token>

In: header

Request Body

application/jsonRequired
cardIdRequiredstring

Card ID

amountRequiredstring

Deposit amount

merchantOrderNoRequiredstring

Unique merchant order reference

Response Body

OrderResponse response

TypeScript Definitions

Use the response body type in TypeScript.

dataRequiredobject
curl -X POST "https://example.com/cards/deposit" \
  -H "x-api-key: <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
    "amount": "25.00",
    "merchantOrderNo": "ord_20260209_004"
  }'
const body = JSON.stringify({
  "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
  "amount": "25.00",
  "merchantOrderNo": "ord_20260209_004"
})

fetch("https://example.com/cards/deposit", {
  headers: {
    "x-api-key": "<token>"
  },
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "https://example.com/cards/deposit"
  body := strings.NewReader(`{
    "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
    "amount": "25.00",
    "merchantOrderNo": "ord_20260209_004"
  }`)
  req, _ := http.NewRequest("POST", url, body)
  req.Header.Add("x-api-key", "<token>")
  req.Header.Add("Content-Type", "application/json")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://example.com/cards/deposit"
body = {
  "cardId": "card_01J2Y4K5M6N7P8Q9R0S1T2U3V4",
  "amount": "25.00",
  "merchantOrderNo": "ord_20260209_004"
}
response = requests.request("POST", url, json = body, headers = {
  "x-api-key": "<token>",
  "Content-Type": "application/json"
})

print(response.text)
{
  "data": {
    "orderNo": "ord_provider_01J2Y9K0L1M2N3P4Q5R6S7T8U9",
    "merchantOrderNo": "ord_20260209_001"
  }
}