Siren

Autofulfillers

The REST routes behind automatic payouts: the payout method for each currency, Stripe and PayPal credentials, and each collaborator's Stripe account and PayPal email.

Requires Siren Essentials

WordPress plugin and Siren Cloud

Last updated: October 28, 2026

An autofulfiller sets the payout method for one currency. When a fulfillment creates a payout in that currency, Siren sends it through the method in the background, as Set Up Automatic Payouts describes. All paths use the base /wp-json/siren/v1.

The /autofulfillers routes need Siren Essentials and up. The Stripe and PayPal methods need Plus and up. On WordPress, the /stripe and /paypal routes exist only in Siren Plus and Pro, so a lower edition answers WordPress’s 404 rest_no_route. On those editions, an autofulfiller create or update that names stripe or paypal fails validation with 400, because the method isn’t registered. On Siren Cloud, POST /stripe/config, POST /paypal/config, the Stripe account and PayPal email routes, and a create, or an update that switches to Stripe or PayPal, answer 403 with “Your plan does not include this feature.” on a lower plan. Reading and changing autofulfillers, and reading the config routes, needs the autofulfiller permission. Saving credentials needs the payout credentials permission. Administrators and Platform Managers hold both. On Siren Cloud, Admins and Platform Managers hold both.

On a WordPress store connected to Siren Cloud, writes to /autofulfillers, POST /stripe/connect/accounts, and POST /paypal/receivers answer 409 with the code siren_managed_in_cloud, because they run in Siren Cloud. The /stripe/config and /paypal/config routes still answer on the site, but the store’s payouts run in Siren Cloud and use the credentials saved there. The two collaborator read routes answer from Siren Cloud: GET /stripe/connect/accounts/:collaboratorId returns only payoutsEnabled and detailsSubmitted, and GET /paypal/receivers/:collaboratorId always returns editable as false.

Payout methods

GET /autofulfillers/methods

Returns a plain array of the methods this site knows, each with id, name, description, available (the method is ready: its credentials are saved, or for credit, store credit can be spent on this site), entitled (the plan includes it), and requiredPlan (null when no plan is required). The admin screen offers stripe and paypal. The credit method pays store credit, and where store credit can be spent, Siren sets it up for you when you create a store credit currency.

List autofulfillers

GET /autofulfillers

Answers the paginated envelope (items, total, page, perPage, totalPages), ten per page by default, described in Pagination, Filtering, and Field Selection. Each item has currency and method. Filter with currency or method, and page with number (1 to 200) and offset.

Get an autofulfiller

GET /autofulfillers/:currency

Returns one autofulfiller, or 404 when the currency has none.

Create an autofulfiller

POST /autofulfillers

FieldRequiredDescription
currencyYesA currency code Siren knows
methodYesA method from the list above whose credentials are saved, usually stripe or paypal

Answers 201 with the autofulfiller. A currency that already has one answers 409 (“An autofulfiller for this currency already exists.”). A method without saved credentials answers 400, saying it isn’t configured yet. credit with a money currency, such as USD, answers 400 with the type METHOD_NOT_FOR_CURRENCY and “Internal Credit only pays internal currencies, such as points or store credit. Choose another method to pay USD.”

Update an autofulfiller

PUT /autofulfillers/:currency

Changes method. Answers 200 with the autofulfiller, or 404. A method without saved credentials, or credit for a money currency, answers 400, as on create.

Delete an autofulfiller

DELETE /autofulfillers/:currency

Answers 200 with success, or 404. Payouts in the currency then wait for you to pay them.

Stripe credentials

GET /stripe/config returns secretKeyConfigured, webhookSigningSecretConfigured, and webhookSigningSecretEditable, which is true where this route can save the signing secret. It never returns the secrets.

POST /stripe/config takes secretKey and, on WordPress, webhookSigningSecret, and answers 200 with success and the same status fields as the GET. A field you leave out keeps its saved value. On Siren Cloud, sending webhookSigningSecret answers 400, because the payout setup reads the signing secret from your Stripe sales connection.

On WordPress, Stripe sends account and transfer notices to POST /stripe/webhook, which needs no login. It checks each notice with the signing secret, ignores types it doesn’t use, and answers 200. An account update for a collaborator whose account can take transfers sends their payouts waiting on Stripe. A transfer reversed in full marks its paid payout failed, with the reason, and a partial reversal is only logged. A bad signature answers 400, and a site with no signing secret saved answers 503.

PayPal credentials

GET /paypal/config returns clientIdConfigured, clientSecretConfigured, mode, and modeChosen. mode is the environment payouts use, which is sandbox while modeChosen is false. The route never returns the secrets.

POST /paypal/config takes clientId, clientSecret, and mode, either sandbox or live, and answers 200 with success and the same status fields as the GET. Send live to pay real money. When no credentials and no environment are saved yet, a request that saves credentials must include mode, or it answers 400 with “Choose Sandbox or Live for PayPal before saving your credentials.”

A collaborator’s Stripe account

POST /stripe/connect/accounts starts Stripe’s onboarding for a collaborator.

FieldRequiredDescription
collaboratorIdYesThe collaborator
emailYesThe email for their Stripe account
returnUrlYesWhere Stripe sends them after onboarding
refreshUrlYesWhere Stripe sends them if the link expires

Answers 201 with success and onboardingUrl, the Stripe page to send them to. A bad URL answers 400, and a collaborator the caller can’t act for answers 403. With no Stripe secret key saved, it answers 503.

GET /stripe/connect/accounts/:collaboratorId returns accountId, chargesEnabled, payoutsEnabled, detailsSubmitted, and transfersActive, which is true once Stripe lets Siren transfer payouts to the account. When it’s true, the read also sends the collaborator’s payouts waiting on Stripe. It answers 404 when the collaborator hasn’t connected, and 503 with no Stripe secret key saved.

A collaborator’s PayPal email

GET /paypal/receivers/:collaboratorId returns collaboratorId, configured, email, payoutsEnabled (the organization’s PayPal credentials are saved), and editable (the caller may change the email).

POST /paypal/receivers takes collaboratorId and email, both required, and answers 200 with success and collaboratorId. Saving an email sends the collaborator’s payouts waiting on PayPal. An invalid email answers 400.

Collaborators may call the Stripe account and PayPal email routes for their own ID only, and any other ID answers 403. Staff may call them for anyone.

Your privacy choices

Account, checkout and chat you request work without optional tracking. Choose whether to allow these other uses on this website.

You can change or withdraw your choices at any time using “Privacy choices.” We remember your choice for 180 days. Read our privacy policy.