CapsuleCredit
← All posts

Issue Visa, Mastercard, and Amex Cards with Lithic’s API

May 7, 2026

▶ Watch the 60-second version on YouTube

Seamless Card Issuance with Lithic's Unified API

With Lithic's recent expansion to support the American Express network, developers can now issue Visa, Mastercard, and Amex cards from a single API integration. This not only simplifies your payment architecture but also enhances your product’s flexibility. Whether you're building a spend management solution or a digital wallet, the ability to handle multiple card brands through a unified API means less boilerplate code and fewer integration headaches.

Getting Started with Lithic API

To get started, you need to set up a Lithic account and obtain your API keys. Once you have those, you can begin issuing cards. The Lithic API provides a straightforward endpoint for creating new cards, and you can specify the type of card you want (Visa, Mastercard, or Amex) in your request. Here's an example of how to issue a card using Python and the requests library:

import requests

API_KEY = 'your_api_key'
API_URL = 'https://api.lithic.com/v1/cards'

headers = {
    'Authorization': f'Bearer {API_KEY}',
    'Content-Type': 'application/json',
}

data = {
    "type": "physical",  # or "virtual"
    "brand": "amex",     # options: "visa", "mastercard", "amex"
    "metadata": {
        "user_id": "12345",
        "program_id": "67890"
    },
}

response = requests.post(API_URL, headers=headers, json=data)

if response.status_code == 201:
    card_info = response.json()
    print(f"Card issued successfully: {card_info['id']}")
else:
    print(f"Error issuing card: {response.status_code} - {response.text}")
This code snippet sets up a request to issue a new card. It includes the card type and brand, and it can easily be modified to incorporate additional parameters like spending controls or expiration dates.

Webhooks: Stay Updated with Card Events

When dealing with card issuance and management, events can happen that require your application to respond in real time. Lithic provides webhooks for various events, such as card activation, transaction approvals, and spending limit updates. To set up webhooks, you'll need to provide Lithic with a URL endpoint where it can send event notifications. For example, you could implement a webhook listener using Flask:

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/webhooks/lithic', methods=['POST'])
def lithic_webhook():
    event = request.json
    # Handle the webhook event here
    if event['type'] == 'card.activated':
        print(f"Card activated: {event['data']['card_id']}")
    elif event['type'] == 'transaction.approved':
        print(f"Transaction approved: {event['data']['transaction_id']}")
    
    return jsonify(success=True), 200

if __name__ == '__main__':
    app.run(port=5000)
This simple Flask app listens for POST requests to the `/webhooks/lithic` endpoint. You can expand on this by adding logic to handle different event types as needed.

Non-Obvious Gotcha: Card Brand Limitations

While the ability to issue cards across multiple brands sounds straightforward, a common gotcha is the brand-specific limitations that might affect your implementation. For example, some features like transaction limits or spending controls may not be uniformly supported across Visa, Mastercard, and Amex. You’ll want to carefully consult the Lithic API documentation for each card brand's capabilities and limitations. For instance, while you can set a spending limit for a Visa card, the same configuration might not be available for an Amex card. This could lead to unexpected behavior if your application attempts to apply a feature that isn't supported by the specific card brand.

Testing Your Integration

Testing your integration is critical before you go live. Lithic offers a sandbox environment where you can simulate card issuance and transactions without affecting real accounts. Ensure that you test various scenarios, such as card activation, transaction failures, and webhook handling, to confirm that your application behaves as expected. In your testing phase, also simulate edge cases, such as issuing multiple cards in quick succession or handling webhook events that may arrive out of order. This will help you build a robust application that can handle real-world scenarios effectively.

Conclusion: Streamline Your Fintech Stack

Integrating with Lithic to issue Visa, Mastercard, and Amex cards through a single API is a game-changer for developers looking to streamline their payment infrastructure. With the right setup, you can manage all your card issuance and lifecycle events with minimal friction, allowing you to focus on building innovative fintech solutions. As you implement and expand your card management features, always keep an eye on the nuances of each brand's capabilities, and leverage Lithic's documentation and support resources to ensure you're making the most of these powerful tools.

💳 Best card for API and cloud spend — earn rewards on every Stripe, AWS, and OpenAI charge.

Get Brex →