DevelopersAPI reference

Online payments API

REST endpoints for online payments in SKUFlow: 9 operations with parameters, request and response fields, permissions and curl examples.

Base URL: https://app.skuflow.ai/api. Every call needs Authorization: Bearer skf_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.

OperationEndpointRisk
Online payments: the Stripe account and settingsGET /organizations/{organizationId}/payment-accountread
Disconnect the Stripe accountDELETE /organizations/{organizationId}/payment-accountsensitive
Set up or continue online payments (Stripe onboarding link)POST /organizations/{organizationId}/payment-account/onboardingsensitive
Refresh the Stripe account's statusPOST /organizations/{organizationId}/payment-account/refreshwrite
Open the business's Stripe dashboardPOST /organizations/{organizationId}/payment-account/dashboard-linksensitive
Turn online payments, partial payments, tips or financing on or offPATCH /organizations/{organizationId}/payment-account/settingssensitive
Charge a card: open Stripe Checkout for an invoicePOST /organizations/{organizationId}/invoices/{invoiceId}/checkoutsensitive
A customer's saved payment methodGET /organizations/{organizationId}/customers/{customerId}/autopayread
Remove a customer's saved payment methodDELETE /organizations/{organizationId}/customers/{customerId}/autopaysensitive

Online payments: the Stripe account and settings

GET /organizations/{organizationId}/payment-account

Whether this business can take card and bank payments online: the server's Stripe configuration (never the key), the business's connected Stripe account's state (charges and payouts enabled, requirements still due, payout schedule) and the business's switches (online payments, partial payments, tips). Read-only; does not call Stripe (POST /payment-account/refresh does).

Permissionpayments.read (Owner, Admin, Staff)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolpaymentAccount_get (toolset invoices)

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/payment-account" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
configobject
config.configuredbooleanThe server has a usable Stripe key.
config.modeenum or nullOne of test, live.
config.problemstring or null
config.missingarray of stringEnvironment variables still to set.
config.webhooksConfiguredboolean
config.platformFeeBpsintegerDeprecated: the card rate of SKUFlow's fee in basis points (0); see platformFees.
config.platformFeesobjectSKUFlow's fee on each online payment: none by default (none). Stripe's own processing fees are billed by Stripe to the business.
config.platformFees.nonebooleanSKUFlow takes no fee on any payment (the default); Stripe bills its processing fees to the business.
config.platformFees.cardBpsintegerCard: basis points of amount + tip (0 by default).
config.platformFees.cardFixedCentsintegerCard: fixed cents per payment.
config.platformFees.achBpsintegerUS bank account (ACH): basis points.
config.platformFees.achCapCentsintegerUS bank account (ACH): the most the fee can be.
config.platformFees.cardstringThe card rate as shown, e.g. "3.2% + 30¢".
config.platformFees.achstringThe ACH rate as shown, e.g. "1%, max $10".
config.platformFees.financingBpsintegerAffirm and Klarna: basis points.
config.platformFees.financingFixedCentsintegerAffirm and Klarna: fixed cents.
config.platformFees.financingstringThe financing rate as shown, e.g. "7% + 30¢".
stateenumNOT_CONNECTED: no Stripe account; ONBOARDING: details not submitted; RESTRICTED: Stripe wants more or paused charges; ACTIVE: charges enabled. One of NOT_CONNECTED, ONBOARDING, RESTRICTED, ACTIVE.
availabilityobject
availability.availableboolean
availability.reasonenum or nullWhy customers cannot pay online: the server has no Stripe key, no account is connected, Stripe has not enabled charges yet, or the business turned online payments off. One of NOT_CONFIGURED, NOT_CONNECTED, NOT_ENABLED, TURNED_OFF.
accountobject or null
account.stripeAccountIdstring or nullThe business's connected Stripe account (acct_…), with its own full Stripe dashboard.
account.livemodeboolean
account.dashboardTypestring or nullThe Stripe dashboard the account has: full (every account set up now).
account.lossesCollectorstring or nullWho carries losses on payments: stripe (Managed Risk).
account.feesPayerstring or nullWho pays Stripe's processing fees: account (the business).
account.countrystring or null
account.defaultCurrencystring
account.businessNamestring or null
account.chargesEnabledboolean
account.payoutsEnabledboolean
account.detailsSubmittedboolean
account.cardPaymentsStatusstring or null
account.achPaymentsStatusstring or null
account.achEnabledbooleanCustomers can pay by US bank account (ACH debit).
account.financingobjectAffirm and Klarna.
account.financing.enabledbooleanPay over time is offered.
account.financing.affirmboolean
account.financing.klarnaboolean
account.financing.minCentsintegerOffered from this amount up.
account.financing.affirmStatusstring or nullStripe's Affirm capability: null (not requested), pending, active, inactive.
account.financing.klarnaStatusstring or nullStripe's Klarna capability.
account.requirementsDuearray of object
account.requirementsDue[].keystring
account.requirementsDue[].labelstring
account.requirementsDue[].pastDueboolean
account.requirementsDeadlinestring (date-time) or null
account.disabledReasonstring or null
account.payoutScheduleobject or null
account.payoutSchedule.intervalstring or null
account.payoutSchedule.delayDaysinteger or null
account.payoutSchedule.weeklyAnchorstring or null
account.payoutSchedule.monthlyAnchorinteger or null
account.onlinePaymentsEnabledboolean
account.allowPartialPaymentsboolean
account.tipsEnabledboolean
account.connectedAtstring (date-time) or null
account.disconnectedAtstring (date-time) or null
account.lastSyncedAtstring (date-time) or null

