Skip to main content

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

ProcessorDescription
manualManual payment (e.g. bank transfer). No automatic processing.
stripeCredit card, SEPA debit or POS terminal via Stripe.
paypalPayPal wallet.
satispaySatispay gateway.
sumupSumUp POS terminal.

Payment types by processor

Stripe

TypeValueDescription
Credit cardcardOnline payment by card
SEPA debitsepa_debitDirect debit from a European bank account
Physical POScard_presentPhysical terminal (e.g. WisePOS E)

PayPal

TypeValueDescription
WalletwalletPayment via PayPal account

SumUp

TypeValueDescription
Physical POSposPhysical SumUp terminal

Manual and Satispay

No sub-type: a single method per processor.

Main fields

FieldTypeDescription
idIntUnique identifier
labelStringHuman-readable name of the method (e.g. "Credit card")
processorStringAssociated processor (see table above)
has_oneoff_supportBooleanAccepts oneoff donations
has_subscription_supportBooleanAccepts recurring donations
include_in_certificateBooleanPayments through this method go into the annual tax certificate
channels[Int]IDs of the channels on which the method is available
descriptionStringDescriptive text (manual methods only)
instructionsStringInstructions 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
}
}
}