Customers
12 endpoints. Each needs an API key or OAuth token with the scope shown; the key already names its store, so paths start at /v1/store. Generated from the live contract; also in openapi.json.
Customers with spend, segments and tab counts
/v1/store/customersOr name the store: GET /v1/stores/{storeId}/customers
Parameters
tab"all" | "new" | "returning" | "high_value" | "at_risk" | "blocked"queryqstring | nullquerycountrystring | nullquerysort"recent" | "spent" | "orders" | "name" | "first" | "country"querydir"asc" | "desc" | nullquerycursorstring | nullquerylimitinteger | stringquery
Response ListCustomersResponse
itemsCustomerRow[]requirednextCursorCursor | nullrequiredcountsCustomerCountsrequiredcountriesstring[]required
Example
curl "https://api.shopfa.st/v1/store/customers" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/customers', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"GET",
"https://api.shopfa.st/v1/store/customers",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/customers", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)Try it with your key
Every customer matching the filters, as CSV
/v1/store/customers/exportOr name the store: GET /v1/stores/{storeId}/customers/export
Parameters
tab"all" | "new" | "returning" | "high_value" | "at_risk" | "blocked"queryqstring | nullquerycountrystring | nullquery
Response GrowthCsv
filenamestringrequiredcsvstringrequiredrowsintegerrequired
Example
curl "https://api.shopfa.st/v1/store/customers/export" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/customers/export', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"GET",
"https://api.shopfa.st/v1/store/customers/export",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/customers/export", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)Try it with your key
Pairs of customers that look like the same person
/v1/store/customers/duplicatesOr name the store: GET /v1/stores/{storeId}/customers/duplicates
Response ListCustomerDuplicatesResponse
candidatesDuplicateCandidate[]required
Example
curl "https://api.shopfa.st/v1/store/customers/duplicates" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/customers/duplicates', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"GET",
"https://api.shopfa.st/v1/store/customers/duplicates",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/customers/duplicates", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)Try it with your key
A customer with orders, products, licenses, notes and emails
/v1/store/customers/{customerId}Or name the store: GET /v1/stores/{storeId}/customers/{customerId}
Parameters
customerIdcus_…pathrequired
Response CustomerDetail
idCustomerIdrequiredemailEmailrequirednamestringrequiredcountryCountryCoderequiredordersintegerrequiredspentMinorMinorUnitsrequiredcurrencyCurrencyCoderequiredfirstOrderAtTimestamp | nullrequiredlastOrderAtTimestamp | nullrequiredtagsstring[]required
21 more fields
segmentsCustomerSegment[]requiredblockedbooleanrequiredcreatedAtTimestamprequiredaverageOrderMinorMinorUnitsrequiredrefundedMinorMinorUnitsrequiredrefundsintegerrequireddisputesintegerrequiredblockedReasonstringrequiredblockedAtTimestamp | nullrequirednotesCustomerNote[]requiredorderListCustomerOrder[]requiredproductsOwnedOwnedProduct[]requiredlicensesOwnedLicense[]requiredemailsEmailLogEntry[]requiredreviewsintegerrequiredmergedFromobject[]requiredidCustomerIdrequiredemailEmailrequired
affiliateCodestringrequireddiscordCustomerDiscordrequiredsessionsCustomerSession[]requiredtimelineCustomerTimelineEntry[]requiredstoreCreditMinorMinorUnits | nullrequired
Example
curl "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"GET",
"https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)Try it with your key
Set a customer's tags
/v1/store/customers/{customerId}Or name the store: PATCH /v1/stores/{storeId}/customers/{customerId}
Parameters
customerIdcus_…pathrequired
Body
tagsstring[]required
Response CustomerDetail
idCustomerIdrequiredemailEmailrequirednamestringrequiredcountryCountryCoderequiredordersintegerrequiredspentMinorMinorUnitsrequiredcurrencyCurrencyCoderequiredfirstOrderAtTimestamp | nullrequiredlastOrderAtTimestamp | nullrequiredtagsstring[]required
21 more fields
segmentsCustomerSegment[]requiredblockedbooleanrequiredcreatedAtTimestamprequiredaverageOrderMinorMinorUnitsrequiredrefundedMinorMinorUnitsrequiredrefundsintegerrequireddisputesintegerrequiredblockedReasonstringrequiredblockedAtTimestamp | nullrequirednotesCustomerNote[]requiredorderListCustomerOrder[]requiredproductsOwnedOwnedProduct[]requiredlicensesOwnedLicense[]requiredemailsEmailLogEntry[]requiredreviewsintegerrequiredmergedFromobject[]requiredidCustomerIdrequiredemailEmailrequired
affiliateCodestringrequireddiscordCustomerDiscordrequiredsessionsCustomerSession[]requiredtimelineCustomerTimelineEntry[]requiredstoreCreditMinorMinorUnits | nullrequired
Example
curl -X PATCH "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk" \
-H "Authorization: Bearer $SHOPFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tags": [
"string"
]
}'const res = await fetch('https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk', {
method: 'PATCH',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"tags": [
"string"
]
}),
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"PATCH",
"https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
json={
"tags": [
"string"
]
},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("PATCH", "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk", strings.NewReader(`{
"tags": [
"string"
]
}`))
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)Try it with your key
Block or unblock a customer from checking out
/v1/store/customers/{customerId}/blockOr name the store: PUT /v1/stores/{storeId}/customers/{customerId}/block
Parameters
customerIdcus_…pathrequired
Body
blockedbooleanrequiredreasonstring
Response CustomerDetail
idCustomerIdrequiredemailEmailrequirednamestringrequiredcountryCountryCoderequiredordersintegerrequiredspentMinorMinorUnitsrequiredcurrencyCurrencyCoderequiredfirstOrderAtTimestamp | nullrequiredlastOrderAtTimestamp | nullrequiredtagsstring[]required
21 more fields
segmentsCustomerSegment[]requiredblockedbooleanrequiredcreatedAtTimestamprequiredaverageOrderMinorMinorUnitsrequiredrefundedMinorMinorUnitsrequiredrefundsintegerrequireddisputesintegerrequiredblockedReasonstringrequiredblockedAtTimestamp | nullrequirednotesCustomerNote[]requiredorderListCustomerOrder[]requiredproductsOwnedOwnedProduct[]requiredlicensesOwnedLicense[]requiredemailsEmailLogEntry[]requiredreviewsintegerrequiredmergedFromobject[]requiredidCustomerIdrequiredemailEmailrequired
affiliateCodestringrequireddiscordCustomerDiscordrequiredsessionsCustomerSession[]requiredtimelineCustomerTimelineEntry[]requiredstoreCreditMinorMinorUnits | nullrequired
Example
curl -X PUT "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/block" \
-H "Authorization: Bearer $SHOPFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"blocked": false,
"reason": ""
}'const res = await fetch('https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/block', {
method: 'PUT',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"blocked": false,
"reason": ""
}),
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"PUT",
"https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/block",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
json={
"blocked": False,
"reason": ""
},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("PUT", "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/block", strings.NewReader(`{
"blocked": false,
"reason": ""
}`))
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)Try it with your key
Add a private note
/v1/store/customers/{customerId}/notesOr name the store: POST /v1/stores/{storeId}/customers/{customerId}/notes
Parameters
customerIdcus_…pathrequired
Body
bodystringrequired
Response CustomerDetail
idCustomerIdrequiredemailEmailrequirednamestringrequiredcountryCountryCoderequiredordersintegerrequiredspentMinorMinorUnitsrequiredcurrencyCurrencyCoderequiredfirstOrderAtTimestamp | nullrequiredlastOrderAtTimestamp | nullrequiredtagsstring[]required
21 more fields
segmentsCustomerSegment[]requiredblockedbooleanrequiredcreatedAtTimestamprequiredaverageOrderMinorMinorUnitsrequiredrefundedMinorMinorUnitsrequiredrefundsintegerrequireddisputesintegerrequiredblockedReasonstringrequiredblockedAtTimestamp | nullrequirednotesCustomerNote[]requiredorderListCustomerOrder[]requiredproductsOwnedOwnedProduct[]requiredlicensesOwnedLicense[]requiredemailsEmailLogEntry[]requiredreviewsintegerrequiredmergedFromobject[]requiredidCustomerIdrequiredemailEmailrequired
affiliateCodestringrequireddiscordCustomerDiscordrequiredsessionsCustomerSession[]requiredtimelineCustomerTimelineEntry[]requiredstoreCreditMinorMinorUnits | nullrequired
Example
curl -X POST "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/notes" \
-H "Authorization: Bearer $SHOPFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"body": "string"
}'const res = await fetch('https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/notes', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"body": "string"
}),
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"POST",
"https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/notes",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
json={
"body": "string"
},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/notes", strings.NewReader(`{
"body": "string"
}`))
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)Try it with your key
Delete a note
/v1/store/customers/{customerId}/notes/{noteId}Or name the store: DELETE /v1/stores/{storeId}/customers/{customerId}/notes/{noteId}
Parameters
customerIdcus_…pathrequirednoteIdcnote_…pathrequired
Response CustomerDetail
idCustomerIdrequiredemailEmailrequirednamestringrequiredcountryCountryCoderequiredordersintegerrequiredspentMinorMinorUnitsrequiredcurrencyCurrencyCoderequiredfirstOrderAtTimestamp | nullrequiredlastOrderAtTimestamp | nullrequiredtagsstring[]required
21 more fields
segmentsCustomerSegment[]requiredblockedbooleanrequiredcreatedAtTimestamprequiredaverageOrderMinorMinorUnitsrequiredrefundedMinorMinorUnitsrequiredrefundsintegerrequireddisputesintegerrequiredblockedReasonstringrequiredblockedAtTimestamp | nullrequirednotesCustomerNote[]requiredorderListCustomerOrder[]requiredproductsOwnedOwnedProduct[]requiredlicensesOwnedLicense[]requiredemailsEmailLogEntry[]requiredreviewsintegerrequiredmergedFromobject[]requiredidCustomerIdrequiredemailEmailrequired
affiliateCodestringrequireddiscordCustomerDiscordrequiredsessionsCustomerSession[]requiredtimelineCustomerTimelineEntry[]requiredstoreCreditMinorMinorUnits | nullrequired
Example
curl -X DELETE "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/notes/cnote_0123456789abcdefghjk" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/notes/cnote_0123456789abcdefghjk', {
method: 'DELETE',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"DELETE",
"https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/notes/cnote_0123456789abcdefghjk",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("DELETE", "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/notes/cnote_0123456789abcdefghjk", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)Try it with your key
Merge another customer into this one: orders, reviews, notes, tags and emails move over
/v1/store/customers/{customerId}/mergeOr name the store: POST /v1/stores/{storeId}/customers/{customerId}/merge
Parameters
customerIdcus_…pathrequired
Body
sourceIdcus_…required
Response CustomerDetail
idCustomerIdrequiredemailEmailrequirednamestringrequiredcountryCountryCoderequiredordersintegerrequiredspentMinorMinorUnitsrequiredcurrencyCurrencyCoderequiredfirstOrderAtTimestamp | nullrequiredlastOrderAtTimestamp | nullrequiredtagsstring[]required
21 more fields
segmentsCustomerSegment[]requiredblockedbooleanrequiredcreatedAtTimestamprequiredaverageOrderMinorMinorUnitsrequiredrefundedMinorMinorUnitsrequiredrefundsintegerrequireddisputesintegerrequiredblockedReasonstringrequiredblockedAtTimestamp | nullrequirednotesCustomerNote[]requiredorderListCustomerOrder[]requiredproductsOwnedOwnedProduct[]requiredlicensesOwnedLicense[]requiredemailsEmailLogEntry[]requiredreviewsintegerrequiredmergedFromobject[]requiredidCustomerIdrequiredemailEmailrequired
affiliateCodestringrequireddiscordCustomerDiscordrequiredsessionsCustomerSession[]requiredtimelineCustomerTimelineEntry[]requiredstoreCreditMinorMinorUnits | nullrequired
Example
curl -X POST "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/merge" \
-H "Authorization: Bearer $SHOPFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sourceId": "cus_0123456789abcdefghjk"
}'const res = await fetch('https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/merge', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"sourceId": "cus_0123456789abcdefghjk"
}),
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"POST",
"https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/merge",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
json={
"sourceId": "cus_0123456789abcdefghjk"
},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/merge", strings.NewReader(`{
"sourceId": "cus_0123456789abcdefghjk"
}`))
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)Try it with your key
A customer's store credit balance and history
/v1/store/customers/{customerId}/creditOr name the store: GET /v1/stores/{storeId}/customers/{customerId}/credit
Parameters
customerIdcus_…pathrequired
Response CustomerCredit
customerIdCustomerIdrequiredcurrencyCurrencyCoderequiredbalanceMinorMinorUnitsrequiredentriesStoreCreditEntry[]required
Example
curl "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/credit" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/credit', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"GET",
"https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/credit",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/credit", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)Try it with your key
Add or take off store credit
/v1/store/customers/{customerId}/creditOr name the store: POST /v1/stores/{storeId}/customers/{customerId}/credit
Parameters
customerIdcus_…pathrequired
Body
amountMinorintegerrequirednotestring
Response CustomerCredit
customerIdCustomerIdrequiredcurrencyCurrencyCoderequiredbalanceMinorMinorUnitsrequiredentriesStoreCreditEntry[]required
Example
curl -X POST "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/credit" \
-H "Authorization: Bearer $SHOPFAST_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amountMinor": 0,
"note": ""
}'const res = await fetch('https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/credit', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"amountMinor": 0,
"note": ""
}),
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"POST",
"https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/credit",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
json={
"amountMinor": 0,
"note": ""
},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/credit", strings.NewReader(`{
"amountMinor": 0,
"note": ""
}`))
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)Try it with your key
A customer's subscriptions with auto-renew state
/v1/store/customers/{customerId}/auto-renewOr name the store: GET /v1/stores/{storeId}/customers/{customerId}/auto-renew
Parameters
customerIdcus_…pathrequired
Response SellerAutoRenewList
subscriptionsSellerAutoRenewSubscription[]required
Example
curl "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/auto-renew" \
-H "Authorization: Bearer $SHOPFAST_API_KEY"const res = await fetch('https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/auto-renew', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
},
});
if (!res.ok) throw new Error((await res.json()).detail);
const data = await res.json();import os, requests
res = requests.request(
"GET",
"https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/auto-renew",
headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
)
res.raise_for_status()
data = res.json()req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/customers/cus_0123456789abcdefghjk/auto-renew", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
res, err := http.DefaultClient.Do(req)