Visual Basic 6.0 Stripe: Create an Invoice

Back to Index

Creates a customer invoice object.

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

CURL Command

curl https://api.stripe.com/v1/invoices \
   -u STRIPE_SECRET_KEY: \
   -d customer=cus_CBbg9PmQ9sLbmo \
   -X POST

Visual Basic 6.0 Example

Dim rest As New ChilkatRest
Dim success As Long

'  URL: https://api.stripe.com/v1/invoices
Dim bTls As Long
bTls = 1
Dim port As Long
port = 443
Dim bAutoReconnect As Long
bAutoReconnect = 1
success = rest.Connect("api.stripe.com",port,bTls,bAutoReconnect)
If (success <> 1) Then
    Debug.Print "ConnectFailReason: " & rest.ConnectFailReason
    Debug.Print rest.LastErrorText
    Exit Sub
End If

success = rest.SetAuthBasic("STRIPE_SECRET_KEY","")

success = rest.AddQueryParam("customer","cus_CBbg9PmQ9sLbmo")

Dim strResponseBody As String
strResponseBody = rest.FullRequestFormUrlEncoded("POST","/v1/invoices")
If (rest.LastMethodSuccess <> 1) Then
    Debug.Print rest.LastErrorText
    Exit Sub
End If

Dim jsonResponse As New ChilkatJsonObject
success = jsonResponse.Load(strResponseBody)

Dim id As String
Dim object As String
Dim amount_due As Long
Dim application_fee As Long
Dim attempt_count As Long
Dim attempted As Long
Dim billing As String
Dim charge As Long
Dim closed As Long
Dim currency As String
Dim customer As String
Dim date As Long
Dim description As Long
Dim discount As Long
Dim due_date As Long
Dim ending_balance As Long
Dim forgiven As Long
Dim linesHas_more As Long
Dim linesObject As String
Dim linesUrl As String
Dim livemode As Long
Dim next_payment_attempt As Long
Dim number As String
Dim paid As Long
Dim period_end As Long
Dim period_start As Long
Dim receipt_number As Long
Dim starting_balance As Long
Dim statement_descriptor As Long
Dim subscription As Long
Dim subtotal As Long
Dim tax As Long
Dim tax_percent As Long
Dim total As Long
Dim webhooks_delivered_at As Long
Dim i As Long
Dim count_i As Long
Dim amount As Long
Dim description_str As String
Dim discountable As Long
Dim periodStart As Long
Dim periodEnd As Long
Dim plan As Long
Dim proration As Long
Dim quantity As Long
Dim type As String

id = jsonResponse.StringOf("id")
object = jsonResponse.StringOf("object")
amount_due = jsonResponse.IntOf("amount_due")
application_fee = jsonResponse.IsNullOf("application_fee")
attempt_count = jsonResponse.IntOf("attempt_count")
attempted = jsonResponse.BoolOf("attempted")
billing = jsonResponse.StringOf("billing")
charge = jsonResponse.IsNullOf("charge")
closed = jsonResponse.BoolOf("closed")
currency = jsonResponse.StringOf("currency")
customer = jsonResponse.StringOf("customer")
date = jsonResponse.IntOf("date")
description = jsonResponse.IsNullOf("description")
discount = jsonResponse.IsNullOf("discount")
due_date = jsonResponse.IsNullOf("due_date")
ending_balance = jsonResponse.IsNullOf("ending_balance")
forgiven = jsonResponse.BoolOf("forgiven")
linesHas_more = jsonResponse.BoolOf("lines.has_more")
linesObject = jsonResponse.StringOf("lines.object")
linesUrl = jsonResponse.StringOf("lines.url")
livemode = jsonResponse.BoolOf("livemode")
next_payment_attempt = jsonResponse.IntOf("next_payment_attempt")
number = jsonResponse.StringOf("number")
paid = jsonResponse.BoolOf("paid")
period_end = jsonResponse.IntOf("period_end")
period_start = jsonResponse.IntOf("period_start")
receipt_number = jsonResponse.IsNullOf("receipt_number")
starting_balance = jsonResponse.IntOf("starting_balance")
statement_descriptor = jsonResponse.IsNullOf("statement_descriptor")
subscription = jsonResponse.IsNullOf("subscription")
subtotal = jsonResponse.IntOf("subtotal")
tax = jsonResponse.IsNullOf("tax")
tax_percent = jsonResponse.IsNullOf("tax_percent")
total = jsonResponse.IntOf("total")
webhooks_delivered_at = jsonResponse.IsNullOf("webhooks_delivered_at")
i = 0
count_i = jsonResponse.SizeOfArray("lines.data")
Do While i < count_i
    jsonResponse.I = i
    id = jsonResponse.StringOf("lines.data[i].id")
    object = jsonResponse.StringOf("lines.data[i].object")
    amount = jsonResponse.IntOf("lines.data[i].amount")
    currency = jsonResponse.StringOf("lines.data[i].currency")
    description_str = jsonResponse.StringOf("lines.data[i].description")
    discountable = jsonResponse.BoolOf("lines.data[i].discountable")
    livemode = jsonResponse.BoolOf("lines.data[i].livemode")
    periodStart = jsonResponse.IntOf("lines.data[i].period.start")
    periodEnd = jsonResponse.IntOf("lines.data[i].period.end")
    plan = jsonResponse.IsNullOf("lines.data[i].plan")
    proration = jsonResponse.BoolOf("lines.data[i].proration")
    quantity = jsonResponse.IsNullOf("lines.data[i].quantity")
    subscription = jsonResponse.IsNullOf("lines.data[i].subscription")
    type = jsonResponse.StringOf("lines.data[i].type")
    i = i + 1
Loop

Sample JSON Response Body

{
  "id": "in_1BnETLGswQrCoh0XR7p1RCtV",
  "object": "invoice",
  "amount_due": 0,
  "application_fee": null,
  "attempt_count": 0,
  "attempted": false,
  "billing": "charge_automatically",
  "charge": null,
  "closed": false,
  "currency": "usd",
  "customer": "cus_CBbg9PmQ9sLbmo",
  "date": 1516662783,
  "description": null,
  "discount": null,
  "due_date": null,
  "ending_balance": null,
  "forgiven": false,
  "lines": {
    "data": [
      {
        "id": "ii_1BnETLGswQrCoh0XsAcSzoLf",
        "object": "line_item",
        "amount": 0,
        "currency": "usd",
        "description": "My First Invoice Item (created for API docs)",
        "discountable": true,
        "livemode": false,
        "metadata": {},
        "period": {
          "start": 1516662783,
          "end": 1516662783
        },
        "plan": null,
        "proration": false,
        "quantity": null,
        "subscription": null,
        "type": "invoiceitem"
      }
    ],
    "has_more": false,
    "object": "list",
    "url": "/v1/invoices/in_1BnETLGswQrCoh0XR7p1RCtV/lines"
  },
  "livemode": false,
  "metadata": {},
  "next_payment_attempt": 1516666383,
  "number": "36eba31eaa-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
}