### Retrieve Payment Initiation Status (JSON Response Example) Source: https://modulr.readme.io/docs/single-immediate-payments-overview This snippet shows an example JSON response when retrieving the status of a payment initiation. It includes details such as the initiation ID, overall status, payment amount, reference, destination, and the bank's specific payment status. ```json { "id": "I123456789", "status": "EXECUTED", "paymentAmount": { "currency": "GBP", "value": 1.00 }, "paymentReference": "Top Up RB1382731", "destination": { "type": "ACCOUNT", "id": "A1234567" }, "aspspId": "H120000002", "aspspPaymentStatus": "AcceptedSettlementCompleted" } ``` -------------------------------- ### SEPA Webhook Examples (JSON) Source: https://modulr.readme.io/docs/payin-webhook Demonstrates the JSON structure for SEPA Credit Transfer and SEPA Instant payment webhooks. These examples show the details of the payer, payee, amount, currency, and transaction identifiers. ```json { "Type": "PI_SECT", "Payee": { "Name": "Draco Malfoy", "Address": {}, "Identifier": { "Bic": "MOCKGB22XXX", "Iban": "GB17MOCK04001000002271", "Type": "IBAN" } }, "Payer": { "Name": "Dobby", "Address": { "Country": "ES", "AddressLine1": "BERTAMIRANS", "AddressLine2": "DO POETA DA MAIA 17 PISO 3 PUERTA" }, "Identifier": { "Bic": "BBVEESMMXXX", "Iban": "ES4501821265660206212452", "Type": "IBAN" } }, "Amount": "20", "EventId": "a72063a0-8774-4ceb-ab14-401fcd5e7068", "Currency": "EUR", "DateTime": "2020-01-01T07:20:00+0000", "AccountId": "A120C8E2", "EventName": "PAYIN", "EventTime": "2020-01-01T07:20:03+0000", "PayerName": "Draco Malfoy", "PaymentId": "P12000MTB1", "SchemeInfo": { "Id": "NOTPROVIDED", "Name": "SEPA" }, "TransactionId": "T12000N5V4", "PaymentReference": "Payment from Dobby: NOTPROVIDED", "AccountExternalRef": "Draco's Account", "OriginatedOverseas": true } ``` ```json { "Type": "PI_SEPA_INST", "Payee": { "Name": "Draco Malfoy", "Address": {}, "Identifier": { "Bic": "MOCKGB22XXX", "Iban": "GB17MOCK04001000002271", "Type": "IBAN" } }, "Payer": { "Name": "Dobby", "Address": { "Country": "ES", "AddressLine1": "BERTAMIRANS", "AddressLine2": "DO POETA DA MAIA 17 PISO 3 PUERTA" }, "Identifier": { "Bic": "BBVEESMMXXX", "Iban": "ES4501821265660206212452", "Type": "IBAN" } }, "Amount": "20", "EventId": "a72063a0-8774-4ceb-ab14-401fcd5e7068", "Currency": "EUR", "DateTime": "2020-01-01T07:20:00+0000", "AccountId": "A120C8E2", "EventName": "PAYIN", "EventTime": "2020-01-01T07:20:03+0000", "PayerName": "Draco Malfoy", "PaymentId": "P12000MTB1", "SchemeInfo": { "Id": "NOTPROVIDED", "Name": "SEPA_INSTANT" }, "TransactionId": "T12000N5V4", "PaymentReference": "Payment from Dobby: NOTPROVIDED", "AccountExternalRef": "Draco's Account", "OriginatedOverseas": true } ``` -------------------------------- ### Outbound Reversed Payments Webhook Example (JSON) Source: https://modulr.readme.io/docs/payin-webhook Provides a JSON example for an outbound reversed payment webhook. This event uses the 'PAYIN' webhook type and is characterized by the 'PO_REV' type, indicating a payment that was returned after being sent out. ```json { "Type": "PO_REV", "Payee": { "Name": "Ibrahim Tijani", "Address": { "Country": "GB", "AddressLine1": "191 Ballards RoadDagenhamRM10 9AR" }, "Identifier": { "Type": "SCAN", "Country": "GB", "SortCode": "040085", "AccountNumber": "07182376" } }, "Payer": { "Name": "Ibrahim Tijani", "Address": {}, "Identifier": { "Type": "SCAN", "SortCode": "230363", "AccountNumber": "00415988" } }, "Amount": "0.01", "EventId": "b18a3885-082b-410e-96e1-e6be7c4d1d1b", "Currency": "GBP", "DateTime": "2021-12-03T00:01:20+0000", "AccountId": "A216XFNF", "EventName": "PAYIN", "EventTime": "2021-12-03T00:01:21+0000", "PayerName": "Ibrahim Tijani", "PaymentId": "P21071YXQW", "SchemeInfo": { "Id": "17470906129345513 2020211203826232507" }, "ReturnReason": "Account blocked", "TransactionId": "T2109NH5Q1", "OriginalSchemeId": "MODULO00P21071YXQF1020211203826040085", "PaymentReference": "Return: Ibrahim Tijani - 9byGaQj1", "AccountExternalRef": "78a3532d-3315-41db-b8dc-c4f5d525a143", "OriginatedOverseas": false, "OriginatingPayment": { "Institution": {} }, "PaymentAppliedTime": "2021-12-03T00:01:20.841+0000" } ``` -------------------------------- ### Example SEPA Payment Request (JSON) Source: https://modulr.readme.io/docs/outbound-payments An example JSON object representing a SEPA payment request. It includes details such as amount, currency, destination IBAN, source account ID, and reference. This serves as a template for integrating SEPA payments. ```json { "amount": 999.99, "currency": "EUR", "destination": { "type": "IBAN", "iban": "IE52MODR99035500333832", "name": "Beneficiary Name", }, "sourceAccountId": "A1100ABCD1", "reference": "Example Reference" } ``` -------------------------------- ### Retrieve Account Details via API Source: https://modulr.readme.io/docs/inbound-payments-via-swift This JSON response example illustrates the structure returned by the Get Account endpoint. It includes essential fields such as the account ID, currency, and the identifiers array containing IBAN and BIC information required for SWIFT transactions. ```json { "id": "A1111111", "name": "SWIFT Account", "balance": "123456.78", "availableBalance": "123456.78", "currency": "USD", "status": "ACTIVE", "identifiers": [ { "type": "IBAN", "iban": "GB99MODR12345612345678", "bic": "MODRGB23XXX" } ] } ``` -------------------------------- ### Onboarding - Expected Transactional Activity Source: https://modulr.readme.io/reference/createcustomer This endpoint allows you to provide details about the expected transactional activity for onboarding purposes. It includes information about the source of funds, monthly volume, and outbound payment jurisdictions. ```APIDOC ## POST /onboarding/transactional-activity ### Description Submit details about expected transactional activity for onboarding. ### Method POST ### Endpoint /onboarding/transactional-activity ### Parameters #### Request Body - **sourceOfFunds** (string) - Required - The source of the funds. - **monthlyVolume** (integer) - Required - The expected monthly transaction volume. - **outboundPaymentJurisdictions** (array) - Required - A list of ISO 3166-1 alpha-2 country codes representing outbound payment jurisdictions. ### Request Example ```json { "sourceOfFunds": "Business Revenue", "monthlyVolume": 50000, "outboundPaymentJurisdictions": ["GB", "US", "DE"] } ``` ### Response #### Success Response (200) - **message** (string) - A success message indicating the data was received. #### Response Example ```json { "message": "Transactional activity details received successfully." } ``` ``` -------------------------------- ### GET /customers/{customerReference} Source: https://modulr.readme.io/reference/getcustomer Retrieve a specific customer using a unique customer reference starting with 'C'. ```APIDOC ## GET /customers/{customerReference} ### Description Retrieve a specific customer using a unique customer reference. This identifier can be found in the response obtained after creating a new customer, it starts by C, e.g: C0000000. ### Method GET ### Endpoint /customers/{customerReference} ### Parameters #### Path Parameters - **customerReference** (string) - Required - The unique identifier of the customer (e.g., C0000000). ### Request Example GET /customers/C1234567 ### Response #### Success Response (200) - **id** (string) - The unique customer reference. - **name** (string) - The name of the customer. - **status** (string) - The current status of the customer account. #### Response Example { "id": "C1234567", "name": "John Doe", "status": "ACTIVE" } ``` -------------------------------- ### POST /onboarding/associates Source: https://modulr.readme.io/reference/createcustomer Create or update an associate profile for an onboarding application. ```APIDOC ## POST /onboarding/associates ### Description Creates or updates an associate profile associated with a customer legal entity for onboarding purposes. ### Method POST ### Endpoint /onboarding/associates ### Parameters #### Request Body - **complianceId** (string) - Optional - Application Associate Compliance ID - **taxIdentifiers** (array) - Optional - Tax identifiers for the associate - **taxResidencies** (array) - Optional - Tax residencies for the associate - **documentDetails** (array) - Optional - Document details for the associate - **departmentCode** (string) - Optional - Department code for the associate - **placeOfBirth** (object) - Optional - Place of birth of the associate - **sex** (string) - Optional - Biological sex (MALE, FEMALE) - **nationalities** (array) - Optional - List of ISO country codes for nationalities ### Request Example { "complianceId": "COMP-12345", "taxResidencies": ["GB"], "sex": "MALE", "nationalities": ["GB"] } ### Response #### Success Response (200) - **status** (string) - The status of the operation #### Response Example { "status": "SUCCESS" } ``` -------------------------------- ### POST /onboarding/customer Source: https://modulr.readme.io/reference/createcustomer Endpoint for submitting customer onboarding data, including industry-specific details and compliance information. ```APIDOC ## POST /onboarding/customer ### Description Submits comprehensive onboarding data for a new customer, including mandatory legal entity information and optional industry-specific data structures. ### Method POST ### Endpoint /onboarding/customer ### Parameters #### Request Body - **legalEntity** (object) - Required - The legal entity details of the customer. - **type** (string) - Required - The type of customer (e.g., SOLETRADER, PREQUALIFIED). - **taxProfile** (object) - Optional - Tax profile for SOLETRADER customers. - **complianceData** (object) - Optional - Required for PREQUALIFIED customers. - **construction** (object) - Optional - Industry-specific data for the construction sector, including turnoverCashPercentage. - **legal** (object) - Optional - Industry-specific data for the legal sector, including lawSocietyNumber. ### Request Example { "legalEntity": { "name": "Example Corp" }, "type": "SOLETRADER", "construction": { "turnoverCashPercentage": 50 } } ### Response #### Success Response (200) - **status** (string) - The status of the onboarding submission. #### Response Example { "status": "SUCCESS" } ``` -------------------------------- ### GET /customers/{customerId} Source: https://modulr.readme.io/reference/getcustomer Retrieve a specific customer using a unique customer reference. This identifier can be found in the response obtained after creating a new customer, it starts by C, e.g: C0000000 ```APIDOC ## GET /customers/{customerId} ### Description Retrieve a specific customer using a unique customer reference. This identifier can be found in the response obtained after creating a new customer, it starts by C, e.g: C0000000 ### Method GET ### Endpoint /customers/{customerId} ### Parameters #### Path Parameters - **customerId** (string) - Required - ID of customer to fetch #### Query Parameters - **statuses** (array[string]) - Optional - Customer statuses allowed when fetching the customer. Allowed values: ACTIVE, CLOSED, BLOCKED. Defaults to ["ACTIVE"] ### Request Example ```json { "example": "Not applicable for GET request body" } ``` ### Response #### Success Response (200) - **id** (string) - Unique identifier for a Customer. Begins with 'C' - **name** (string) - Customer's company name - must be unique across the Modulr platform. - **brandNames** (array[object]) - The customers brand name(s) - **type** (string) - Customer type #### Response Example ```json { "id": "C00000001", "name": "Example Corp", "brandNames": [ { "name": "Example Brand" } ], "type": "BUSINESS" } ``` #### Error Response (400) - **field** (string) - The field that caused the error. - **code** (string) - The error code. - **errorCode** (string) - Specific error code. - **message** (string) - Error message. - **sourceService** (string) - The service that generated the error. #### Error Response Example ```json [ { "field": "customerId", "code": "INVALID", "errorCode": "INVALID_CUSTOMER_ID", "message": "Customer ID is invalid.", "sourceService": "customer-service" } ] ``` ``` -------------------------------- ### Create a Virtual Business Card via Modulr API Source: https://modulr.readme.io/docs/getting-started-with-virtual-cards Demonstrates how to initiate a POST request to the Modulr API to create a new virtual business card. It requires an account ID, cardholder details, spending limits, and the appropriate product code. ```curl curl --request POST \ --url https://api-sandbox.modulrfinance.com/api-sandbox/accounts/A1200000/cards \ --header 'accept: application/json;charset=UTF-8' \ --header 'content-type: application/json;charset=UTF-8' \ --data '{"expiry":"2019-12","externalRef":"EXT_REF","holder":{"firstName":"Joe","lastName":"Bloggs","title":"Mr"},"limit":1000,"productCode":"O120001M"}' ``` -------------------------------- ### Onboarding Data Schemas Source: https://modulr.readme.io/reference/createcustomer Definitions for business onboarding data structures including Know Your Business (KYB) details and tax identification requirements. ```APIDOC ## Schema: onboarding.KnowYourBusiness ### Description Represents the core business information required for the onboarding process. ### Properties - **tradingName** (string) - The trading name of the business - **incorporationDate** (string, date) - Incorporation Date of the business - **businessActivities** (string) - The business activities of the business - **onlinePresenceUrl** (string) - The online presence URL of the business - **expectedMonthlyTransactions** (integer, int64) - Expected Monthly Transactions of the business ## Schema: onboarding.TaxIdentifier ### Description Defines the tax identification details including the issuing country. ### Properties - **country** (string) - ISO Alpha-2 country code where the tax identifier was issued. ## Schema: onboarding.ConsumerDuty ### Description Captures information regarding consumer duty compliance. ### Properties - **scope** (string) - Enum: ["IN_SCOPE", "NOT_IN_SCOPE"] - **numberOfEmployees** (integer) - Number of employees in the organization - **netAssets** (number) - Total net assets - **turnover** (number) - Total annual turnover ``` -------------------------------- ### Connected Data Fields Mapping Source: https://modulr.readme.io/docs/reconciliation This section maps common data fields across Modulr API endpoints (Get Payments, Get Transactions) and webhooks (PAYIN, PAYOUT). ```APIDOC ## Connected Data Fields Mapping This table illustrates how data fields correspond between different Modulr API endpoints and webhooks. ### Table | Field Name | Get Payments | Get Transactions | PAYIN Webhook | PAYOUT Webhook | |----------------------------|---------------------|------------------|-------------------|-------------------| | Modulr Payment ID (Pbid) | id | sourceId | PaymentId | PaymentId | | Modulr Transaction ID (Tbid)| N/a | id | TransactionId | TransactionId | | Receiving Account (ABid) | accountNumber | account / id | AccountId | N/a | | Payment External Reference | externalReference | N/a | SourceExternalReference | ExternalReference | | Payment Scheme Identifier | schemeId | schemeInfo / id | schemeId | schemeInfo / Id | | Payment Scheme Reference | originalReference, paymentDescription, (part of) Description | (part of) Description | (part of) PaymentReference | Reference | **Note:** Fields marked as '(part of)' indicate concatenated data. For example, the Payment Scheme Reference can include the payer's name and a description. ``` -------------------------------- ### POST /upload Source: https://modulr.readme.io/docs/customer Uploads KYC documentation for a customer. This is a mandatory step before creating a customer if the agreement requires KYC information. ```APIDOC ## POST /upload ### Description Uploads KYC documentation required for customer verification. The content must be Base64 encoded and limited to PNG, JPEG, JPG, or PDF formats. ### Method POST ### Endpoint /upload ### Parameters #### Request Body - **Filename** (string) - Required - The name of the file being uploaded - **Content** (string) - Required - The Base64 encoded version of the file (PNG, JPEG, JPG, PDF) - **Group** (string) - Required - Combination of Partner name and Customer name ### Request Example { "Filename": "passport.pdf", "Content": "/9j/4AAQSkZJRgABAQEAYABgAAD...", "Group": "PartnerName_CustomerName" } ### Response #### Success Response (200) - **status** (string) - Confirmation of successful upload #### Response Example { "status": "success", "message": "Document uploaded successfully" } ``` -------------------------------- ### Payments Out with APIs and Webhooks Source: https://modulr.readme.io/docs/reconciliation Explains the process for making external payments using the 'Create a Payment' API and how webhooks are triggered for confirmation. ```APIDOC ## Payments Out Payments to external bank accounts are also initiated using the `Create a Payment` API endpoint. ### Process Flow 1. **Initiation**: Use the [Create a Payment](https://modulr.readme.io/reference/sendpayment) endpoint to send funds from a Modulr account to an external bank account. 2. **Payer Account**: A payment and a debit transaction will be recorded on the sending Modulr account. The `PAYOUT` webhook will trigger upon confirmation from the payment scheme (e.g., Faster Payments, SEPA), updating the Payment record with the scheme reference. ### Data Availability * **Get Payments**: Provides information on payment types, status, etc. * **Get Transactions**: Retrieves all processed credits and debits for a specific account. ``` -------------------------------- ### Customer Onboarding API Source: https://modulr.readme.io/reference/createcustomer This section details the structure and requirements for onboarding a new customer to the Modulr platform. It includes information about customer types, required fields, and address details. ```APIDOC ## POST /onboarding/customer ### Description This endpoint is used to onboard a new customer to the Modulr platform. It requires specific details about the customer, including their name, address, and type. ### Method POST ### Endpoint /onboarding/customer ### Parameters #### Request Body - **firstName** (string) - Required - The first name of the individual or a representative of the business. - **lastName** (string) - Required - The last name of the individual or a representative of the business. - **homeAddress** (object) - Required - The primary address of the customer. - **street** (string) - Required - The street name and number. - **city** (string) - Required - The city or town. - **postalCode** (string) - Required - The postal code or ZIP code. - **countryCode** (string) - Required - The ISO 3166-1 alpha-2 country code (e.g., "GB", "US"). - **type** (string) - Required - The type of customer. See `onboarding.Customer.type` for allowed values. ### Request Example ```json { "firstName": "John", "lastName": "Doe", "homeAddress": { "street": "10 Downing Street", "city": "London", "postalCode": "SW1A 2AA", "countryCode": "GB" }, "type": "INDIVIDUAL" } ``` ### Response #### Success Response (201 Created) - **id** (string) - The unique identifier for the newly created customer. - **name** (string) - The customer's name. - **type** (string) - The type of the customer. - **status** (string) - The status of the customer (e.g., "ACTIVE"). - **verificationStatus** (string) - The verification status of the customer. #### Response Example ```json { "id": "C00000001", "name": "John Doe", "type": "INDIVIDUAL", "status": "ACTIVE", "verificationStatus": "UNVERIFIED" } ``` ``` -------------------------------- ### Handle Payment Approval Status Change Webhook Payloads Source: https://modulr.readme.io/docs/payment-approval-rejection-webhook JSON payload examples for the PAYMENTAPPROVALSTATUSCHANGE webhook. These examples demonstrate the structure of the event data received when a payment is either approved or rejected. ```json { "EventId": "28aaaaaa-eee6-4111-11b4-a72050abae02", "EventTime": "2025-04-07T13:16:29+0000", "ExternalReference": "", "CustomerId": "C211111", "ApprovalStatus": "APPROVED", "PaymentId": "P210000000", "EventName": "PAYMENTAPPROVALSTATUSCHANGE" } ``` ```json { "EventId": "28aaaaaa-eee6-4111-11b4-a72050abae02", "EventTime": "2025-04-07T13:16:29+0000", "ExternalReference": "", "CustomerId": "C211111", "ApprovalStatus": "REJECTED", "PaymentId": "P210000000", "EventName": "PAYMENTAPPROVALSTATUSCHANGE" } ``` -------------------------------- ### Onboarding API Endpoints Source: https://modulr.readme.io/reference/createcustomer This section details the API endpoints related to the onboarding process, including address, document, and tax profile management. ```APIDOC ## GET /onboarding/address ### Description Retrieves the address details for an onboarding process. ### Method GET ### Endpoint /onboarding/address ### Parameters #### Query Parameters - **accountId** (string) - Required - The unique identifier for the account. ### Response #### Success Response (200) - **addressLine1** (string) - The first line of the address. - **addressLine2** (string) - The second line of the address (optional). - **postTown** (string) - The postal town. - **postCode** (string) - The postal code. - **country** (string) - The country code (ISO 3166-1 alpha-2). - **countrySubDivision** (string) - The country subdivision (e.g., state, province). #### Response Example ```json { "addressLine1": "123 Main St", "addressLine2": "Apt 4B", "postTown": "Anytown", "postCode": "12345", "country": "US", "countrySubDivision": "CA" } ``` ``` ```APIDOC ## POST /onboarding/address ### Description Submits or updates the address details for an onboarding process. ### Method POST ### Endpoint /onboarding/address ### Parameters #### Request Body - **addressLine1** (string) - Required - The first line of the address. - **addressLine2** (string) - Optional - The second line of the address. - **postTown** (string) - Required - The postal town. - **postCode** (string) - Required - The postal code. - **country** (string) - Required - The country code (ISO 3166-1 alpha-2). - **countrySubDivision** (string) - Optional - The country subdivision (e.g., state, province). ### Request Example ```json { "addressLine1": "123 Main St", "postTown": "Anytown", "postCode": "12345", "country": "US" } ``` ### Response #### Success Response (200) - **message** (string) - A success message indicating the address was updated. #### Response Example ```json { "message": "Address updated successfully." } ``` ``` ```APIDOC ## POST /onboarding/document ### Description Uploads a document as part of the onboarding process. ### Method POST ### Endpoint /onboarding/document ### Parameters #### Request Body - **fileName** (string) - Required - The name of the file. - **path** (string) - Required - The path to the uploaded file. - **uploadedDate** (string) - Required - The date and time the file was uploaded in 'yyyy-MM-dd'T'HH:mm:ssZ' format. ### Request Example ```json { "fileName": "id_document.pdf", "path": "/uploads/documents/id_document.pdf", "uploadedDate": "2023-10-27T10:00:00Z" } ``` ### Response #### Success Response (200) - **message** (string) - A success message indicating the document was uploaded. #### Response Example ```json { "message": "Document uploaded successfully." } ``` ``` ```APIDOC ## POST /onboarding/tax-profile ### Description Submits or updates the customer's tax profile information. ### Method POST ### Endpoint /onboarding/tax-profile ### Parameters #### Request Body - **taxIdentifier** (string) - Optional - The tax identifier for SOLETRADER customers. Not applicable for other customer types. ### Request Example ```json { "taxIdentifier": "1234567890" } ``` ### Response #### Success Response (200) - **message** (string) - A success message indicating the tax profile was updated. #### Response Example ```json { "message": "Tax profile updated successfully." } ``` ``` ```APIDOC ## GET /onboarding/screening-results ### Description Retrieves the screening results for an onboarding process. ### Method GET ### Endpoint /onboarding/screening-results ### Parameters #### Query Parameters - **accountId** (string) - Required - The unique identifier for the account. ### Response #### Success Response (200) - **adverseMedia** (array of strings) - A list of adverse media findings. - **peps** (array of strings) - A list of Politically Exposed Persons findings. - **sanctions** (array of strings) - A list of sanctions findings. #### Response Example ```json { "adverseMedia": ["Article about company misconduct"], "peps": ["Politician X"], "sanctions": ["Sanctioned entity Y"] } ``` ``` -------------------------------- ### GET /accounts/customers Source: https://modulr.readme.io/reference/getcustomers Retrieves a paginated list of customers. ```APIDOC ## GET /accounts/customers ### Description Returns a paginated list of customers with metadata regarding page size and total counts. ### Method GET ### Endpoint /accounts/customers ### Parameters #### Query Parameters - **page** (integer) - Optional - Current page number, 0 based - **size** (integer) - Optional - Page size ### Response #### Success Response (200) - **content** (array) - List of customer objects - **size** (integer) - Page size - **totalSize** (integer) - Total count of customers - **page** (integer) - Current page number - **totalPages** (integer) - Total number of pages #### Response Example { "content": [], "size": 20, "totalSize": 100, "page": 0, "totalPages": 5 } ``` -------------------------------- ### Define Onboarding Data Models using JSON Schema Source: https://modulr.readme.io/reference/createcustomer These JSON schema definitions outline the structure and validation rules for onboarding objects. They include requirements for address details, tax identifiers, and expected transactional activity. ```json { "onboarding.AddressRequest": { "type": "object", "properties": { "addressLine1": { "type": "string", "maxLength": 50 }, "postTown": { "type": "string", "maxLength": 50 }, "postCode": { "type": "string", "maxLength": 10 } }, "required": ["addressLine1", "postTown"] }, "onboarding.CustomerTaxProfileResponse": { "type": "object", "properties": { "taxIdentifier": { "type": "string" } }, "required": ["taxIdentifier"] }, "onboarding.ExpectedTransactionalActivityResponse": { "type": "object", "properties": { "sourceOfFunds": { "type": "string" }, "monthlyVolume": { "type": "integer", "format": "int32" }, "outboundPaymentJurisdictions": { "type": "array", "items": { "type": "string" } } } } } ``` -------------------------------- ### Create Payment Source: https://modulr.readme.io/reference/gettransactionsbyaccount Initiate a new payment, specifying details like amount, currency, and beneficiary information. ```APIDOC ## POST /payments ### Description Initiates a new payment transaction. ### Method POST ### Endpoint /payments ### Parameters #### Request Body - **accountId** (string) - Required - The ID of the account from which to make the payment. - **amount** (string) - Required - The amount to be paid, in the format 'NN.NN'. - **currency** (string) - Required - The currency code for the payment (e.g., 'GBP', 'EUR'). - **beneficiary** (object) - Required - Details of the payment beneficiary. - **type** (string) - Required - Type of beneficiary (e.g., 'individual', 'company'). - **name** (string) - Required - Name of the beneficiary. - **iban** (string) - Required if beneficiary type is not 'US' - The International Bank Account Number. - **sortCode** (string) - Required if beneficiary type is 'UK' - The UK sort code. - **accountNumber** (string) - Required if beneficiary type is 'UK' - The UK account number. - **abaRoutingNumber** (string) - Required if beneficiary type is 'US' - The 9 digit ABA routing number. ### Request Example ```json { "accountId": "A0000001", "amount": "100.50", "currency": "GBP", "beneficiary": { "type": "individual", "name": "John Doe", "sortCode": "112233", "accountNumber": "44556677" } } ``` ### Response #### Success Response (201) - **paymentId** (string) - The unique identifier for the created payment. - **status** (string) - The initial status of the payment (e.g., 'PENDING'). #### Response Example ```json { "paymentId": "P0000001", "status": "PENDING" } ``` ``` -------------------------------- ### Example PAYOUT Webhook JSON Source: https://modulr.readme.io/docs/payout-webhook This JSON object represents an example of a PAYOUT webhook event for an internal transfer. It includes details such as the amount, status, event IDs, timestamps, account information, and payment references. ```json { "Amount": "19.28", "Status": "PROCESSED", "EventId": "a13bd641-4a19-4814-b121-2d58adc15623", "DateTime": "2024-02-02T02:02:022+0000", "AccountId": "A1201HT721", "EventName": "PAYOUT", "EventTime": "2024-02-02T02:02:024+0000", "PaymentId": "P120DD1AB2", "TransactionId": "T120A3VX22", "TransactionType": "INT_INTERC" } ``` -------------------------------- ### CARDAUTHOFFLINE Webhook Event Example Source: https://modulr.readme.io/docs/card-notifications This JSON object shows an example payload for the CARDAUTHOFFLINE webhook event, used for offline authorizations. It provides details similar to CARDAUTH but signifies an offline transaction, which is for informational purposes before settlement. ```json { "MCC": "6011", "CardId": "V110000009", "EventId": "cfb9931a-673f-43da-8a7c-6f83d90f6297", "OrderId": "8", "AccountId": "A1100003", "EventName": "CARDAUTHOFFLINE", "EventTime": "2020-11-03T15:11:44+0000", "ActivityId": "X110000008", "AuthCode": "987654321", "ActivityType": "AUTHORISATION", "MerchantID": "12345678", "MerchantName": "CASHZONE", "BillingAmount": "100.00", "BillingCurrency": "GBP", "MerchantCountry": "GBR", "TransactionAmount": "100.00", "ActivityCreatedDate": "2020-11-03T15:11:44+0000", "TransactionCurrency": "GBP" } ``` -------------------------------- ### CARDAUTH Webhook Event Example Source: https://modulr.readme.io/docs/card-notifications This JSON object represents an example payload for the CARDAUTH webhook event, indicating an approved card authorization. It includes details such as card ID, merchant information, transaction amounts, and authorization codes. ```json { "MCC": "6011", "CardId": "V110000009", "FxRate": "1.000000", "EventId": "cfb9931a-673f-43da-8a7c-6f83d90f6297", "OrderId": "8", "AccountId": "A1100003", "EventName": "CARDAUTH", "EventTime": "2020-11-03T15:11:44+0000", "ActivityId": "X110000008", "AuthCode": "987654321", "ActivityType": "AUTHORISATION", "MerchantID": "12345678", "MerchantName": "CASHZONE", "BillingAmount": "100.00", "VerifiedBy3DS": "true", "ActivityStatus": "APPROVED", "BillingCurrency": "GBP", "MerchantCountry": "GBR", "TransactionAmount": "100.00", "ActivityCreatedDate": "2020-11-03T15:11:44+0000", "TransactionCurrency": "GBP", "TransactionType": "ATM", "InputMethod": "EMV_PIN" } ```