Payment methods
Payment methods (PaymentMethod) define how an organization can receive money. Each method is tied to a processor (the payment gateway) and can be enabled on specific publishing channels.
Available processors
| Processor | Description |
|---|---|
manual | Manual payment (e.g. bank transfer). No automatic processing. |
stripe | Credit card, SEPA debit or POS terminal via Stripe. |
paypal | PayPal wallet. |
satispay | Satispay gateway. |
sumup | SumUp POS terminal. |
Payment types by processor
Stripe
| Type | Value | Description |
|---|---|---|
| Credit card | card | Online payment by card |
| SEPA debit | sepa_debit | Direct debit from a European bank account |
| Physical POS | card_present | Physical terminal (e.g. WisePOS E) |
PayPal
| Type | Value | Description |
|---|---|---|
| Wallet | wallet | Payment via PayPal account |
SumUp
| Type | Value | Description |
|---|---|---|
| Physical POS | pos | Physical SumUp terminal |
Manual and Satispay
No sub-type: a single method per processor.
Main fields
| Field | Type | Description |
|---|---|---|
id | Int | Unique identifier |
label | String | Human-readable name of the method (e.g. "Credit card") |
processor | String | Associated processor (see table above) |
has_oneoff_support | Boolean | Accepts oneoff donations |
has_subscription_support | Boolean | Accepts recurring donations |
include_in_certificate | Boolean | Payments through this method go into the annual tax certificate |
channels | [Int] | IDs of the channels on which the method is available |
description | String | Descriptive text (manual methods only) |
instructions | String | Instructions for the donor (manual methods only) |
Channels
The channels field is an array of channel IDs. A payment method is shown in the checkout only if the checkout's channel is included in this array. If channels is empty, the method is not available on any channel.
GraphQL Query
List all payment methods:
query {
paymentMethods {
id
label
processor
hasOneoffSupport
hasSubscriptionSupport
includeInCertificate
channels
}
}
List only manual methods (useful for creating payments manually):
query {
manualPaymentMethods {
id
label
description
instructions
}
}
Single manual method:
query {
manualPaymentMethod(id: 5) {
id
label
description
instructions
}
}
Using payment methods in the checkout
When creating a checkout via API, you can specify the desired payment method. It is important to verify that the method supports the donation type (oneoff or recurring) and that it is active on the correct channel.
mutation {
checkoutCreate(data: {
campaignId: 29,
donationAmount: 50,
donationFrequency: 0,
paymentMethodId: 3
}) {
checkout {
id
state
}
userErrors {
field
message
}
}
}
Creating a manual payment
To manually record a payment (e.g. after receiving a bank transfer), use the paymentCreate mutation specifying a manual type method:
mutation {
paymentCreate(data: {
donationId: 229,
paymentMethodId: 1,
amount: "50.00",
paymentDate: "2024-01-15"
}) {
payment {
id
state
amount
}
userErrors {
field
message
}
}
}