payer
is Repejo's entity for a donor. The payload below reflects the fields currently serialized by the codebase.
Draft: The documented REST endpoints for payer currently exist as a planned contract. In the current router, webhooks are the implemented integration surface.
type Response<T> = {
data: T;
};
type PayerID = `pay_${string}`;
type CheckoutID = `chk_${string}`;
type PayerPaymentMethod =
| "swish"
| "autogiro"
| "card"
| "apple_pay"
| "google_pay"
| "stripe_subscription"
| "sepa_direct_debit"
| "invoice"
| "none";
type Payer = {
id: PayerID;
name: string | null;
first_name: string | null;
last_name: string | null;
phone_number: string | null;
email: string | null;
status:
| "active"
| "pending"
| "rejected"
| "terminated"
| "aborted"
| "checkout"
| "completed"
| "deleted"
| "archived";
payment_method: PayerPaymentMethod;
contact_consent: boolean;
address_street: string | null;
address_zip: string | null;
address_city: string | null;
address_country: string | null;
personal_identity_number: string | null;
payer_type: "private" | "company";
company_name: string | null;
organisation_number: string | null;
note: string;
external_id: string | null;
reference_value: string | null;
reference_title: string | null;
metadata: Record<string, string>;
preferred_locale: string;
checkout_id: CheckoutID | null;
inserted_at: string;
updated_at: string;
};
Every field above is always present in the payload; absent values are sent as
null
(not omitted). inserted_at
and updated_at
are naive timestamps without timezone (for example "2026-05-12T13:46:10").
checkout_id
links the payer to the checkout that created it.
reference_value
and reference_title
carry the checkout reference captured for the payer. The internal
donor_portal_slug
field is not
included in webhook payloads.
payer_type
tells you whether the donation is private or made by a company. For a
"company"
payer, company_name
and organisation_number
identify the company, while name,
email
and phone_number
hold the contact person and the
address_*
fields hold the billing address. For a
"private"
payer, company_name
and organisation_number
are null.
If you build against the draft above, treat it as preliminary. The webhook page describes the part of the integration surface that actually delivers data today.