@maxnate/provider-everyorg
v0.1.1
Published
Every.org charity donation provider for @maxnate/payments-core. Redirect donors to Every.org's hosted checkout — supports card, bank, PayPal, Venmo, crypto, stock, DAF donations in USD.
Maintainers
Readme
@maxnate/provider-everyorg
Every.org charity donation provider for @maxnate/payments-core.
Redirect donors to Every.org's hosted checkout — supports card, bank, PayPal, Venmo, crypto, stock, and DAF (Donor Advised Fund) donations in USD.
Payment Types
| Type | paymentType | Currency | Flow |
|---|---|---|---|
| Donate Link | "card" (default) | USD | Redirect to Every.org hosted checkout |
Authentication
Every.org uses API key authentication. See their docs for details.
Credentials
| Field | Description |
|---|---|
| nonprofitId | Your organization slug ("givedirectly") or EIN ("27-1661997") |
| apiKey | Public API key from your developer dashboard |
| privateKey | Optional — for fundraiser creation (stored securely) |
| webhookToken | Optional — enables partner webhook notifications |
Usage
import { createPaymentProviderRegistry } from '@maxnate/payments-core'
import { EveryOrgProvider } from '@maxnate/provider-everyorg'
const registry = createPaymentProviderRegistry()
registry.register(new EveryOrgProvider())
registry.setConfig({
id: 'everyorg', name: 'Every.org', type: 'card', enabled: true,
credentials: {
nonprofitId: 'givedirectly',
apiKey: process.env.EVERYORG_API_KEY!,
webhookToken: process.env.EVERYORG_WEBHOOK_TOKEN
},
currencies: ['USD'], countries: ['US']
})
// Create a donation (redirects donor to Every.org)
const result = await registry.createPaymentIntent('everyorg', {
orderId: 'DON-001',
amount: 5000, // $50.00 in cents
currency: 'USD',
customerEmail: '[email protected]',
returnUrl: 'https://site.com/thank-you',
metadata: {
firstName: 'Jane', lastName: 'Doe',
frequency: 'ONCE', // ONCE, MONTHLY, or YEARLY
designation: 'General Fund',
method: 'card,bank,paypal'
}
})
// result.redirectUrl → redirect donor to Every.org hosted checkoutWebhook Handling
Every.org sends donation completion notifications via Partner Webhook:
const webhookResult = await handlePaymentWebhook(
rawBody, undefined, 'everyorg', registry, deps
)Webhook payload fields:
| Field | Description |
|---|---|
| chargeId | Unique donation ID |
| partnerDonationId | Your orderId from the donate link |
| amount | Donation amount as string |
| netAmount | Amount after fees |
| currency | Always "USD" |
| frequency | "One-time", "Monthly", or "Yearly" |
| firstName / lastName | Donor name |
| email | Donor email |
| toNonprofit | { slug, ein, name } — receiving nonprofit |
Requirements
- Node.js >= 18
@maxnate/payments-core^0.1.0
