Key Features
- High Availability & Low Latency – 99.99% uptime with optimized API performance.
- Seamless Payments – Accept payments from Moment’s Channel Partners.
- Flexible Customer & Billing Management – Supports multi-level structure: Customers → Accounts → Bills.
Benefits
- Scalability – Expand globally with multi-currency support and diverse payment methods.
- Simplicity – Manage customers, accounts, and bills effortlessly via a single API.
- Efficiency – Reduce API calls with composite operations for faster workflows.
- Reliability – 99.99% uptime ensures seamless transactions with low latency.
Entities
1. Customers
Customers are the top-level entities representing individual users or businesses.- A Customer can have a balance associated with it.
- Negative balance → The customer has credit.
- Positive balance → The customer owes that amount.
- A Customer may have multiple Accounts (sub-customer entities).
- A Customer can also have Bills directly associated with them.
2. Accounts
Accounts represent sub-customer entities within a Customer.- An Account can have a balance associated with it.
- Negative balance → The customer has credit.
- Positive balance → The customer owes that amount.
- An Account can have multiple Bills associated with it.
3. Bills
Bills represent one-off payments that need to be collected.- A Bill must belong to either a Customer or an Account.
- A Bill must have an
amount_dueand can optionally have adue_date. - Each Bill has a status field, which can be:
UNPAID→ The bill has not been fully paid.PAID→ The bill has been fully paid.
4. Relationships Between Entities
- Customer → Accounts: A Customer can have multiple Accounts.
- Customer → Bills: A Customer can have multiple Bills.
- Account → Bills: An Account can have multiple Bills.
Use Cases
Example #1: Create a Customer with a Balance
Example #1: Create a Customer with a Balance
Step 1: Create a customer
In this example, for a biller following the Customer model, we will create a new customer, John Doe, with an initial balance of ZAR 20.00.Endpoint : Create CustomerRequest Body:Example #2: Create a customer John Doe with a bill
Example #2: Create a customer John Doe with a bill
Step 1: Create a bill under a new customer
In this example, for a biller following the Bill model (customers with bills), we will create a customer John Doe with a bill with an amount due of ZAR 20.00.Endpoint : Create BillRequest Body:Example #3: Create a customer John Doe with two accounts
Example #3: Create a customer John Doe with two accounts
Step 1: Create an account under a new customer
In this example, for a biller following the Account model, we will create a customer John Doe with one account: “Primary Account”. “Primary Account” has a balance to pay of ZAR 50.00 .Endpoint : Create AccountRequest Body:Step 2: Create the second account under the previously created customer
Now we will create an account: “Secondary Account” for the same customer. “Secondary Account” has a balance to pay of ZAR 20.00 .Endpoint : Create AccountRequest Body:Example #4: Create a customer with an account which has a bill associated with it
Example #4: Create a customer with an account which has a bill associated with it
Step 1: Create a bill under a new account under a new customer
In this example, for a biller following the Bill model, we will create a customer John Doe with a Primary account which has a bill with an amount due of ZAR 20.00.Endpoint : Create BillRequest Body:Example #5: Update the balance for an existing customer
Example #5: Update the balance for an existing customer
Step 1: Update the balance for an existing customer
In this example, we will update a customer with an new balance to pay of ZAR 50.00.Endpoint : Update CustomerRequest Body:Example #6: Update the amount paid by the customer against an existing bill
Example #6: Update the amount paid by the customer against an existing bill
Step 1: Update the amount paid by the customer against an existing bill
In this example, we will set the amount paid by the customer to ZAR 50.00 for an existing bill.Endpoint : Update BillRequest Body:Example #7: Update the name of an existing customer and the metadata of a bill under that customer
Example #7: Update the name of an existing customer and the metadata of a bill under that customer

