Developers · v1

Put goal saving inside your own product.

The same engine behind My Goal Needs Money, opened up. Your customers save and save towards a goal from their mobile money wallet, friends can contribute, and the money is paid out when the picture is complete.

BetaPrivate crowdfunding platform — pending SEC approval.

Online shops

Let a customer save towards a product week by week, and ship it once the picture is complete.

Weddings and events

A couple creates a goal and shares one link; friends contribute towards the gift.

Banks and lenders

Offer a guided savings product to graduates building a house, funded straight from their wallet.

Investment firms

Collect regular contributions from your clients and track every payment through webhooks.

Getting started

  1. 1. Register your organisation and copy your test key — it appears once.
  2. 2. Call the API with Authorization: Bearer YOUR_KEY.
  3. 3. Build against test keys — nothing is debited in test mode.
  4. 4. Request live access when you are ready. We review and switch you on.

Base address: https://mygoalneeds.money/api/public/v1

Fees match the app exactly: 2.5% with a GH₵0.50 minimum on money in and money out. We absorb the payment service's own charge. Amounts are in Ghana cedis.

Endpoints

GET/ping

Check your key

Confirms your key works and tells you which organisation and mode (test or live) it belongs to.

curl https://mygoalneeds.money/api/public/v1/ping -H "Authorization: Bearer YOUR_KEY"
POST/customers

Create a customer

Registers one of your customers on the platform. Send the same external_id again to get the same customer back.

  • external_id string · required — Your own id for this customer.
  • name string
  • phone string · required — Mobile money number, e.g. 0244000000.
  • network MTN | Telecel | AT
curl -X POST https://mygoalneeds.money/api/public/v1/customers \
  -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"external_id":"cust_1","name":"Ama Mensah","phone":"0244000000","network":"MTN"}'
GET/customers

List your customers

Everyone you have registered, newest first.

POST/goals

Create a goal

Starts a goal for one of your customers and sets up the automatic debit. The customer approves the standing order on their phone.

  • customer_id string · required — The external_id you used.
  • name string · required
  • target number · required — Total amount to reach, in cedis.
  • amount number · required — Amount per debit.
  • frequency DAILY | WEEKLY | MONTHLY — Defaults to WEEKLY.
  • tiles number — Tiles covering the picture, 4 to 100. Defaults to 12.
  • image string — Picture as a data URL. Optional.
curl -X POST https://mygoalneeds.money/api/public/v1/goals \
  -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"customer_id":"cust_1","name":"New laptop","target":1200,"amount":50}'
GET/goals

List goals

Every goal created with your key, with its progress.

GET/goals/{id}

Goal progress

One goal: amount saved, tiles uncovered, status and every payment received.

POST/goals/{id}/state

Pause, resume or stop a goal

Controls the automatic debit.

  • state pause | resume | stop · required
POST/goals/{id}/topups

Add a topup

Takes an extra payment from the customer's wallet on any day. They approve it on their phone.

  • amount number · required — 1 to 5000 cedis.
POST/goals/{id}/share

Create a contribution link

Returns a public link friends and family can use to contribute to this goal.

POST/goals/{id}/payout

Request a payout

Requests the saved money be sent to the customer's wallet. The service fee is deducted from the amount.

  • reason completed | stopped — Defaults to completed.
  • wallet string — Defaults to the goal's own wallet.
  • network MTN | Telecel | AT
  • name string — Account name.

Notifications

Set one address on your keys page and we post a signed message there when something happens, so your own system stays in step without asking us repeatedly.

  • payment.succeeded — A weekly debit, a topup or a gift lands in a goal.
  • payment.failed — A payment attempt did not go through.
  • goal.completed — A goal reaches its target.
  • payout.requested — A payout has been requested for a goal.

Every message carries an X-MGNM-Signature header: a SHA-256 signature of the exact body, made with your signing secret. Check it before trusting the message. Failed deliveries are retried for an hour.

Ready?

Register your organisation and start with a test key today.

Get a test key