Skip to content

Adjust revenue and publisher payout on calls

There are three supported ways:

  1. Edit one call in Reporting
  2. Use the public API (one call or many)
  3. Send Support a file to apply for you

Do not mix these on the same batch without agreeing who owns the write.

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.

Best for a handful of calls.

  1. Open Reporting → Call Logs (the call log table).
  2. Find the call (phone number, date, campaign, or Call UID).
  3. Open the call and choose Edit.
  4. Enter the new Revenue and Publisher payout.
  5. 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.

Best for scripts, buyer billable files, or hundreds of IDs.

  1. In the portal: Admin → My account → Moja API.
  2. Generate or copy your organization API key once. Store it privately.
  3. Call https://external-api.moja-ai.com only.

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_KEY

or

Authorization: Bearer YOUR_ORG_API_KEY

Interactive reference: https://external-api.moja-ai.com/api/v1/docs

POST https://external-api.moja-ai.com/api/v1/reporting/calls/query

Use the id values from that response as call_log_ids. Those are Moja call log IDs, not publisher ping IDs and not phone numbers.

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_out or publisher_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_count equal to the number of IDs you sent and an empty failed_call_log_ids. updated_count: 0 means 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_id or phone_number. Do not send caller_id as 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.

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.

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.

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
  • Using caller_id instead of phone_number or call_log_id on 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_count is 0
  • Editing live / in‑progress calls for publisher payout (complete the call first)