SQL Server Stripe: List all Invoices

Back to Index

Attempts payment on an invoice out of the normal collection schedule.

Documentation: https://stripe.com/docs/api/curl#list_invoices

CURL Command

curl https://api.stripe.com/v1/invoices?limit=3 \
   -u STRIPE_SECRET_KEY: \
   -G

SQL Server Example

CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @iTmp0 int
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @rest int
    EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Rest', @rest OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    DECLARE @success int

    --  URL: https://api.stripe.com/v1/invoices?limit=3
    DECLARE @bTls int
    SELECT @bTls = 1
    DECLARE @port int
    SELECT @port = 443
    DECLARE @bAutoReconnect int
    SELECT @bAutoReconnect = 1
    EXEC sp_OAMethod @rest, 'Connect', @success OUT, 'api.stripe.com', STR(@port), STR(@bTls), STR(@bAutoReconnect)
    IF STR(@success) <> 1
      BEGIN

        EXEC sp_OAGetProperty @rest, 'ConnectFailReason', @iTmp0 OUT
        PRINT 'ConnectFailReason: ' + @iTmp0
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rest
        RETURN
      END

    EXEC sp_OAMethod @rest, 'SetAuthBasic', @success OUT, 'STRIPE_SECRET_KEY', ''

    DECLARE @sbResponseBody int
    EXEC @hr = sp_OACreate 'Chilkat_9_5_0.StringBuilder', @sbResponseBody OUT

    EXEC sp_OAMethod @rest, 'FullRequestNoBodySb', @success OUT, 'GET', '/v1/invoices?limit=3', STR(@sbResponseBody)
    IF STR(@success) <> 1
      BEGIN
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rest
        EXEC @hr = sp_OADestroy @sbResponseBody
        RETURN
      END

    DECLARE @jsonResponse int
    EXEC @hr = sp_OACreate 'Chilkat_9_5_0.JsonObject', @jsonResponse OUT

    EXEC sp_OAMethod @jsonResponse, 'LoadSb', @success OUT, STR(@sbResponseBody)

    DECLARE @object nvarchar(4000)

    DECLARE @url nvarchar(4000)

    DECLARE @has_more int

    DECLARE @i int

    DECLARE @count_i int

    DECLARE @id nvarchar(4000)

    DECLARE @amount_due int

    DECLARE @application_fee int

    DECLARE @attempt_count int

    DECLARE @attempted int

    DECLARE @billing nvarchar(4000)

    DECLARE @charge int

    DECLARE @closed int

    DECLARE @currency nvarchar(4000)

    DECLARE @customer nvarchar(4000)

    DECLARE @date int

    DECLARE @description int

    DECLARE @discount int

    DECLARE @due_date int

    DECLARE @ending_balance int

    DECLARE @forgiven int

    DECLARE @linesHas_more int

    DECLARE @linesObject nvarchar(4000)

    DECLARE @linesUrl nvarchar(4000)

    DECLARE @livemode int

    DECLARE @next_payment_attempt int

    DECLARE @number nvarchar(4000)

    DECLARE @paid int

    DECLARE @period_end int

    DECLARE @period_start int

    DECLARE @receipt_number int

    DECLARE @starting_balance int

    DECLARE @statement_descriptor int

    DECLARE @subscription int

    DECLARE @subtotal int

    DECLARE @tax int

    DECLARE @tax_percent int

    DECLARE @total int

    DECLARE @webhooks_delivered_at int

    DECLARE @j int

    DECLARE @count_j int

    DECLARE @amount int

    DECLARE @description_str nvarchar(4000)

    DECLARE @discountable int

    DECLARE @periodStart int

    DECLARE @periodEnd int

    DECLARE @planId nvarchar(4000)

    DECLARE @planObject nvarchar(4000)

    DECLARE @planAmount int

    DECLARE @planCreated int

    DECLARE @planCurrency nvarchar(4000)

    DECLARE @planInterval nvarchar(4000)

    DECLARE @planInterval_count int

    DECLARE @planLivemode int

    DECLARE @planName nvarchar(4000)

    DECLARE @planStatement_descriptor int

    DECLARE @planTrial_period_days int

    DECLARE @proration int

    DECLARE @quantity int

    DECLARE @subscription_item nvarchar(4000)

    DECLARE @type nvarchar(4000)

    EXEC sp_OAMethod @jsonResponse, 'StringOf', @object OUT, 'object'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @url OUT, 'url'
    EXEC sp_OAMethod @jsonResponse, 'BoolOf', @has_more OUT, 'has_more'
    SELECT @i = 0
    EXEC sp_OAMethod @jsonResponse, 'SizeOfArray', @count_i OUT, 'data'
    WHILE STR(@i) < STR(@count_i)
      BEGIN
        EXEC sp_OASetProperty @jsonResponse, 'I', STR(@i)
        EXEC sp_OAMethod @jsonResponse, 'StringOf', @id OUT, 'data[i].id'
        EXEC sp_OAMethod @jsonResponse, 'StringOf', @object OUT, 'data[i].object'
        EXEC sp_OAMethod @jsonResponse, 'IntOf', @amount_due OUT, 'data[i].amount_due'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @application_fee OUT, 'data[i].application_fee'
        EXEC sp_OAMethod @jsonResponse, 'IntOf', @attempt_count OUT, 'data[i].attempt_count'
        EXEC sp_OAMethod @jsonResponse, 'BoolOf', @attempted OUT, 'data[i].attempted'
        EXEC sp_OAMethod @jsonResponse, 'StringOf', @billing OUT, 'data[i].billing'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @charge OUT, 'data[i].charge'
        EXEC sp_OAMethod @jsonResponse, 'BoolOf', @closed OUT, 'data[i].closed'
        EXEC sp_OAMethod @jsonResponse, 'StringOf', @currency OUT, 'data[i].currency'
        EXEC sp_OAMethod @jsonResponse, 'StringOf', @customer OUT, 'data[i].customer'
        EXEC sp_OAMethod @jsonResponse, 'IntOf', @date OUT, 'data[i].date'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @description OUT, 'data[i].description'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @discount OUT, 'data[i].discount'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @due_date OUT, 'data[i].due_date'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @ending_balance OUT, 'data[i].ending_balance'
        EXEC sp_OAMethod @jsonResponse, 'BoolOf', @forgiven OUT, 'data[i].forgiven'
        EXEC sp_OAMethod @jsonResponse, 'BoolOf', @linesHas_more OUT, 'data[i].lines.has_more'
        EXEC sp_OAMethod @jsonResponse, 'StringOf', @linesObject OUT, 'data[i].lines.object'
        EXEC sp_OAMethod @jsonResponse, 'StringOf', @linesUrl OUT, 'data[i].lines.url'
        EXEC sp_OAMethod @jsonResponse, 'BoolOf', @livemode OUT, 'data[i].livemode'
        EXEC sp_OAMethod @jsonResponse, 'IntOf', @next_payment_attempt OUT, 'data[i].next_payment_attempt'
        EXEC sp_OAMethod @jsonResponse, 'StringOf', @number OUT, 'data[i].number'
        EXEC sp_OAMethod @jsonResponse, 'BoolOf', @paid OUT, 'data[i].paid'
        EXEC sp_OAMethod @jsonResponse, 'IntOf', @period_end OUT, 'data[i].period_end'
        EXEC sp_OAMethod @jsonResponse, 'IntOf', @period_start OUT, 'data[i].period_start'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @receipt_number OUT, 'data[i].receipt_number'
        EXEC sp_OAMethod @jsonResponse, 'IntOf', @starting_balance OUT, 'data[i].starting_balance'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @statement_descriptor OUT, 'data[i].statement_descriptor'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @subscription OUT, 'data[i].subscription'
        EXEC sp_OAMethod @jsonResponse, 'IntOf', @subtotal OUT, 'data[i].subtotal'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @tax OUT, 'data[i].tax'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @tax_percent OUT, 'data[i].tax_percent'
        EXEC sp_OAMethod @jsonResponse, 'IntOf', @total OUT, 'data[i].total'
        EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @webhooks_delivered_at OUT, 'data[i].webhooks_delivered_at'
        SELECT @j = 0
        EXEC sp_OAMethod @jsonResponse, 'SizeOfArray', @count_j OUT, 'data[i].lines.data'
        WHILE STR(@j) < STR(@count_j)
          BEGIN
            EXEC sp_OASetProperty @jsonResponse, 'J', STR(@j)
            EXEC sp_OAMethod @jsonResponse, 'StringOf', @id OUT, 'data[i].lines.data[j].id'
            EXEC sp_OAMethod @jsonResponse, 'StringOf', @object OUT, 'data[i].lines.data[j].object'
            EXEC sp_OAMethod @jsonResponse, 'IntOf', @amount OUT, 'data[i].lines.data[j].amount'
            EXEC sp_OAMethod @jsonResponse, 'StringOf', @currency OUT, 'data[i].lines.data[j].currency'
            EXEC sp_OAMethod @jsonResponse, 'StringOf', @description_str OUT, 'data[i].lines.data[j].description'
            EXEC sp_OAMethod @jsonResponse, 'BoolOf', @discountable OUT, 'data[i].lines.data[j].discountable'
            EXEC sp_OAMethod @jsonResponse, 'BoolOf', @livemode OUT, 'data[i].lines.data[j].livemode'
            EXEC sp_OAMethod @jsonResponse, 'IntOf', @periodStart OUT, 'data[i].lines.data[j].period.start'
            EXEC sp_OAMethod @jsonResponse, 'IntOf', @periodEnd OUT, 'data[i].lines.data[j].period.end'
            EXEC sp_OAMethod @jsonResponse, 'StringOf', @planId OUT, 'data[i].lines.data[j].plan.id'
            EXEC sp_OAMethod @jsonResponse, 'StringOf', @planObject OUT, 'data[i].lines.data[j].plan.object'
            EXEC sp_OAMethod @jsonResponse, 'IntOf', @planAmount OUT, 'data[i].lines.data[j].plan.amount'
            EXEC sp_OAMethod @jsonResponse, 'IntOf', @planCreated OUT, 'data[i].lines.data[j].plan.created'
            EXEC sp_OAMethod @jsonResponse, 'StringOf', @planCurrency OUT, 'data[i].lines.data[j].plan.currency'
            EXEC sp_OAMethod @jsonResponse, 'StringOf', @planInterval OUT, 'data[i].lines.data[j].plan.interval'
            EXEC sp_OAMethod @jsonResponse, 'IntOf', @planInterval_count OUT, 'data[i].lines.data[j].plan.interval_count'
            EXEC sp_OAMethod @jsonResponse, 'BoolOf', @planLivemode OUT, 'data[i].lines.data[j].plan.livemode'
            EXEC sp_OAMethod @jsonResponse, 'StringOf', @planName OUT, 'data[i].lines.data[j].plan.name'
            EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @planStatement_descriptor OUT, 'data[i].lines.data[j].plan.statement_descriptor'
            EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @planTrial_period_days OUT, 'data[i].lines.data[j].plan.trial_period_days'
            EXEC sp_OAMethod @jsonResponse, 'BoolOf', @proration OUT, 'data[i].lines.data[j].proration'
            EXEC sp_OAMethod @jsonResponse, 'IntOf', @quantity OUT, 'data[i].lines.data[j].quantity'
            EXEC sp_OAMethod @jsonResponse, 'IsNullOf', @subscription OUT, 'data[i].lines.data[j].subscription'
            EXEC sp_OAMethod @jsonResponse, 'StringOf', @subscription_item OUT, 'data[i].lines.data[j].subscription_item'
            EXEC sp_OAMethod @jsonResponse, 'StringOf', @type OUT, 'data[i].lines.data[j].type'
            SELECT @j = STR(@j) + 1
          END
        SELECT @i = STR(@i) + 1
      END

    EXEC @hr = sp_OADestroy @rest
    EXEC @hr = sp_OADestroy @sbResponseBody
    EXEC @hr = sp_OADestroy @jsonResponse


