Getting started
This page walks through a typical integration: validate a fundraiser account, post one donation, then reconcile that donation with a remittance. By the end you’ll have exercised every endpoint partners typically utilise.
Before you start
Section titled “Before you start”Ensure you have the following:
- Partner credentials provisioned (see Authentication).
- An ASF Member Number to test with. The ASF will provide a sandbox fundraiser account during onboarding; for production work, use the ASF Member Number of the fundraiser themselves.
- A tool that can make HTTPS requests with custom headers (curl, Postman, your platform’s HTTP client).
The base URL throughout this guide is:
https://sit.api.asf.org.au/fundraisers/api/v1The five-minute path
Section titled “The five-minute path”-
Validate the fundraiser.
Before posting a donation, confirm the fundraiser has actually activated your fundraising channel. This fails fast and gives you a clear error to surface in your UI.
Terminal window curl -sS \-X GET "$BASE_URL/fundraisers?channel=XYZ%20Platform&id=ASF123456" \-H "client_id: $ASF_CLIENT_ID" \-H "client_secret: $ASF_CLIENT_SECRET",-H 'X-Correlation-ID': $RANDOM_UUID | jqA successful response:
{"apiVersion": "1.0.0","correlationId": "210c68180-2ac6-11ee-b000-111","method": "/fundraisers","data": {"items": {"name": "Wombat Park Softball Club","fundraiserId": "ASF123456","productEnrollmentId": "a0T0T000006MMN2UAO","status": "Enrollment Validated"}}}If the fundraiser hasn’t activated your fundraising channel you’ll get a
400witherror.code: FUNDRAISER:VALIDATION. Don’t proceed to the next step — surface an error to the donor. -
Post the donation.
Take the order details from your platform and POST them. The minimum required fields are listed below. Any platform-specific metadata goes in
sourceMetadata.Terminal window curl -sS \-X POST "$BASE_URL/donations" \-H "client_id: $ASF_CLIENT_ID" \-H "client_secret: $ASF_CLIENT_SECRET" \-H 'X-Correlation-ID': $RANDOM_UUID,-H "Content-Type: application/json" \-d '{"source": {"channel": "XYZ Platform","fundraiserId": "ASF123456"},"donor": {"email": "jane@example.com","firstName": "Jane","lastName": "Smith","billingAddress": {"postalCode": "2600","country": "AU"}},"transaction": {"id": "504789900","date": "2026-05-11T10:09:54+10:00","amount": "250"},"sourceMetadata": {"registrationNumber": "450789469"}}' | jqThe response gives you ASF’s donation reference. Persist this — you’ll need it when posting remittances:
{"apiVersion": "1.0.0","correlationId": "210c68180-2ac6-11ee-b000-111","method": "/donations","data": { "items": { "donationReferenceId": "0000468-000788" } }} -
Reconcile with a remittance.
When your payment processor settles funds into ASF’s bank account, post a remittance to tie that bank transaction to the donation references it covers. This is what lets ASF mark the donation as funded in their books.
Terminal window curl -sS \-X POST "$BASE_URL/remittances" \-H "client_id: $ASF_CLIENT_ID" \-H "client_secret: $ASF_CLIENT_SECRET" \-H 'X-Correlation-ID': $RANDOM_UUID \-H "Content-Type: application/json" \-d '{"source": {"channel": "XYZ Platform","fundraiserId": "ASF123456"},"remittances": [{"bankReferenceId": "Donation WPSC","amount": 250.00,"donationIds": ["0000468-000788"]}]}' | jqYou’ll get a
202 Accepted— remittance processing is asynchronous:{"apiVersion": "1.0.0","correlationId": "210c68180-2ac6-11ee-b000-111","method": "/remittance","data": { "items": { "status": "Request Accepted" } }}
This is the minimum integration. From here, platform-specific work is mostly about when you call these endpoints in your platform’s event flow.
What to do next
Section titled “What to do next”- Browse the API Reference. Every endpoint is documented as its own method in the API Reference, with Python, TypeScript and PHP samples generated from the OpenAPI spec.
- Pick your channel. End-to-end examples for the supported channels:
- Online Store — order webhooks → donations.
- Registration Platform — registration events → donations.