Disconnect the Stripe account

DELETE /organizations/{organizationId}/payment-account

Destructive: unlinks the connected Stripe account. Pay online buttons disappear and saved customer cards are switched off. The account is the business's own and stays at Stripe (its balance still pays out); earlier online payments can still be refunded while Stripe lets SKUFlow reach the account, else from the Stripe dashboard. Setting up again creates a new account.

Permissionpayments.manage (Owner, Admin)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolpaymentAccount_disconnect (toolset invoices)
ApprovalWaits for your approval in SKUFlow when called with an API key or a connected app: the first call answers 428 APPROVAL_REQUIRED; once you approve it, repeat the call with the X-SKUFlow-Approval header. See Approvals.

Example

curl -X DELETE "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/payment-account" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
configobject
config.configuredbooleanThe server has a usable Stripe key.
config.modeenum or nullOne of test, live.
config.problemstring or null
config.missingarray of stringEnvironment variables still to set.
config.webhooksConfiguredboolean
config.platformFeeBpsintegerDeprecated: the card rate of SKUFlow's fee in basis points (0); see platformFees.
config.platformFeesobjectSKUFlow's fee on each online payment: none by default (none). Stripe's own processing fees are billed by Stripe to the business.
config.platformFees.nonebooleanSKUFlow takes no fee on any payment (the default); Stripe bills its processing fees to the business.
config.platformFees.cardBpsintegerCard: basis points of amount + tip (0 by default).
config.platformFees.cardFixedCentsintegerCard: fixed cents per payment.
config.platformFees.achBpsintegerUS bank account (ACH): basis points.
config.platformFees.achCapCentsintegerUS bank account (ACH): the most the fee can be.
config.platformFees.cardstringThe card rate as shown, e.g. "3.2% + 30¢".
config.platformFees.achstringThe ACH rate as shown, e.g. "1%, max $10".
config.platformFees.financingBpsintegerAffirm and Klarna: basis points.
config.platformFees.financingFixedCentsintegerAffirm and Klarna: fixed cents.
config.platformFees.financingstringThe financing rate as shown, e.g. "7% + 30¢".
stateenumNOT_CONNECTED: no Stripe account; ONBOARDING: details not submitted; RESTRICTED: Stripe wants more or paused charges; ACTIVE: charges enabled. One of NOT_CONNECTED, ONBOARDING, RESTRICTED, ACTIVE.
availabilityobject
availability.availableboolean
availability.reasonenum or nullWhy customers cannot pay online: the server has no Stripe key, no account is connected, Stripe has not enabled charges yet, or the business turned online payments off. One of NOT_CONFIGURED, NOT_CONNECTED, NOT_ENABLED, TURNED_OFF.
accountobject or null
account.stripeAccountIdstring or nullThe business's connected Stripe account (acct_…), with its own full Stripe dashboard.
account.livemodeboolean
account.dashboardTypestring or nullThe Stripe dashboard the account has: full (every account set up now).
account.lossesCollectorstring or nullWho carries losses on payments: stripe (Managed Risk).
account.feesPayerstring or nullWho pays Stripe's processing fees: account (the business).
account.countrystring or null
account.defaultCurrencystring
account.businessNamestring or null
account.chargesEnabledboolean
account.payoutsEnabledboolean
account.detailsSubmittedboolean
account.cardPaymentsStatusstring or null
account.achPaymentsStatusstring or null
account.achEnabledbooleanCustomers can pay by US bank account (ACH debit).
account.financingobjectAffirm and Klarna.
account.financing.enabledbooleanPay over time is offered.
account.financing.affirmboolean
account.financing.klarnaboolean
account.financing.minCentsintegerOffered from this amount up.
account.financing.affirmStatusstring or nullStripe's Affirm capability: null (not requested), pending, active, inactive.
account.financing.klarnaStatusstring or nullStripe's Klarna capability.
account.requirementsDuearray of object
account.requirementsDue[].keystring
account.requirementsDue[].labelstring
account.requirementsDue[].pastDueboolean
account.requirementsDeadlinestring (date-time) or null
account.disabledReasonstring or null
account.payoutScheduleobject or null
account.payoutSchedule.intervalstring or null
account.payoutSchedule.delayDaysinteger or null
account.payoutSchedule.weeklyAnchorstring or null
account.payoutSchedule.monthlyAnchorinteger or null
account.onlinePaymentsEnabledboolean
account.allowPartialPaymentsboolean
account.tipsEnabledboolean
account.connectedAtstring (date-time) or null
account.disconnectedAtstring (date-time) or null
account.lastSyncedAtstring (date-time) or null

