> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vultlocal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify Card

> Verify card status and retrieve partial subscriber info

<Info>
  Used before a transaction to verify the card and fetch the holder name and current balance.
</Info>

## Request

<ParamField header="X-API-Key-ID" type="string" required>
  API key ID assigned to the POS integration
</ParamField>

<ParamField header="X-Timestamp" type="string" required>
  RFC3339 timestamp used in the HMAC signature
</ParamField>

<ParamField header="X-Signature" type="string" required>
  Hex-encoded HMAC-SHA256 of the request
</ParamField>

### Body Parameters

<ParamField body="card_serial" type="string" required>
  Card serial number
</ParamField>

<ParamField body="pin" type="string" required>
  Cardholder 4-digit PIN
</ParamField>

***

## Response

<ResponseField name="success" type="boolean">
  Whether verification succeeded
</ResponseField>

<ResponseField name="message" type="string">
  Verification result message
</ResponseField>

<ResponseField name="is_active" type="boolean">
  Whether the card is active
</ResponseField>

<ResponseField name="balance" type="string">
  Formatted available balance
</ResponseField>

<ResponseField name="holder_name" type="string">
  Card holder display name
</ResponseField>

***

## Examples

<RequestExample>
  ```bash cURL theme={null}
  BODY='{"card_serial":"OLIV0001","pin":"1234"}'
  TIMESTAMP='2026-03-10T12:00:00Z'
  SIGNATURE=$(printf 'POST\n/api/v1/pos/verify-card\n%s\n%s' "$TIMESTAMP" "$BODY" | openssl dgst -sha256 -hmac "$OLIVE_HMAC_SECRET" -hex | sed 's/^.* //')

  curl -X POST "https://demo.api.vultlocal.com/api/v1/pos/verify-card" \
    -H "X-API-Key-ID: $OLIVE_API_KEY_ID" \
    -H "X-Timestamp: $TIMESTAMP" \
    -H "X-Signature: $SIGNATURE" \
    -H "Content-Type: application/json" \
    -d "$BODY"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 Valid theme={null}
  {
    "success": true,
    "message": "Card verified successfully",
    "is_active": true,
    "balance": "48,500.00 SLE",
    "holder_name": "John Doe"
  }
  ```

  ```json 400 Invalid theme={null}
  {
    "success": false,
    "error": "Invalid PIN"
  }
  ```
</ResponseExample>

***

## Use Cases

<CardGroup cols={2}>
  <Card title="Pre-Auth" icon="lock">
    Check card before entering amount
  </Card>

  <Card title="Identity" icon="user">
    Verify card holder name matches id
  </Card>
</CardGroup>

***

## Errors

| Status | Code                         | Description                                                     |
| ------ | ---------------------------- | --------------------------------------------------------------- |
| 400    | Validation or business error | Invalid payload, unknown card, blocked card, or bad PIN         |
| 401    | HMAC auth error              | Missing/invalid `X-API-Key-ID`, `X-Timestamp`, or `X-Signature` |
| 500    | Internal error               | Server error                                                    |


## OpenAPI

````yaml olive-openapi.json POST /pos/verify-card
openapi: 3.0.0
info:
  description: >-
    API Gateway for OLIVE NFC Card Payment System - Comprehensive payment, card
    management, agent operations, and admin authentication. All /api/v1 routes
    require authentication using either API Key or JWT token.
  title: OLIVE NFC Card Payment API
  termsOfService: http://swagger.io/terms/
  contact:
    name: API Support
    email: support@olive.sl
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
servers:
  - url: https://olive-gateway-a6ba.onrender.com/api/v1
security: []
paths: {}

````