Adjust revenue and publisher payout on calls
There are three supported ways:
- Edit one call in Reporting
- Use the public API (one call or many)
- Send Support a file to apply for you
Do not mix these on the same batch without agreeing who owns the write.
What you are changing
Section titled “What you are changing”| Field | Meaning |
|---|---|
Revenue (revenue_paid_out) |
Amount credited on the call as buyer / account revenue |
Publisher payout (publisher_paid_out) |
Amount paid to the publisher on that call |
Amounts are new dollar values, not “add this much.” Sending 25.50 sets the call to $25.50, it does not add $25.50 on top of what is already there.
To clear a conversion / paid amount, set the field to 0.
Option 1 — Edit one call in Reporting
Section titled “Option 1 — Edit one call in Reporting”Best for a handful of calls.
- Open Reporting → Call Logs (the call log table).
- Find the call (phone number, date, campaign, or Call UID).
- Open the call and choose Edit.
- Enter the new Revenue and Publisher payout.
- Save.
Both amounts are required on this edit. If you only need to change revenue, re‑enter the current publisher payout (and the reverse).
Confirm the row in the table after save. If the table still shows the old dollars, refresh; totals on summary views can lag the row you just edited.
Option 2 — Public API
Section titled “Option 2 — Public API”Best for scripts, buyer billable files, or hundreds of IDs.
- In the portal: Admin → My account → Moja API.
- Generate or copy your organization API key once. Store it privately.
- Call
https://external-api.moja-ai.comonly.
Do not send this key to portal.moja-ai.com data routes — those expect a logged‑in browser session, not the org key.
Header (either form):
X-API-Key: YOUR_ORG_API_KEYor
Authorization: Bearer YOUR_ORG_API_KEYInteractive reference: https://external-api.moja-ai.com/api/v1/docs
Look up call IDs
Section titled “Look up call IDs”POST https://external-api.moja-ai.com/api/v1/reporting/calls/queryUse the id values from that response as call_log_ids. Those are Moja call log IDs, not publisher ping IDs and not phone numbers.
Bulk‑set the same dollars on many calls
Section titled “Bulk‑set the same dollars on many calls”POST https://external-api.moja-ai.com/api/v1/reporting/calls/payout/bulk-adjust{ "call_log_ids": ["cl_…", "cl_…"], "revenue_paid_out": 25.50, "publisher_paid_out": 20.40 }Rules:
- Provide at least one of
revenue_paid_outorpublisher_paid_out. - Every ID in the request gets the same amount(s). Different dollar amounts need separate requests.
- Maximum 500 IDs per request (use ~100 if you want easier retries).
- Repeating the same request with unchanged amounts is safe.
- Treat success as HTTP 200 and
updated_countequal to the number of IDs you sent and an emptyfailed_call_log_ids.updated_count: 0means nothing changed — stop and check IDs / key / org.
Ongoing buyer postbacks (not a one‑off edit)
Section titled “Ongoing buyer postbacks (not a one‑off edit)”To have your buyer push revenue after the call:
- Configure an incoming webhook of type update revenue (or update fields).
- Identify the call with
call_log_idorphone_number. Do not sendcaller_idas the match key — it will not resolve the call. - See Revenue Postback Endpoint Guide for the live webhook URL, auth, and payload.
update_revenue can send revenue_paid_out only. Dynamic publisher share, if snapshotted on the call, may recalculate unless you also send publisher_paid_out.
Option 3 — Send Support a file
Section titled “Option 3 — Send Support a file”Best when you have a buyer invoice / billable‑call export and do not want to run the API yourself.
Email Support (or in‑app chat) with a spreadsheet (CSV or XLSX) and the identity of the account.
Required on every row
Section titled “Required on every row”| Column | Required | Notes |
|---|---|---|
| Call log ID or Phone number | Yes — one of these | Call log ID is preferred. Phone must be full E.164 (+1XXXXXXXXXX). Do not use a column named caller_id unless it is actually the E.164 phone. |
| Revenue | Yes | Buyer‑billable dollars for that call (two decimal places) |
| Publisher payout | Yes unless you tell us to derive it | If omitted, say the rule in the email (for example “80% of revenue, rounded half‑up”) |
| Call time | Strongly recommended | Wall‑clock time + timezone. Needed when matching by phone (redials). |
| Campaign name | Strongly recommended | Stops the same phone on another offer from taking the dollars |
| Buyer name | Recommended | Same phone can route to more than one buyer |
Required in the email (not only in the sheet)
Section titled “Required in the email (not only in the sheet)”- Organization / account name as it appears in Moja
- Date range covered
- Whether amounts are replacements (default) or you believe they are already correct and this is a check
- What to do with unmatched rows (hold vs skip)
- What to do with duplicate phones on the same day
We will not apply until you confirm a plan
Section titled “We will not apply until you confirm a plan”Support matches rows to existing call logs, then sends a before / after plan:
- adjust
- already matches
- hold (duplicate phone, two possible calls, wrong buyer, unmatched)
No new call logs are created to “make the file post.” Unmatched stays unmatched.
Quick chooser
Section titled “Quick chooser”| Situation | Use |
|---|---|
| 1–20 obvious calls | Reporting → Call Logs → Edit |
| Recurring buyer postback | Incoming update revenue / update fields webhook |
| Script or hundreds of known IDs | POST …/api/v1/reporting/calls/payout/bulk-adjust |
| Buyer CSV / invoice, no engineering | Spreadsheet to Support with the columns above |
Common mistakes
Section titled “Common mistakes”- Using
caller_idinstead ofphone_numberorcall_log_idon webhooks and support files - Sending the org API key to the portal host
- Putting mixed dollar amounts in one bulk request
- Treating HTTP 200 as success when
updated_countis 0 - Editing live / in‑progress calls for publisher payout (complete the call first)