Set up or continue online payments (Stripe onboarding link)

POST /organizations/{organizationId}/payment-account/onboarding

GRANTS ACCESS / MONEY: creates the business's own Stripe account on first use (a connected account with a full Stripe dashboard where Stripe carries losses and bills its processing fees to the business; country US; card payments, transfers and ACH debits requested) and returns a fresh Stripe-hosted onboarding link (Account Link, valid for minutes) to send the owner to, where they also create their Stripe login. Stripe returns them to Settings → Payments. Calling it again continues setup on the same account. Needs payments.manage (owners and admins).

Permissionpayments.manage (Owner, Admin)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolpaymentAccount_onboard (toolset invoices)
ApprovalWaits for your approval in SKUFlow when called with an API key or a connected app: the first call answers 428 APPROVAL_REQUIRED; once you approve it, repeat the call with the X-SKUFlow-Approval header. See Approvals.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/payment-account/onboarding" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

201: the answer's fields
FieldTypeDescription
urlstringA Stripe-hosted page to send the person to.
expiresAtstring (date-time)

Refresh the Stripe account's status

POST /organizations/{organizationId}/payment-account/refresh

Asks Stripe for the connected account's current standing (charges and payouts enabled, requirements due, payout schedule) and stores it; webhooks do the same automatically. Returns the same shape as GET /payment-account.