END
GO

Sample JSON Response Body

{
  "object": "list",
  "url": "/v1/invoices",
  "has_more": false,
  "data": [
    {
      "id": "in_1BnETLGswQrCoh0X6M67Qy9c",
      "object": "invoice",
      "amount_due": 0,
      "application_fee": null,
      "attempt_count": 0,
      "attempted": false,
      "billing": "charge_automatically",
      "charge": null,
      "closed": false,
      "currency": "usd",
      "customer": "cus_CBbggkUyLoz3pe",
      "date": 1516662783,
      "description": null,
      "discount": null,
      "due_date": null,
      "ending_balance": null,
      "forgiven": false,
      "lines": {
        "data": [
          {
            "id": "sub_CBbgC3EaFZqN3Q",
            "object": "line_item",
            "amount": 999,
            "currency": "usd",
            "description": "1x Silver Express (at $9.99)",
            "discountable": true,
            "livemode": true,
            "metadata": {},
            "period": {
              "start": 1521760383,
              "end": 1524438783
            },
            "plan": {
              "id": "gold",
              "object": "plan",
              "amount": 2000,
              "created": 1516662783,
              "currency": "usd",
              "interval": "month",
              "interval_count": 1,
              "livemode": false,
              "metadata": {},
              "name": "T-shirt",
              "statement_descriptor": null,
              "trial_period_days": null
            },
            "proration": false,
            "quantity": 1,
            "subscription": null,
            "subscription_item": "si_CBbgZxCVF3Ha7P",
            "type": "subscription"
          }
        ],
        "has_more": false,
        "object": "list",
        "url": "/v1/invoices/in_1BnETLGswQrCoh0X6M67Qy9c/lines"
      },
      "livemode": false,
      "metadata": {},
      "next_payment_attempt": 1516666383,
      "number": "330a34b8d5-0001",
      "paid": false,
      "period_end": 1516662783,
      "period_start": 1516662783,
      "receipt_number": null,
      "starting_balance": 0,
      "statement_descriptor": null,
      "subscription": null,
      "subtotal": 0,
      "tax": null,
      "tax_percent": null,
      "total": 0,
      "webhooks_delivered_at": null
    }
  ]
}