curl --request POST \
--url https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)HttpResponse<String> response = Unirest.post("https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit")
.header("Authorization", "Bearer <token>")
.asString();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"paymentMethod": {
"id": 42018,
"resource": "payment-method",
"type": "sepa-debit",
"status": "setup-pending",
"isDefault": false,
"mandateReference": null,
"ibanLast4": null,
"bankCode": null,
"bankCountry": null,
"acceptedAt": null,
"setupExpiresAt": "2026-11-03T10:05:00Z",
"deactivatedReasonClass": null,
"createdAt": "2026-11-02T10:05:00Z",
"updatedAt": "2026-11-02T10:05:00Z",
"_links": {
"self": {
"href": "https://api.voucher.allride.io/consumer/v1/billing/payment-methods/42018",
"type": "application/json"
}
}
},
"clientSecret": "seti_example_secret_example",
"publishableKey": "pk_test_example",
"creditor": {
"name": "AllRide GmbH",
"creditorId": "DE00ZZZ00000000000"
}
}
}Start a SEPA Direct Debit mandate setup
Creates a payment method in setup-pending and a Stripe SetupIntent. No request body. Load Stripe.js with publishableKey, collect the IBAN in Stripe’s IBAN Element together with the account holder’s name and email, show the SEPA mandate text naming creditor, and confirm with stripe.confirmSepaDebitSetup(clientSecret, …). The IBAN goes to Stripe only. The method stays setup-pending until Stripe confirms the mandate, then it is active and the default; poll it. You have one SEPA mandate at a time: starting a setup removes any other unfinished setup (its SetupIntent is canceled), and once the new mandate is active it replaces your previous one (removed, deactivatedReasonClass: replaced). Until then the previous mandate keeps collecting; if the new setup fails, it stays. AllRide decides whether you pay by SEPA Direct Debit or by bank transfer: while the billing account’s preferredPaymentMethodType is bank-transfer this answers 409 sepa-not-enabled. Dashboard only (the consumer dashboard’s Billing › Payment method page, https://consumer.voucher.allride.io/go/billing-payment-method); needs a recent sign-in. Allowed while your partner is suspended. A replay with the same Idempotency-Key returns clientSecret: null and creates no second SetupIntent. See SEPA Direct Debit mandate.
Required permissions: manage-consumer-billing · API keys: not allowed · Recent sign-in: required for dashboard users (15 minutes)
curl --request POST \
--url https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)HttpResponse<String> response = Unirest.post("https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit")
.header("Authorization", "Bearer <token>")
.asString();package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voucher-staging.allride.io/consumer/v1/billing/payment-methods:setup-sepa-debit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"paymentMethod": {
"id": 42018,
"resource": "payment-method",
"type": "sepa-debit",
"status": "setup-pending",
"isDefault": false,
"mandateReference": null,
"ibanLast4": null,
"bankCode": null,
"bankCountry": null,
"acceptedAt": null,
"setupExpiresAt": "2026-11-03T10:05:00Z",
"deactivatedReasonClass": null,
"createdAt": "2026-11-02T10:05:00Z",
"updatedAt": "2026-11-02T10:05:00Z",
"_links": {
"self": {
"href": "https://api.voucher.allride.io/consumer/v1/billing/payment-methods/42018",
"type": "application/json"
}
}
},
"clientSecret": "seti_example_secret_example",
"publishableKey": "pk_test_example",
"creditor": {
"name": "AllRide GmbH",
"creditorId": "DE00ZZZ00000000000"
}
}
}Authorizations
Your API key in Authorization: Bearer <key>. Use vk_test_… keys against the sandbox and vk_live_… keys against production.
Headers
Optional key (1-255 printable ASCII characters, no spaces; a UUID is ideal) that makes this POST safe to retry: the same key with the same request replays the stored response for 24 hours. See Idempotency.
1 - 255^[\x21-\x7E]{1,255}$Response
Created
Single-object envelope around a SepaDebitSetup.
Result of starting a SEPA Direct Debit setup: confirm it with Stripe.js.
Show child attributes
Show child attributes