Permissionpayments.manage (Owner, Admin)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolpaymentAccount_refresh (toolset invoices)

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/payment-account/refresh" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
configobject
config.configuredbooleanThe server has a usable Stripe key.
config.modeenum or nullOne of test, live.
config.problemstring or null
config.missingarray of stringEnvironment variables still to set.
config.webhooksConfiguredboolean
config.platformFeeBpsintegerDeprecated: the card rate of SKUFlow's fee in basis points (0); see platformFees.
config.platformFeesobjectSKUFlow's fee on each online payment: none by default (none). Stripe's own processing fees are billed by Stripe to the business.
config.platformFees.nonebooleanSKUFlow takes no fee on any payment (the default); Stripe bills its processing fees to the business.
config.platformFees.cardBpsintegerCard: basis points of amount + tip (0 by default).
config.platformFees.cardFixedCentsintegerCard: fixed cents per payment.
config.platformFees.achBpsintegerUS bank account (ACH): basis points.
config.platformFees.achCapCentsintegerUS bank account (ACH): the most the fee can be.
config.platformFees.cardstringThe card rate as shown, e.g. "3.2% + 30¢".
config.platformFees.achstringThe ACH rate as shown, e.g. "1%, max $10".
config.platformFees.financingBpsintegerAffirm and Klarna: basis points.
config.platformFees.financingFixedCentsintegerAffirm and Klarna: fixed cents.
config.platformFees.financingstringThe financing rate as shown, e.g. "7% + 30¢".
stateenumNOT_CONNECTED: no Stripe account; ONBOARDING: details not submitted; RESTRICTED: Stripe wants more or paused charges; ACTIVE: charges enabled. One of NOT_CONNECTED, ONBOARDING, RESTRICTED, ACTIVE.
availabilityobject
availability.availableboolean
availability.reasonenum or nullWhy customers cannot pay online: the server has no Stripe key, no account is connected, Stripe has not enabled charges yet, or the business turned online payments off. One of NOT_CONFIGURED, NOT_CONNECTED, NOT_ENABLED, TURNED_OFF.
accountobject or null
account.stripeAccountIdstring or nullThe business's connected Stripe account (acct_…), with its own full Stripe dashboard.
account.livemodeboolean
account.dashboardTypestring or nullThe Stripe dashboard the account has: full (every account set up now).
account.lossesCollectorstring or nullWho carries losses on payments: stripe (Managed Risk).
account.feesPayerstring or nullWho pays Stripe's processing fees: account (the business).
account.countrystring or null
account.defaultCurrencystring
account.businessNamestring or null
account.chargesEnabledboolean
account.payoutsEnabledboolean
account.detailsSubmittedboolean
account.cardPaymentsStatusstring or null
account.achPaymentsStatusstring or null
account.achEnabledbooleanCustomers can pay by US bank account (ACH debit).
account.financingobjectAffirm and Klarna.
account.financing.enabledbooleanPay over time is offered.
account.financing.affirmboolean
account.financing.klarnaboolean
account.financing.minCentsintegerOffered from this amount up.
account.financing.affirmStatusstring or nullStripe's Affirm capability: null (not requested), pending, active, inactive.
account.financing.klarnaStatusstring or nullStripe's Klarna capability.
account.requirementsDuearray of object
account.requirementsDue[].keystring
account.requirementsDue[].labelstring
account.requirementsDue[].pastDueboolean
account.requirementsDeadlinestring (date-time) or null
account.disabledReasonstring or null
account.payoutScheduleobject or null
account.payoutSchedule.intervalstring or null
account.payoutSchedule.delayDaysinteger or null
account.payoutSchedule.weeklyAnchorstring or null
account.payoutSchedule.monthlyAnchorinteger or null
account.onlinePaymentsEnabledboolean
account.allowPartialPaymentsboolean
account.tipsEnabledboolean
account.connectedAtstring (date-time) or null
account.disconnectedAtstring (date-time) or null
account.lastSyncedAtstring (date-time) or null
POST /organizations/{organizationId}/payment-account/dashboard-link

