Transactions Invite Only

     

    Learn about issued card transactions.

     

    Any use of an issued card that results in funds entering or leaving your Stripe account, such as a completed purchase or refund, is represented by a Transaction object. Transactions contain information about the card used, the cardholder, and the business it relates to.

    When an authorization is captured, the following actions take place simultaneously:

    • The Authorization object’s status transitions to closed, releasing the previously held funds. A balance transaction is created to represent this.
    • A new Transaction object of type capture is created that deducts the purchase amount from your account balance. Another balance transaction is also created.

    Stripe notifies you of these changes using the issuing_authorization.updated and issuing_transactions.created webhook events.

    {
      "id": "ipi_1Cn4d7IyNTgGDVfzcAYiyu6j",
      "object": "issuing_transaction",
      "amount": -100,
      "authorization": "iauth_1Cn4d7IyNTgGDVfzP5fAnvgI",
      "balance_transaction": null,
      "card": "ic_1Cm3paIyNTgGDVfzBqq1uqxR",
      "cardholder": null,
      "created": 1531401285,
      "currency": "usd",
    See all 24 lines "livemode": false, "merchant_data": { "category": "taxicabs_limousines", "city": "San Francisco", "country": "US", "name": "Rocket Rides", "network_id": "1234567890", "postal_code": "94107", "state": "CA" }, "metadata": { }, "type": "capture" }

    Most transactions contain the ID of the original authorization as a value for authorization. In some cases, such as refunds, there isn’t always an authorization that a transaction can link to. Should this occur, the value of authorization is set to null.

    Transaction reporting

    You can view card transaction information in the Dashboard and using the API. The Dashboard view lists all of the transactions across all issued cards, providing details such as:

    • Amount
    • Card used
    • Date
    • Description
    • Name on card
    • Merchant category

    You can filter the transactions shown by specifying the ID of an issued card. You can also export all transactional data as a CSV-formatted report to download.

    Transactional data can be retrieved using the API, allowing you to develop and generate specialized reports. For example, you can retrieve transactions to generate a typical credit card statement by listing transactions within a date range (e.g., 30 days) for a particular card.

    curl https://api.stripe.com/v1/issuing/transactions \
       -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
       -d card=ic_1CoYuRKEl2ztzE5GIEDjQiUI \
       -d created[gte]=1535156085 \
       -d created[lte]=1537748085
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.api_key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"
    
    transactions = Stripe::Issuing::Transaction.list({
        card: 'ic_1CoYuRKEl2ztzE5GIEDjQiUI',
        created: {
            gte: '1535156085',
            lte: '1537748085',
        },
    })
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.api_key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"
    
    transactions = stripe.issuing.Transaction.list(
      card='ic_1CoYuRKEl2ztzE5GIEDjQiUI',
      created={
        'gte': '1535156085',
        'lte': '1537748085'
      }
    )
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    \Stripe\Stripe::setApiKey("sk_test_4eC39HqLyjWDarjtT1zdp7dc");
    
    $transactions = \Stripe\Issuing\Transaction::all([
        'card' => 'ic_1CoYuRKEl2ztzE5GIEDjQiUI',
        'created' => [
            'gte' => '1535156085',
            'lte' => '1537748085',
        ],
    ]);
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";
    
    Map<String, Object> createdParams = new HashMap<String, Object>();
    createdParams.put("gte", "1535156085");
    createdParams.put("lte", "1537748085");
    
    Map<String, Object> params = new HashMap<>();
    params.put("card", "ic_1CoYuRKEl2ztzE5GIEDjQiUI");
    params.put("created", createdParams);
    
    TransactionCollection transactions = Transaction.list(params);
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    var stripe = require("stripe")("sk_test_4eC39HqLyjWDarjtT1zdp7dc");
    
    const transactions = stripe.issuing.transactions.list({
      card: 'ic_1CoYuRKEl2ztzE5GIEDjQiUI',
      created: {
        gte: '1535156085',
        lte: '1537748085',
      },
    );
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"
    
    params := &stripe.IssuingTransactionListParams{
      Card: stripe.String("ic_1CoYuRKEl2ztzE5GIEDjQiUI"),
      Created: &stripe.RangeQueryParams{
        GreaterThanOrEqual: stripe.Int64(1535156085),
        LessThanOrEqual: stripe.Int64(1537748085),
      },
    }
    i, _ := transaction.List(params)
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    StripeConfiguration.SetApiKey("sk_test_4eC39HqLyjWDarjtT1zdp7dc");
    
    var options = new TransactionListOptions {
        Card = "ic_1CoYuRKEl2ztzE5GIEDjQiUI",
        Created = new CreatedOptions
          {
              GreaterThanOrEqual = "1535156085",
              LessThanOrEqual = "1537748085",
          }
    };
    
    var service = new TransactionService();
    StripeList<Transaction> response = service.List(options);
    

    You can also include pending purchases in your statements by listing authorizations that have a status of pending. These represent authorizations that are holding funds but have not yet been captured—and no transaction created.

    curl https://api.stripe.com/v1/issuing/authorizations \
       -u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
       -d card=ic_1CoYuRKEl2ztzE5GIEDjQiUI \
       -d status=pending
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.api_key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"
    
    authorizations = Stripe::Authorization.list({
        card: 'ic_1CoYuRKEl2ztzE5GIEDjQiUI',
        status: 'pending',
    })
    
    # Set your secret key: remember to change this to your live secret key in production
    # See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.api_key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"
    
    authorizations = stripe.issuing.Authorization.list(
      card='ic_1CoYuRKEl2ztzE5GIEDjQiUI',
      status='pending'
    )
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    \Stripe\Stripe::setApiKey("sk_test_4eC39HqLyjWDarjtT1zdp7dc");
    
    $authorizations = \Stripe\Issuing\Authorization::all([
      'card' => 'ic_1CoYuRKEl2ztzE5GIEDjQiUI',
      'status' => 'pending',
    ]);
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    Stripe.apiKey = "sk_test_4eC39HqLyjWDarjtT1zdp7dc";
    
    Map<String, Object> params = new HashMap<>();
    params.put("card", "ic_1CoYuRKEl2ztzE5GIEDjQiUI");
    params.put("status", "pending");
    
    AuthorizationCollection authorizations = Authorization.list(params);
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    var stripe = require("stripe")("sk_test_4eC39HqLyjWDarjtT1zdp7dc");
    
    const authorizations = stripe.issuing.authorizations.list({
      card: 'ic_1CoYuRKEl2ztzE5GIEDjQiUI',
      status: 'pending',
    });
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    stripe.Key = "sk_test_4eC39HqLyjWDarjtT1zdp7dc"
    
    params := &stripe.IssuingAuthorizationListParams{
      Card: stripe.String("ic_1CoYuRKEl2ztzE5GIEDjQiUI"),
      Status: stripe.String(string(stripe.IssuingAuthorizationStatusPending)),
    }
    i, _ := authorization.List(params)
    
    // Set your secret key: remember to change this to your live secret key in production
    // See your keys here: https://dashboard.stripe.com/account/apikeys
    StripeConfiguration.SetApiKey("sk_test_4eC39HqLyjWDarjtT1zdp7dc");
    
    var options = new AuthorizationListOptions {
        Card = "ic_1CoYuRKEl2ztzE5GIEDjQiUI",
        Status = "pending",
    };
    
    var service = new AuthorizationService();
    StripeList<Authorization> response = service.List(options);
    

    By automating this process, you can quickly generate card statements every month for each of your cardholders.

    Questions?

    We're always happy to help with code or other questions you might have! Search our documentation, contact support, or connect with our sales team. You can also chat live with other developers in #stripe on freenode.

    Was this page helpful? Yes No

    Send

    Thank you for helping improve Stripe's documentation. If you need help or have any questions, please consider contacting support.