# JPMC-PDP Documentation from https://developer.payments.jpmorgan.com # Add an account for your client When you add a new client to Embedded Payments, you must create a limited DDA account in their name. Your client can view balances and interact with this account on your platform, with the platform sending instructions as your client’s agent. ### Types of account You can add two types of account for your client: - LIMITED_DDA - LIMITED_DDA_PAYMENTS Funds held in a LIMITED_DDA account are not immediately available to clients. The platform maintains security interest over these funds until the platform is ready to settle to an account in the client’s control. Funds held in a LIMITED_DDA_Payments account are immediately available to the client. This account can accept inbound funds from your platform and third parties via an externally addressable account number. This account can be used by your clients to settle to an account in your clients’ control, or for your client to make a business-related payment to recipients. ## Create your client's account As soon as your client has completed onboarding, you can create their Embedded Payments Limited DDA bank account. This is the account into which money can be paid for your client. Rules around the types of recipients from this account are dependent on the account type selected and can include your client settling to themselves or making a business payment. To create an account: 1. Confirm that the status is APPROVED by calling GET do/v1/clients/{id}. 2. Send a POST /accounts request. Your request must include: - clientId - label - must always be MAIN. - category - the type of account for your client. There are two account categories: - LIMITED_DDA: Accounts under this category do not have an externally addressable account number, which means they can only be used for settlement from the platform. For example, you cannot receive or make payments into this account from any external bank account. - LIMITED_DDA_PAYMENTS: Accounts under this category have an active account number. This means they can receive payments from any external bank account for payment activities related to your client’s business. These accounts can also be used to make business related payments to external parties. Note: Clients will not be able to fund their accounts via RTP until the next business day. Sample request body: ```json { "clientId": "1000010400", "label": "MAIN", "category": "LIMITED_DDA_PAYMENTS" } ``` Sample response: ```json { "id": "d5aaf0db11e747daa2d955806f6eb14e", "clientId": "1000010400", "label": "MAIN", "state": "OPEN", "category": "LIMITED_DDA", "createdAt": "2023-10-28T20:56:55.074Z" } ``` ## Get details of an account You can use `GET /accounts/{id}` to return the details of an account. If you need to get the ID for your client's account, you can use `GET /accounts`. The `ID` field in the response contains the account ID to use when requesting account details. > The response for a `GET /accounts/{id}` request does not contain any balance information. For this you must make an additional call to `GET /accounts/{id}/balances.` > `GET /accounts/{id}`sample request: `curl -v [https://base-url/tsapi/ef/v1/accounts/d5aaf0db11e747daa2d955806f6eb14e](/v1/accounts/d5aaf0db11e747daa2d955806f6eb14e)` ```curl curl -v "https://base-url/tsapi/ef/v1/accounts/d5aaf0db11e747daa2d955806f6eb14e" ``` Sample response: ```json { "id": "d5aaf0db11e747daa2d955806f6eb14e", "clientId": "1000010400", "label": "MAIN", "state": "OPEN", "category": "LIMITED_DDA", "createdAt": "2023-10-28T20:56:55.074Z" } ``` ### What is returned in a GET /accounts/{id} request The `GET /accounts/{id}` request lists minimal account information for each account available. **Minimal account information** | Field | Details | | --- | --- | | id | The unique ID for this account. This is used for API calls to make transactions to and from the account. | | category | The account category for your client's Embedded Payments account could be LIMITED_DDA. Your accounts could be PROCESSING, MANAGEMENT, or LIMITED_DDA_PAYMENTS. | | createdAt | The time and date when the account was created. | | clientId | The ID for your client. | | state | Whether the account is OPEN, CLOSED or PENDING_CLOSE. | | PaymentRoutingInformation | An object containing the account number, routing details, and status for the account: - accountNumber: The unique number assigned to the account, used for identifying the account in transactions. - country: The country associated with the account. - routingInformation: An array containing routing details for the account. Each routing detail includes: - type: The type of routing information, such as “ABA” for American Bankers Association routing numbers - value: The actual routing number value. - status: indicates whether the account can receive inbound funds via an externally addressable account number. The account can be ACTIVE or INACTIVE depending on the account category. - ACTIVE: Allows for both internal and external transactions, enabling the account to send and receive funds from external accounts. - INACTIVE: Indicates the account cannot receive inbound funds via an externally addressable account number. The account is able to make payments to external accounts. It also remains available for inbound and outbound internal transfers. | ```curl GET /accounts/{id} curl -v "https://base-url/api/v1/accounts/11e0b423d1914a619ec34ad85cff4b1b" ``` ```json { "id": "11e0b423d1914a619ec34ad85cff4b1b", "clientId": "0035199111", "label": "MAIN1234", "state": "OPEN", "paymentRoutingInformation": { "accountNumber": "20000046327264", "country": "US", "routingInformation": [ { "type": "ABA", "value": "028000024" } ], "status": "ACTIVE" }, "category": "LIMITED_DDA_PAYMENTS", "createdAt": "2025-06-11T13:49:48.286364Z" } ``` ## Get the balance of an account To get the balance of each account, you can use `GET /accounts/{id}/balances.` If showing the account balances on a table with all available accounts, you can make this call using account IDs returned from a `GET /accounts` request. The balances are returned according to their `balanceTypes`. The balance types are: - ITAV (interim available balance). This is the available balance at the time of the request. - ITBD (interim booked balance). This is the booked or cleared balance at the time of the request, and may not include transactions that have not yet completed. Sample request: ```curl curl -v "https://base-url/ef/v1/accounts/d5aaf0db11e747daa2d955806f6eb14e/balances" ``` Sample response showing an ITBD of $200 more than the ITAV: ```json { "id": "d5aaf0db11e747daa2d955806f6eb14e", "date": "2023-10-28", "currency": "USD", "balanceTypes": [ { "typeCode": "ITAV", "amount": 5558.42 }, { "typeCode": "ITBD", "amount": 5758.42 } ] } ``` ## Your accounts As a platform owner, you have access to one or more of: - Processing Account – Created for you by J.P. Morgan. Enables you to accept funds directly from merchant acquirers or other platform level J.P. Morgan accounts. These accounts are optional if you already have a Sponsored Account or Client Money Account with J.P. Morgan. With the API, you can check the balance and details of this account. - Management Account – Created for you by J.P. Morgan. Enables you to allocate funds owed to you for commissions, platform fees, or other funds due to your platform. These accounts are optional and configured based on your needs. With the API, you can check the balance and details of this account. - DDA (Demand Deposit Account) Treasury Account – Created for you by J.P. Morgan. Allows you to fund Processing, Limited_DDA, or LIMITED_DDA_Payments Accounts or make payouts from Processing or Management Accounts to your other Treasury Accounts with J.P. Morgan. No balances are returned for these accounts. With the API, you can check the details of this account, but not the balance. To get the balance of any of your accounts, use `GET /accounts/{id}/balance` detailed in the [guide to account balances](/docs/embedded-finance-solutions/embedded-payments/capabilities/embedded-payments/how-to/add-account#get-the-balance-of-an-account) on this page. ## Reference The following fields are used when making `POST` requests to the Accounts resource: **Reference table** | Query Parameter | Description | Format | Example | | --- | --- | --- | --- | | clientID | Unique client identifier | <= 10 characters | 0030000132 | | id | Unique account identifier | <= 32 characters (without dashes) | aadda765e14741c5a44acc570af517ab | ## Next steps [Link your client's external bank account](/docs/embedded-finance-solutions/embedded-payments/capabilities/embedded-payments/how-to/add-linked-account) so you can make payments to them.