Returns the address of the Stripe dashboard (https://dashboard.stripe.com/), where the business signs in with the Stripe login it created during onboarding (balance, payouts, bank account, tax forms, disputes). No login link is made: the business has a full Stripe account of its own. Only once onboarding details are submitted (409 before). Needs payments.manage.

Permissionpayments.manage (Owner, Admin)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolpaymentAccount_dashboardLink (toolset invoices)
ApprovalOver MCP, this tool always waits for your approval in SKUFlow. See Approvals.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/payment-account/dashboard-link" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
urlstringA Stripe-hosted page to send the person to.

Turn online payments, partial payments, tips or financing on or off

PATCH /organizations/{organizationId}/payment-account/settings

Exposes to customers: onlinePaymentsEnabled shows or hides every Pay online / Pay deposit button (portal, /i and /q pages) without disconnecting Stripe; allowPartialPayments lets customers pay part of an invoice (default off: the balance); tipsEnabled offers a tip on the pay page (default off); financingEnabled offers Affirm and/or Klarna (financingAffirm, financingKlarna) from financingMinCents up, and asks Stripe for those capabilities (if Stripe refuses, 409 says to turn them on in the business's Stripe dashboard). Send any of them. Needs payments.manage.

Permissionpayments.manage (Owner, Admin)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolpaymentAccount_updateSettings (toolset invoices)
ApprovalOver MCP, this tool always waits for your approval in SKUFlow. See Approvals.

Request body

FieldTypeRequiredDescription
onlinePaymentsEnabledbooleanNo
allowPartialPaymentsbooleanNo
tipsEnabledbooleanNo
financingEnabledbooleanNo
financingAffirmbooleanNo
financingKlarnabooleanNo
financingMinCentsintegerNo0–100000000.

Example

curl -X PATCH "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/payment-account/settings" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"onlinePaymentsEnabled":true,"allowPartialPayments":true,"tipsEnabled":true}'

Response

200: the answer's fields
FieldTypeDescription
configobject
config.configuredbooleanThe server has a usable Stripe key.
config.modeenum or nullOne of test, live.
config.problemstring or null
config.missingarray of stringEnvironment variables still to set.
config.webhooksConfiguredboolean
config.platformFeeBpsintegerDeprecated: the card rate of SKUFlow's fee in basis points (0); see platformFees.
config.platformFeesobjectSKUFlow's fee on each online payment: none by default (none). Stripe's own processing fees are billed by Stripe to the business.
config.platformFees.nonebooleanSKUFlow takes no fee on any payment (the default); Stripe bills its processing fees to the business.
config.platformFees.cardBpsintegerCard: basis points of amount + tip (0 by default).
config.platformFees.cardFixedCentsintegerCard: fixed cents per payment.
config.platformFees.achBpsintegerUS bank account (ACH): basis points.
config.platformFees.achCapCentsintegerUS bank account (ACH): the most the fee can be.
config.platformFees.cardstringThe card rate as shown, e.g. "3.2% + 30¢".
config.platformFees.achstringThe ACH rate as shown, e.g. "1%, max $10".
config.platformFees.financingBpsintegerAffirm and Klarna: basis points.
config.platformFees.financingFixedCentsintegerAffirm and Klarna: fixed cents.
config.platformFees.financingstringThe financing rate as shown, e.g. "7% + 30¢".
stateenumNOT_CONNECTED: no Stripe account; ONBOARDING: details not submitted; RESTRICTED: Stripe wants more or paused charges; ACTIVE: charges enabled. One of NOT_CONNECTED, ONBOARDING, RESTRICTED, ACTIVE.
availabilityobject
availability.availableboolean
availability.reasonenum or nullWhy customers cannot pay online: the server has no Stripe key, no account is connected, Stripe has not enabled charges yet, or the business turned online payments off. One of NOT_CONFIGURED, NOT_CONNECTED, NOT_ENABLED, TURNED_OFF.
accountobject or null
account.stripeAccountIdstring or nullThe business's connected Stripe account (acct_…), with its own full Stripe dashboard.
account.livemodeboolean
account.dashboardTypestring or nullThe Stripe dashboard the account has: full (every account set up now).
account.lossesCollectorstring or nullWho carries losses on payments: stripe (Managed Risk).
account.feesPayerstring or nullWho pays Stripe's processing fees: account (the business).
account.countrystring or null
account.defaultCurrencystring
account.businessNamestring or null
account.chargesEnabledboolean
account.payoutsEnabledboolean
account.detailsSubmittedboolean
account.cardPaymentsStatusstring or null
account.achPaymentsStatusstring or null
account.achEnabledbooleanCustomers can pay by US bank account (ACH debit).
account.financingobjectAffirm and Klarna.
account.financing.enabledbooleanPay over time is offered.
account.financing.affirmboolean
account.financing.klarnaboolean
account.financing.minCentsintegerOffered from this amount up.
account.financing.affirmStatusstring or nullStripe's Affirm capability: null (not requested), pending, active, inactive.
account.financing.klarnaStatusstring or nullStripe's Klarna capability.
account.requirementsDuearray of object
account.requirementsDue[].keystring
account.requirementsDue[].labelstring
account.requirementsDue[].pastDueboolean
account.requirementsDeadlinestring (date-time) or null
account.disabledReasonstring or null
account.payoutScheduleobject or null
account.payoutSchedule.intervalstring or null
account.payoutSchedule.delayDaysinteger or null
account.payoutSchedule.weeklyAnchorstring or null
account.payoutSchedule.monthlyAnchorinteger or null
account.onlinePaymentsEnabledboolean
account.allowPartialPaymentsboolean
account.tipsEnabledboolean
account.connectedAtstring (date-time) or null
account.disconnectedAtstring (date-time) or null
account.lastSyncedAtstring (date-time) or null

Charge a card: open Stripe Checkout for an invoice

POST /organizations/{organizationId}/invoices/{invoiceId}/checkout

Money: for a payment taken over the phone. Creates a PENDING online payment (processor STRIPE) for the balance due (or amountCents when partial payments are on) and returns the Stripe Checkout page to enter the card on; the payment and the invoice settle when Stripe's webhook confirms it. An earlier unfinished checkout for the same invoice is expired first. 409 when the business cannot take online payments, 400 when nothing is due. To send the customer a link instead, use POST /invoices/{invoiceId}/link (its /i page has Pay online).

Permissionpayments.record (Owner, Admin, Staff)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolonlinePayments_staffCheckout (toolset invoices)
ApprovalOver MCP, this tool asks for your OK first (in the AI app when it supports it, otherwise in SKUFlow). See Approvals.

Parameters

NameInTypeRequiredDescription
invoiceIdpathstringYes

Request body

FieldTypeRequiredDescription
amountCentsintegerNoAmount towards the balance, in cents; defaults to the whole balance due. Less than the balance only when the business allows partial payments (at least 100). 1–100000000.
tipCentsintegerNoTip on top, in cents; only when the business takes tips online (at most the amount). 0–100000000.
methodenumNoHow the payer pays: card (default), us_bank_account (ACH, only when the business's achEnabled), or affirm / klarna (pay over time, only when the page's financing lists it for this amount; 409 otherwise). Checkout then offers only that method. SKUFlow takes no fee by default (Stripe's processing fees are billed by Stripe to the business); 400 only when a configured SKUFlow fee would be the whole amount. One of card, us_bank_account, affirm, klarna.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/invoices/{invoiceId}/checkout" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amountCents":12500,"tipCents":12500,"method":"card"}'

Response

201: the answer's fields
FieldTypeDescription
urlstringThe Stripe Checkout page (checkout.stripe.com) to send the payer to.
paymentIdentifierstringPAY-n of the PENDING payment; it settles when Stripe's webhook confirms it.

A customer's saved payment method

GET /organizations/{organizationId}/customers/{customerId}/autopay

Whether the customer saved a card or bank account on file (from their portal), with the method's brand and last four. Read-only.

Permissionpayments.read (Owner, Admin, Staff)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolonlinePayments_autopay (toolset invoices)

Parameters

NameInTypeRequiredDescription
customerIdpathstringYes

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/customers/{customerId}/autopay" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
availablebooleanThe business takes online payments, so a method can be saved.
reasonenum or nullWhy customers cannot pay online: the server has no Stripe key, no account is connected, Stripe has not enabled charges yet, or the business turned online payments off. One of NOT_CONFIGURED, NOT_CONNECTED, NOT_ENABLED, TURNED_OFF.
autopaybooleanA method is saved on file and may be charged by the business.
methodobject or null
method.labelstring or nullVisa •••• 4242 / Bank •••• 6789.
method.typestring or null
method.brandstring or null
method.last4string or null
method.expMonthinteger or null
method.expYearinteger or null
method.autopayboolean

Remove a customer's saved payment method

DELETE /organizations/{organizationId}/customers/{customerId}/autopay

Destructive: the saved method is removed (detached at Stripe). The customer can save a new one from their portal. Invoices already issued are untouched.

Permissionpayments.manage (Owner, Admin)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolonlinePayments_disableAutopay (toolset invoices)
ApprovalOver MCP, this tool always waits for your approval in SKUFlow. See Approvals.

Parameters

NameInTypeRequiredDescription
customerIdpathstringYes

Example

curl -X DELETE "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/customers/{customerId}/autopay" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
availablebooleanThe business takes online payments, so a method can be saved.
reasonenum or nullWhy customers cannot pay online: the server has no Stripe key, no account is connected, Stripe has not enabled charges yet, or the business turned online payments off. One of NOT_CONFIGURED, NOT_CONNECTED, NOT_ENABLED, TURNED_OFF.
autopaybooleanA method is saved on file and may be charged by the business.
methodobject or null
method.labelstring or nullVisa •••• 4242 / Bank •••• 6789.
method.typestring or null
method.brandstring or null
method.last4string or null
method.expMonthinteger or null
method.expYearinteger or null
method.autopayboolean

On this page