Skip to content

Prana API (1.0)

API Definition to interact with Prana platform

Download OpenAPI description
Languages
Servers

https://api.prana.software/

Stock Regularization

Manage your Stock Regularizations

Operations
Operations
Operations
Operations
Operations
Operations
Operations
Operations

Stock Transfer

Manage your Stock Transfers

Operations
Operations

Request

Get a specific customer.

Path
idinteger(int32)required
curl -i -X GET \
  'https://api.prana.software/api/v1/customer/{id}'

Responses

OK

Bodyapplication/json
idinteger(int32)required

Customer unique identifier.

Example: 1201
activityobject(ApiCustomerActivityListReadDto)
brandobject(ApiBrandListReadDto)
vatobject(ApiCustomerVatTypeListReadDto)
initialSeasonobject(ApiSeasonListReadDto)
countryobject(ApiCountryListReadDto)
stateobject(ApiStateListReadDto)
cifstring

Tax identification code (CIF/NIF).

Example: "B12345678"
namestring

Legal name of the customer.

Example: "Acme S.A."
postalCodestring

Postal code.

Example: "03001"
citystring

Customer city.

Example: "Alicante"
firstPhoneNumberstring

First phone number.

Example: "+34600111222"
secondPhoneNumberstring

Second phone number.

Example: "+34600333444"
addressstring

Postal address of the customer.

Example: "Av. de la Estación, 5"
emailstring

Customer email address.

Example: "info@acme.es"
codeinteger(int32)

Customer numeric code. Unique per company.

Example: 10001
idKeystring(ApiTaxIdentificationCodeEnum)
Enum"NIF""NIF_IVA""PASSPORT""OFFICIAL_IDENTIFICATION_DOCUMENT""TAX_RESIDENCE_CERTIFICATE""OTHER_DOCUMENT_PROBATIONARY""NOT_REGISTERED"
Example: "NIF"
commercialNamestring

Commercial name.

Example: "Acme España"
creationDatestring(date)

Date of customer creation. Format: yyyy-MM-dd

Example: "2020-01-01"
inactiveDatestring(date)

Date when customer became inactive. Format: yyyy-MM-dd

Example: "2023-08-07"
ownSupplierstring

Supplier code for own-company suppliers.

Example: "SUPPL001"
invoiceGroupingstring(ApiInvoiceGroupingEnum)
Enum"DELIVERY_NOTES""ADDRESSES"
Example: "DAILY"
isSingleDeliveryNotePerOrderboolean

True if a single delivery note per order is required.

Example: false
showPVPRboolean

True if PVP rates are shown for the customer.

Example: true
evaluateDeliveryNoteboolean

True if delivery notes must be evaluated for this customer.

Example: false
servicePriorityinteger(int32)

Priority for services assigned to the customer.

Example: 1
ordersCopiesinteger(int32)

Number of order copies to print.

Example: 1
deliveryNoteCopiesinteger(int32)

Number of delivery note copies to print.

Example: 1
packingCopiesinteger(int32)

Number of packing list copies to print.

Example: 1
invoicesCopiesinteger(int32)

Number of invoice copies to print.

Example: 1
activeB2bboolean

True if the customer has active B2B access.

Example: true
b2bUserstring

B2B access username.

Example: "acmeusr"
ropoCodestring

ROPO inscription code.

Example: "ROPO-2020-CR-001"
ropoExpireDatestring(date)

ROPO expiration date. Format: yyyy-MM-dd

Example: "2025-12-31"
productSupplierboolean

True if the customer is also a product supplier.

Example: false
managerobject(ApiUsersReadDto)
unitsSoldnumber

Total units sold.

Example: 12000.5
unitsSendnumber

Total units sent.

Example: 12500
pendingSendnumber

Number of units pending to send.

Example: 200
billednumber

Total billed amount.

Example: 15400.2
amountDuenumber

Total outstanding amount due.

Example: 1500
unpaidnumber

Amount of unpaid bills.

Example: 500
customerAddressesArray of objects(ApiCustomerAddressListReadDto)

List of customer addresses. See ApiCustomerAddressListReadDto.java for structure.

geographicalLocationstring(ApiGeographicalLocationEnum)
Enum"CEUTA_MELILLA_CANARIAS""COMMUNITY""NATIONAL""OTHERS"
Example: "EUROPE"
languageobject(ApiLanguageListReadDto)
isActiveboolean

True if the customer is active.

Example: true
paymentMethodobject(ApiPaymentMethodListReadDto)
firstTerminteger(int32)

First payment term (days).

Example: 30
termsinteger(int32)

Number of payment terms.

Example: 1
daysTermsinteger(int32)

Number of days per payment term.

Example: 30
proximityTypestring(ApiProximityTypeEnum)
Enum"NEARBY""PREVIOUS""LATER"
Example: "LOCAL"
discount1number

First discount rate (percentage).

Example: 5
discount2number

Second discount rate (percentage).

Example: 2
discount3number

Third discount rate (percentage).

Example: 1.5
discount4number

Fourth discount rate (percentage).

Example: 0
discountPpnumber

Cash discount rate (percentage).

Example: 1
withholdingnumber

Withholding tax rate (percentage).

Example: 0
noProgressiveDiscountsboolean

No progressive discounts applied.

Example: false
paymentDay1integer(int32)

Day of first payment.

Example: 10
paymentDay2integer(int32)

Day of second payment.

Example: 20
paymentDay3integer(int32)

Day of third payment.

Example: 30
weekdaystring(ApiWeekDayEnum)
Enum"MONDAY""TUESDAY""WEDNESDAY""THURSDAY""FRIDAY""SATURDAY""SUNDAY"
Example: "MONDAY"
accountstring

Customer account number.

Example: "ES9820385778983000760236"
swiftstring

SWIFT code.

Example: "CAIXESBBXXX"
bicstring

BIC code.

Example: "CAIXESBBXXX"
sepaDatestring(date)

Date when SEPA signed. Format: yyyy-MM-dd

Example: "2022-06-17"
currencyobject(ApiCurrencyListReadDto)
rateCodeobject(ApiRateCodeListReadDto)
accountingAccountobject(ApiChartAccountListReadDto)
salesAccountobject(ApiChartAccountListReadDto)
bankNamestring

Name of the customer's bank.

Example: "Santander"
contactPersonstring

Main contact person.

Example: "Juan Pérez"
webstring

Web URL.

Example: "https://www.acme.es"
modifiedOnstring(date-time)

When information was last updated. Format: yyyy-MM-dd'T'HH:mm:ss

Example: "2024-08-07T12:30:00"
picturestring

Picture or logo (URL or base64).

Example: "https://www.acme.es/logo.png"
pictureTokenstring

Authentication token for the picture file.

Example: "xyz-token-241235"
observationsArray of objects(ApiCustomerObservationListReadDto)

List of customer observations. See ApiCustomerObservationListReadDto.java for structure.

filesArray of objects(ApiCustomerFileListReadDto)

List of files associated to the customer. See ApiCustomerFileListReadDto.java for structure.

incomeTaxRatenumber

Percentage of income tax for the customer.

Example: 19
sameBillingAndShippingAddressboolean

True if billing and shipping address are the same.

Example: true
irpfTypestring(ApiIRPFTypeEnum)
Enum"LEASES""PROFESIONAL_ACTIVITIES""AGRO"
Example: "GENERAL"
tagsArray of strings

Tags assigned to the customer.

Example: ["VIP","EXPORT"]
administrativeCenterAccountingOfficestring

Administration center - accounting office.

Example: "CC AA Madrid"
administrativeCenterManagingBodystring

Administration center - managing body.

Example: "Dirección Territorial"
administrativeCenterProcessingUnitstring

Administration center - processing unit.

Example: "P-1236"
administrativeCenterProposingBodystring

Administration center - proposing body.

Example: "Oficina Central"
vatOperationTypeobject(ApiVatOperationTypeListReadDto)
Response
application/json
{ "id": 1201, "activity": { "id": 1, "code": "COM-01", "description": "Wholesale Commerce" }, "brand": { "id": 1, "code": "NIKE" }, "vat": { "id": 1, "code": "GENERAL", "description": "General VAT type" }, "initialSeason": { "id": 1, "code": "string", "description": "string", "isCurrent": true, "startDate": "2019-08-24", "endDate": "2019-08-24" }, "country": { "id": 1, "code": 724, "description": "Spain", "isoCode": "US", "customerVatType": "GENERAL", "geographicalLocation": "NATIONAL" }, "state": { "id": 1, "code": "string", "description": "string", "country": { … }, "isoCode": "string" }, "cif": "B12345678", "name": "Acme S.A.", "postalCode": "03001", "city": "Alicante", "firstPhoneNumber": "+34600111222", "secondPhoneNumber": "+34600333444", "address": "Av. de la Estación, 5", "email": "info@acme.es", "code": 10001, "idKey": "NIF", "commercialName": "Acme España", "creationDate": "2020-01-01", "inactiveDate": "2023-08-07", "ownSupplier": "SUPPL001", "invoiceGrouping": "DELIVERY_NOTES", "isSingleDeliveryNotePerOrder": false, "showPVPR": true, "evaluateDeliveryNote": false, "servicePriority": 1, "ordersCopies": 1, "deliveryNoteCopies": 1, "packingCopies": 1, "invoicesCopies": 1, "activeB2b": true, "b2bUser": "acmeusr", "ropoCode": "ROPO-2020-CR-001", "ropoExpireDate": "2025-12-31", "productSupplier": false, "manager": { "id": 123, "name": "John Doe", "email": "john.doe@example.com" }, "unitsSold": 12000.5, "unitsSend": 12500, "pendingSend": 200, "billed": 15400.2, "amountDue": 1500, "unpaid": 500, "customerAddresses": [ { … } ], "geographicalLocation": "NATIONAL", "language": { "id": 1, "code": "ES", "description": "Spanish", "isoCode": "EN" }, "isActive": true, "paymentMethod": { "id": 1, "code": 1, "description": "Transferencia bancaria", "document": "Contrato", "firstTerm": 30, "terms": 3, "daysTerms": 30, "remittance": true, "addToCustomerBase": true, "serveFullPrePaid": false, "observations": "Requiere verificación bancaria", "icon": "fa-credit-card", "facturaECode": "01" }, "firstTerm": 30, "terms": 1, "daysTerms": 30, "proximityType": "NEARBY", "discount1": 5, "discount2": 2, "discount3": 1.5, "discount4": 0, "discountPp": 1, "withholding": 0, "noProgressiveDiscounts": false, "paymentDay1": 10, "paymentDay2": 20, "paymentDay3": 30, "weekday": "MONDAY", "account": "ES9820385778983000760236", "swift": "CAIXESBBXXX", "bic": "CAIXESBBXXX", "sepaDate": "2022-06-17", "currency": { "id": 1, "code": "strin", "description": "string", "nomenclature": "strin", "isoCode": "USD", "changeValue": 0, "significantDecimalsDocuments": 0, "intermediateDecimalsDocuments": 0, "decimalsCalculatePrices": 0, "decimalsCalculateCosts": 0 }, "rateCode": { "id": 1, "code": "string", "taxesIncluded": true }, "accountingAccount": { "id": 1, "code": 1000, "description": "Cash account", "cif": "B12345678", "active": true, "color": "#FF5733", "parentCode": 100, "parentDescription": "Assets" }, "salesAccount": { "id": 1, "code": 1000, "description": "Cash account", "cif": "B12345678", "active": true, "color": "#FF5733", "parentCode": 100, "parentDescription": "Assets" }, "bankName": "Santander", "contactPerson": "Juan Pérez", "web": "https://www.acme.es", "modifiedOn": "2024-08-07T12:30:00", "picture": "https://www.acme.es/logo.png", "pictureToken": "xyz-token-241235", "observations": [ { … } ], "files": [ { … } ], "incomeTaxRate": 19, "sameBillingAndShippingAddress": true, "irpfType": "LEASES", "tags": [ "VIP", "EXPORT" ], "administrativeCenterAccountingOffice": "CC AA Madrid", "administrativeCenterManagingBody": "Dirección Territorial", "administrativeCenterProcessingUnit": "P-1236", "administrativeCenterProposingBody": "Oficina Central", "vatOperationType": { "id": 1, "code": "E01", "description": "Intra-community acquisition of goods", "model347": true, "model349": false } }

Request

Update a specific customer.

Path
idinteger(int32)required
Bodyapplication/jsonrequired
codeinteger(int32)

Customer numeric code. Unique per company.

Example: 10001
activityinteger(int32)

Identifier for main activity. See ApiCustomerActivityListReadDto.java for structure.

Example: 5
brandinteger(int32)

Identifier for the associated brand. See ApiBrandListReadDto.java for structure.

Example: 2
vatinteger(int32)

Identifier for VAT type. See ApiCustomerVatTypeListReadDto.java for structure.

Example: 1
initialSeasoninteger(int32)

Identifier for initial season. See ApiSeasonListReadDto.java for structure.

Example: 4
countryinteger(int32)

Country identifier. See ApiCountryListReadDto.java for structure.

Example: 34
stateinteger(int32)

State identifier. See ApiStateListReadDto.java for structure.

Example: 3
cifstring[ 0 .. 20 ] characters

Tax identification code (CIF/NIF).

Example: "B12345678"
namestring[ 0 .. 100 ] charactersrequired

Legal name of the customer.

Example: "Acme S.A."
postalCodestring[ 0 .. 10 ] characters

Postal code.

Example: "03001"
citystring[ 0 .. 100 ] characters

Customer city.

Example: "Alicante"
addressstring[ 0 .. 100 ] characters

Postal address.

Example: "Av. de la Estación, 5"
firstPhoneNumberstring[ 0 .. 20 ] characters

First phone number.

Example: "+34600111222"
secondPhoneNumberstring[ 0 .. 20 ] characters

Second phone number.

Example: "+34600333444"
emailstring[ 0 .. 250 ] characters

Contact email address.

Example: "info@acme.es"
idKeystring(ApiTaxIdentificationCodeEnum)
Enum"NIF""NIF_IVA""PASSPORT""OFFICIAL_IDENTIFICATION_DOCUMENT""TAX_RESIDENCE_CERTIFICATE""OTHER_DOCUMENT_PROBATIONARY""NOT_REGISTERED"
Example: "NIF"
commercialNamestring[ 0 .. 100 ] characters

Commercial name of the customer.

Example: "Acme España"
ownSupplierstring[ 0 .. 20 ] characters

Own supplier code.

Example: "SUPPL001"
isActiveboolean

True if the customer is active.

Example: true
creationDatestring(date)

Date of customer creation. Format: yyyy-MM-dd

Example: "2020-01-01"
inactiveDatestring(date)

Date when customer became inactive. Format: yyyy-MM-dd

Example: "2023-08-07"
invoiceGroupingstring(ApiInvoiceGroupingEnum)
Enum"DELIVERY_NOTES""ADDRESSES"
Example: "DAILY"
isSingleDeliveryNotePerOrderboolean

True if a single delivery note per order is required.

Example: false
showPVPRboolean

True if PVP rates are shown for the customer.

Example: true
evaluateDeliveryNoteboolean

True if delivery notes must be evaluated.

Example: false
servicePriorityinteger(int32)[ 0 .. 100 ]

Priority in services assigned to the customer (0-100).

Example: 1
ordersCopiesinteger(int32)

Number of order copies to print.

Example: 1
deliveryNoteCopiesinteger(int32)

Number of delivery note copies to print.

Example: 1
packingCopiesinteger(int32)

Number of packing list copies to print.

Example: 1
invoicesCopiesinteger(int32)

Number of invoice copies to print.

Example: 1
activeB2bboolean

True if the customer is allowed B2B access.

Example: true
b2bUserstring

B2B access username.

Example: "acmeusr"
ropoCodestring

ROPO inscription code.

Example: "ROPO-2020-CR-001"
ropoExpireDatestring(date)

ROPO expiration date. Format: yyyy-MM-dd

Example: "2025-12-31"
productSupplierboolean

True if the customer is a product supplier.

Example: false
commercialRoutestring[ 0 .. 10 ] characters

Commercial route.

Example: "EAST-01"
managerstring

Manager responsible for the customer (login or id).

Example: "jdoe"
customerAddressesArray of objects(ApiCustomerAddressWriteDto)

List of addresses for the customer. See ApiCustomerAddressWriteDto.java for structure.

geographicalLocationstring(ApiGeographicalLocationEnum)
Enum"CEUTA_MELILLA_CANARIAS""COMMUNITY""NATIONAL""OTHERS"
Example: "EUROPE"
languageinteger(int32)

Identifier for main language. See ApiLanguageListReadDto.java for structure.

Example: 1
paymentMethodinteger(int32)

Identifier for payment method. See ApiPaymentMethodListReadDto.java for structure.

Example: 2
isPaymentMethodRequiredboolean

True if payment method is required.

Example: true
firstTerminteger(int32)>= 0

First payment term in days.

Example: 30
termsinteger(int32)>= 0

Number of payment terms.

Example: 1
daysTermsinteger(int32)>= 0

Days per payment term.

Example: 30
proximityTypestring(ApiProximityTypeEnum)
Enum"NEARBY""PREVIOUS""LATER"
Example: "LOCAL"
discount1number

First discount rate (percentage).

Example: 5
discount2number

Second discount rate (percentage).

Example: 2
discount3number

Third discount rate (percentage).

Example: 1.5
discount4number

Fourth discount rate (percentage).

Example: 0
discountPpnumber

Cash discount rate (percentage).

Example: 1
withholdingnumber

Withholding tax rate (percentage).

Example: 19
paymentDay1integer(int32)

Day of first payment.

Example: 10
paymentDay2integer(int32)

Day of second payment.

Example: 20
paymentDay3integer(int32)

Day of third payment.

Example: 30
weekdaystring(ApiWeekDayEnum)
Enum"MONDAY""TUESDAY""WEDNESDAY""THURSDAY""FRIDAY""SATURDAY""SUNDAY"
Example: "MONDAY"
paymentMethodObservationinteger(int32)

Identifier for payment method observation.

Example: 9
paymentMethodObservationDescriptionstring

Payment method observation description.

Example: "Special payment terms"
accountstring[ 0 .. 50 ] characters

Customer's bank account number.

Example: "ES9820385778983000760236"
swiftstring[ 0 .. 20 ] characters

SWIFT code.

Example: "CAIXESBBXXX"
bicstring[ 0 .. 20 ] characters

BIC code.

Example: "CAIXESBBXXX"
sepaDatestring(date)

Date when SEPA signed. Format: yyyy-MM-dd

Example: "2022-06-17"
currencyinteger(int32)

Identifier for the currency. See ApiCurrencyListReadDto.java for structure.

Example: 1
rateCodeinteger(int32)

Identifier for the rate code. See ApiRateCodeListReadDto.java for structure.

Example: 1
accountingAccountinteger(int32)

Accounting account identifier. See ApiChartAccountListReadDto.java for structure.

Example: 101
salesAccountinteger(int32)

Sales account identifier. See ApiChartAccountListReadDto.java for structure.

Example: 102
webstring

Customer web site.

Example: "https://www.acme.es"
picturestring

Picture or logo for the customer.

Example: "https://www.acme.es/logo.png"
bankNamestring

Bank name for the customer.

Example: "Santander"
contactPersonstring

Contact person for the customer.

Example: "Juan Pérez"
observationsArray of objects(ApiCustomerObservationWriteDto)

Observations for the customer. See ApiCustomerObservationWriteDto.java for structure.

filesArray of objects(ApiCustomerFileWriteDto)

Associated file records for the customer. See ApiCustomerFileWriteDto.java for structure.

incomeTaxRatenumber

Income tax rate applied to this customer (percentage).

Example: 19
sameBillingAndShippingAddressboolean

True if billing and shipping address are the same.

Example: true
irpfTypestring(ApiIRPFTypeEnum)
Enum"LEASES""PROFESIONAL_ACTIVITIES""AGRO"
Example: "GENERAL"
tagsArray of strings

List of customer tags.

Example: ["VIP","EXPORT"]
administrativeCenterAccountingOfficestring

Administration center - accounting office.

Example: "CC AA Madrid"
administrativeCenterManagingBodystring

Administration center - managing body.

Example: "Dirección Territorial"
administrativeCenterProcessingUnitstring

Administration center - processing unit.

Example: "P-1236"
administrativeCenterProposingBodystring

Administration center - proposing body.

Example: "Oficina Central"
vatOperationTypeinteger(int32)

Identifier for the vat operation type. See ApiVatOperationTypeListReadDto.java for structure.

Example: 1
curl -i -X PUT \
  'https://api.prana.software/api/v1/customer/{id}' \
  -H 'Content-Type: application/json' \
  -d '{
    "code": 10001,
    "activity": 5,
    "brand": 2,
    "vat": 1,
    "initialSeason": 4,
    "country": 34,
    "state": 3,
    "cif": "B12345678",
    "name": "Acme S.A.",
    "postalCode": "03001",
    "city": "Alicante",
    "address": "Av. de la Estación, 5",
    "firstPhoneNumber": "+34600111222",
    "secondPhoneNumber": "+34600333444",
    "email": "info@acme.es",
    "idKey": "NIF",
    "commercialName": "Acme España",
    "ownSupplier": "SUPPL001",
    "isActive": true,
    "creationDate": "2020-01-01",
    "inactiveDate": "2023-08-07",
    "invoiceGrouping": "DELIVERY_NOTES",
    "isSingleDeliveryNotePerOrder": false,
    "showPVPR": true,
    "evaluateDeliveryNote": false,
    "servicePriority": 1,
    "ordersCopies": 1,
    "deliveryNoteCopies": 1,
    "packingCopies": 1,
    "invoicesCopies": 1,
    "activeB2b": true,
    "b2bUser": "acmeusr",
    "ropoCode": "ROPO-2020-CR-001",
    "ropoExpireDate": "2025-12-31",
    "productSupplier": false,
    "commercialRoute": "EAST-01",
    "manager": "jdoe",
    "customerAddresses": [
      {
        "id": 5123,
        "customer": 10001,
        "code": 1,
        "name": "Headquarters",
        "address": "Main Street, 22",
        "country": 34,
        "state": 3,
        "representative1": 10,
        "representative1commission": 3,
        "representative1commissionType": "PERCENTAGE",
        "representative2": 11,
        "representative2commission": 2,
        "representative2commissionType": "PERCENTAGE",
        "representative3": 12,
        "representative3commission": 1.5,
        "representative3commissionType": "PERCENTAGE",
        "representative4": 13,
        "representative4commission": 1,
        "representative4commissionType": "PERCENTAGE",
        "representative5": 14,
        "representative5commission": 0.5,
        "representative5commissionType": "PERCENTAGE",
        "city": "Alicante",
        "postalCode": "03001",
        "firstPhoneNumber": "+34965123456",
        "secondPhoneNumber": "+34965111111",
        "buyerEDI": "EDI_BUY_123",
        "warehouseEDI": "EDI_WARE_001",
        "observations": "Main customer delivery address",
        "agency": 5,
        "shippingTerm": 2,
        "isActive": true,
        "defaultAddress": true,
        "email": "direccion@acme.es",
        "noProgressiveDiscounts": false,
        "billingSeries": 101,
        "billingSeriesCorrective": 102,
        "updateAllDelegations": false
      }
    ],
    "geographicalLocation": "NATIONAL",
    "language": 1,
    "paymentMethod": 2,
    "isPaymentMethodRequired": true,
    "firstTerm": 30,
    "terms": 1,
    "daysTerms": 30,
    "proximityType": "NEARBY",
    "discount1": 5,
    "discount2": 2,
    "discount3": 1.5,
    "discount4": 0,
    "discountPp": 1,
    "withholding": 19,
    "paymentDay1": 10,
    "paymentDay2": 20,
    "paymentDay3": 30,
    "weekday": "MONDAY",
    "paymentMethodObservation": 9,
    "paymentMethodObservationDescription": "Special payment terms",
    "account": "ES9820385778983000760236",
    "swift": "CAIXESBBXXX",
    "bic": "CAIXESBBXXX",
    "sepaDate": "2022-06-17",
    "currency": 1,
    "rateCode": 1,
    "accountingAccount": 101,
    "salesAccount": 102,
    "web": "https://www.acme.es",
    "picture": "https://www.acme.es/logo.png",
    "bankName": "Santander",
    "contactPerson": "Juan Pérez",
    "observations": [
      {
        "id": 0,
        "title": "string",
        "description": "string"
      }
    ],
    "files": [
      {
        "id": 0,
        "token": "string",
        "fileName": "string",
        "fileExtension": "string",
        "fileSize": 0
      }
    ],
    "incomeTaxRate": 19,
    "sameBillingAndShippingAddress": true,
    "irpfType": "LEASES",
    "tags": [
      "VIP",
      "EXPORT"
    ],
    "administrativeCenterAccountingOffice": "CC AA Madrid",
    "administrativeCenterManagingBody": "Dirección Territorial",
    "administrativeCenterProcessingUnit": "P-1236",
    "administrativeCenterProposingBody": "Oficina Central",
    "vatOperationType": 1
  }'

Responses

OK

Bodyapplication/json
idinteger(int32)required

Customer unique identifier.

Example: 1201
activityobject(ApiCustomerActivityListReadDto)
brandobject(ApiBrandListReadDto)
vatobject(ApiCustomerVatTypeListReadDto)
initialSeasonobject(ApiSeasonListReadDto)
countryobject(ApiCountryListReadDto)
stateobject(ApiStateListReadDto)
cifstring

Tax identification code (CIF/NIF).

Example: "B12345678"
namestring

Legal name of the customer.

Example: "Acme S.A."
postalCodestring

Postal code.

Example: "03001"
citystring

Customer city.

Example: "Alicante"
firstPhoneNumberstring

First phone number.

Example: "+34600111222"
secondPhoneNumberstring

Second phone number.

Example: "+34600333444"
addressstring

Postal address of the customer.

Example: "Av. de la Estación, 5"
emailstring

Customer email address.

Example: "info@acme.es"
codeinteger(int32)

Customer numeric code. Unique per company.

Example: 10001
idKeystring(ApiTaxIdentificationCodeEnum)
Enum"NIF""NIF_IVA""PASSPORT""OFFICIAL_IDENTIFICATION_DOCUMENT""TAX_RESIDENCE_CERTIFICATE""OTHER_DOCUMENT_PROBATIONARY""NOT_REGISTERED"
Example: "NIF"
commercialNamestring

Commercial name.

Example: "Acme España"
creationDatestring(date)

Date of customer creation. Format: yyyy-MM-dd

Example: "2020-01-01"
inactiveDatestring(date)

Date when customer became inactive. Format: yyyy-MM-dd

Example: "2023-08-07"
ownSupplierstring

Supplier code for own-company suppliers.

Example: "SUPPL001"
invoiceGroupingstring(ApiInvoiceGroupingEnum)
Enum"DELIVERY_NOTES""ADDRESSES"
Example: "DAILY"
isSingleDeliveryNotePerOrderboolean

True if a single delivery note per order is required.

Example: false
showPVPRboolean

True if PVP rates are shown for the customer.

Example: true
evaluateDeliveryNoteboolean

True if delivery notes must be evaluated for this customer.

Example: false
servicePriorityinteger(int32)

Priority for services assigned to the customer.

Example: 1
ordersCopiesinteger(int32)

Number of order copies to print.

Example: 1
deliveryNoteCopiesinteger(int32)

Number of delivery note copies to print.

Example: 1
packingCopiesinteger(int32)

Number of packing list copies to print.

Example: 1
invoicesCopiesinteger(int32)

Number of invoice copies to print.

Example: 1
activeB2bboolean

True if the customer has active B2B access.

Example: true
b2bUserstring

B2B access username.

Example: "acmeusr"
ropoCodestring

ROPO inscription code.

Example: "ROPO-2020-CR-001"
ropoExpireDatestring(date)

ROPO expiration date. Format: yyyy-MM-dd

Example: "2025-12-31"
productSupplierboolean

True if the customer is also a product supplier.

Example: false
managerobject(ApiUsersReadDto)
unitsSoldnumber

Total units sold.

Example: 12000.5
unitsSendnumber

Total units sent.

Example: 12500
pendingSendnumber

Number of units pending to send.

Example: 200
billednumber

Total billed amount.

Example: 15400.2
amountDuenumber

Total outstanding amount due.

Example: 1500
unpaidnumber

Amount of unpaid bills.

Example: 500
customerAddressesArray of objects(ApiCustomerAddressListReadDto)

List of customer addresses. See ApiCustomerAddressListReadDto.java for structure.

geographicalLocationstring(ApiGeographicalLocationEnum)
Enum"CEUTA_MELILLA_CANARIAS""COMMUNITY""NATIONAL""OTHERS"
Example: "EUROPE"
languageobject(ApiLanguageListReadDto)
isActiveboolean

True if the customer is active.

Example: true
paymentMethodobject(ApiPaymentMethodListReadDto)
firstTerminteger(int32)

First payment term (days).

Example: 30
termsinteger(int32)

Number of payment terms.

Example: 1
daysTermsinteger(int32)

Number of days per payment term.

Example: 30
proximityTypestring(ApiProximityTypeEnum)
Enum"NEARBY""PREVIOUS""LATER"
Example: "LOCAL"
discount1number

First discount rate (percentage).

Example: 5
discount2number

Second discount rate (percentage).

Example: 2
discount3number

Third discount rate (percentage).

Example: 1.5
discount4number

Fourth discount rate (percentage).

Example: 0
discountPpnumber

Cash discount rate (percentage).

Example: 1
withholdingnumber

Withholding tax rate (percentage).

Example: 0
noProgressiveDiscountsboolean

No progressive discounts applied.

Example: false
paymentDay1integer(int32)

Day of first payment.

Example: 10
paymentDay2integer(int32)

Day of second payment.

Example: 20
paymentDay3integer(int32)

Day of third payment.

Example: 30
weekdaystring(ApiWeekDayEnum)
Enum"MONDAY""TUESDAY""WEDNESDAY""THURSDAY""FRIDAY""SATURDAY""SUNDAY"
Example: "MONDAY"
accountstring

Customer account number.

Example: "ES9820385778983000760236"
swiftstring

SWIFT code.

Example: "CAIXESBBXXX"
bicstring

BIC code.

Example: "CAIXESBBXXX"
sepaDatestring(date)

Date when SEPA signed. Format: yyyy-MM-dd

Example: "2022-06-17"
currencyobject(ApiCurrencyListReadDto)
rateCodeobject(ApiRateCodeListReadDto)
accountingAccountobject(ApiChartAccountListReadDto)
salesAccountobject(ApiChartAccountListReadDto)
bankNamestring

Name of the customer's bank.

Example: "Santander"
contactPersonstring

Main contact person.

Example: "Juan Pérez"
webstring

Web URL.

Example: "https://www.acme.es"
modifiedOnstring(date-time)

When information was last updated. Format: yyyy-MM-dd'T'HH:mm:ss

Example: "2024-08-07T12:30:00"
picturestring

Picture or logo (URL or base64).

Example: "https://www.acme.es/logo.png"
pictureTokenstring

Authentication token for the picture file.

Example: "xyz-token-241235"
observationsArray of objects(ApiCustomerObservationListReadDto)

List of customer observations. See ApiCustomerObservationListReadDto.java for structure.

filesArray of objects(ApiCustomerFileListReadDto)

List of files associated to the customer. See ApiCustomerFileListReadDto.java for structure.

incomeTaxRatenumber

Percentage of income tax for the customer.

Example: 19
sameBillingAndShippingAddressboolean

True if billing and shipping address are the same.

Example: true
irpfTypestring(ApiIRPFTypeEnum)
Enum"LEASES""PROFESIONAL_ACTIVITIES""AGRO"
Example: "GENERAL"
tagsArray of strings

Tags assigned to the customer.

Example: ["VIP","EXPORT"]
administrativeCenterAccountingOfficestring

Administration center - accounting office.

Example: "CC AA Madrid"
administrativeCenterManagingBodystring

Administration center - managing body.

Example: "Dirección Territorial"
administrativeCenterProcessingUnitstring

Administration center - processing unit.

Example: "P-1236"
administrativeCenterProposingBodystring

Administration center - proposing body.

Example: "Oficina Central"
vatOperationTypeobject(ApiVatOperationTypeListReadDto)
Response
application/json
{ "id": 1201, "activity": { "id": 1, "code": "COM-01", "description": "Wholesale Commerce" }, "brand": { "id": 1, "code": "NIKE" }, "vat": { "id": 1, "code": "GENERAL", "description": "General VAT type" }, "initialSeason": { "id": 1, "code": "string", "description": "string", "isCurrent": true, "startDate": "2019-08-24", "endDate": "2019-08-24" }, "country": { "id": 1, "code": 724, "description": "Spain", "isoCode": "US", "customerVatType": "GENERAL", "geographicalLocation": "NATIONAL" }, "state": { "id": 1, "code": "string", "description": "string", "country": { … }, "isoCode": "string" }, "cif": "B12345678", "name": "Acme S.A.", "postalCode": "03001", "city": "Alicante", "firstPhoneNumber": "+34600111222", "secondPhoneNumber": "+34600333444", "address": "Av. de la Estación, 5", "email": "info@acme.es", "code": 10001, "idKey": "NIF", "commercialName": "Acme España", "creationDate": "2020-01-01", "inactiveDate": "2023-08-07", "ownSupplier": "SUPPL001", "invoiceGrouping": "DELIVERY_NOTES", "isSingleDeliveryNotePerOrder": false, "showPVPR": true, "evaluateDeliveryNote": false, "servicePriority": 1, "ordersCopies": 1, "deliveryNoteCopies": 1, "packingCopies": 1, "invoicesCopies": 1, "activeB2b": true, "b2bUser": "acmeusr", "ropoCode": "ROPO-2020-CR-001", "ropoExpireDate": "2025-12-31", "productSupplier": false, "manager": { "id": 123, "name": "John Doe", "email": "john.doe@example.com" }, "unitsSold": 12000.5, "unitsSend": 12500, "pendingSend": 200, "billed": 15400.2, "amountDue": 1500, "unpaid": 500, "customerAddresses": [ { … } ], "geographicalLocation": "NATIONAL", "language": { "id": 1, "code": "ES", "description": "Spanish", "isoCode": "EN" }, "isActive": true, "paymentMethod": { "id": 1, "code": 1, "description": "Transferencia bancaria", "document": "Contrato", "firstTerm": 30, "terms": 3, "daysTerms": 30, "remittance": true, "addToCustomerBase": true, "serveFullPrePaid": false, "observations": "Requiere verificación bancaria", "icon": "fa-credit-card", "facturaECode": "01" }, "firstTerm": 30, "terms": 1, "daysTerms": 30, "proximityType": "NEARBY", "discount1": 5, "discount2": 2, "discount3": 1.5, "discount4": 0, "discountPp": 1, "withholding": 0, "noProgressiveDiscounts": false, "paymentDay1": 10, "paymentDay2": 20, "paymentDay3": 30, "weekday": "MONDAY", "account": "ES9820385778983000760236", "swift": "CAIXESBBXXX", "bic": "CAIXESBBXXX", "sepaDate": "2022-06-17", "currency": { "id": 1, "code": "strin", "description": "string", "nomenclature": "strin", "isoCode": "USD", "changeValue": 0, "significantDecimalsDocuments": 0, "intermediateDecimalsDocuments": 0, "decimalsCalculatePrices": 0, "decimalsCalculateCosts": 0 }, "rateCode": { "id": 1, "code": "string", "taxesIncluded": true }, "accountingAccount": { "id": 1, "code": 1000, "description": "Cash account", "cif": "B12345678", "active": true, "color": "#FF5733", "parentCode": 100, "parentDescription": "Assets" }, "salesAccount": { "id": 1, "code": 1000, "description": "Cash account", "cif": "B12345678", "active": true, "color": "#FF5733", "parentCode": 100, "parentDescription": "Assets" }, "bankName": "Santander", "contactPerson": "Juan Pérez", "web": "https://www.acme.es", "modifiedOn": "2024-08-07T12:30:00", "picture": "https://www.acme.es/logo.png", "pictureToken": "xyz-token-241235", "observations": [ { … } ], "files": [ { … } ], "incomeTaxRate": 19, "sameBillingAndShippingAddress": true, "irpfType": "LEASES", "tags": [ "VIP", "EXPORT" ], "administrativeCenterAccountingOffice": "CC AA Madrid", "administrativeCenterManagingBody": "Dirección Territorial", "administrativeCenterProcessingUnit": "P-1236", "administrativeCenterProposingBody": "Oficina Central", "vatOperationType": { "id": 1, "code": "E01", "description": "Intra-community acquisition of goods", "model347": true, "model349": false } }

Request

Delete specific customer.

Path
idinteger(int32)required
curl -i -X DELETE \
  'https://api.prana.software/api/v1/customer/{id}'

Responses

OK

Request

Create a new customer.

Bodyapplication/jsonrequired
codeinteger(int32)

Customer numeric code. Unique per company.

Example: 10001
activityinteger(int32)

Identifier for main activity. See ApiCustomerActivityListReadDto.java for structure.

Example: 5
brandinteger(int32)

Identifier for the associated brand. See ApiBrandListReadDto.java for structure.

Example: 2
vatinteger(int32)

Identifier for VAT type. See ApiCustomerVatTypeListReadDto.java for structure.

Example: 1
initialSeasoninteger(int32)

Identifier for initial season. See ApiSeasonListReadDto.java for structure.

Example: 4
countryinteger(int32)

Country identifier. See ApiCountryListReadDto.java for structure.

Example: 34
stateinteger(int32)

State identifier. See ApiStateListReadDto.java for structure.

Example: 3
cifstring[ 0 .. 20 ] characters

Tax identification code (CIF/NIF).

Example: "B12345678"
namestring[ 0 .. 100 ] charactersrequired

Legal name of the customer.

Example: "Acme S.A."
postalCodestring[ 0 .. 10 ] characters

Postal code.

Example: "03001"
citystring[ 0 .. 100 ] characters

Customer city.

Example: "Alicante"
addressstring[ 0 .. 100 ] characters

Postal address.

Example: "Av. de la Estación, 5"
firstPhoneNumberstring[ 0 .. 20 ] characters

First phone number.

Example: "+34600111222"
secondPhoneNumberstring[ 0 .. 20 ] characters

Second phone number.

Example: "+34600333444"
emailstring[ 0 .. 250 ] characters

Contact email address.

Example: "info@acme.es"
idKeystring(ApiTaxIdentificationCodeEnum)
Enum"NIF""NIF_IVA""PASSPORT""OFFICIAL_IDENTIFICATION_DOCUMENT""TAX_RESIDENCE_CERTIFICATE""OTHER_DOCUMENT_PROBATIONARY""NOT_REGISTERED"
Example: "NIF"
commercialNamestring[ 0 .. 100 ] characters

Commercial name of the customer.

Example: "Acme España"
ownSupplierstring[ 0 .. 20 ] characters

Own supplier code.

Example: "SUPPL001"
isActiveboolean

True if the customer is active.

Example: true
creationDatestring(date)

Date of customer creation. Format: yyyy-MM-dd

Example: "2020-01-01"
inactiveDatestring(date)

Date when customer became inactive. Format: yyyy-MM-dd

Example: "2023-08-07"
invoiceGroupingstring(ApiInvoiceGroupingEnum)
Enum"DELIVERY_NOTES""ADDRESSES"
Example: "DAILY"
isSingleDeliveryNotePerOrderboolean

True if a single delivery note per order is required.

Example: false
showPVPRboolean

True if PVP rates are shown for the customer.

Example: true
evaluateDeliveryNoteboolean

True if delivery notes must be evaluated.

Example: false
servicePriorityinteger(int32)[ 0 .. 100 ]

Priority in services assigned to the customer (0-100).

Example: 1
ordersCopiesinteger(int32)

Number of order copies to print.

Example: 1
deliveryNoteCopiesinteger(int32)

Number of delivery note copies to print.

Example: 1
packingCopiesinteger(int32)

Number of packing list copies to print.

Example: 1
invoicesCopiesinteger(int32)

Number of invoice copies to print.

Example: 1
activeB2bboolean

True if the customer is allowed B2B access.

Example: true
b2bUserstring

B2B access username.

Example: "acmeusr"
ropoCodestring

ROPO inscription code.

Example: "ROPO-2020-CR-001"
ropoExpireDatestring(date)

ROPO expiration date. Format: yyyy-MM-dd

Example: "2025-12-31"
productSupplierboolean

True if the customer is a product supplier.

Example: false
commercialRoutestring[ 0 .. 10 ] characters

Commercial route.

Example: "EAST-01"
managerstring

Manager responsible for the customer (login or id).

Example: "jdoe"
customerAddressesArray of objects(ApiCustomerAddressWriteDto)

List of addresses for the customer. See ApiCustomerAddressWriteDto.java for structure.

geographicalLocationstring(ApiGeographicalLocationEnum)
Enum"CEUTA_MELILLA_CANARIAS""COMMUNITY""NATIONAL""OTHERS"
Example: "EUROPE"
languageinteger(int32)

Identifier for main language. See ApiLanguageListReadDto.java for structure.

Example: 1
paymentMethodinteger(int32)

Identifier for payment method. See ApiPaymentMethodListReadDto.java for structure.

Example: 2
isPaymentMethodRequiredboolean

True if payment method is required.

Example: true
firstTerminteger(int32)>= 0

First payment term in days.

Example: 30
termsinteger(int32)>= 0

Number of payment terms.

Example: 1
daysTermsinteger(int32)>= 0

Days per payment term.

Example: 30
proximityTypestring(ApiProximityTypeEnum)
Enum"NEARBY""PREVIOUS""LATER"
Example: "LOCAL"
discount1number

First discount rate (percentage).

Example: 5
discount2number

Second discount rate (percentage).

Example: 2
discount3number

Third discount rate (percentage).

Example: 1.5
discount4number

Fourth discount rate (percentage).

Example: 0
discountPpnumber

Cash discount rate (percentage).

Example: 1
withholdingnumber

Withholding tax rate (percentage).

Example: 19
paymentDay1integer(int32)

Day of first payment.

Example: 10
paymentDay2integer(int32)

Day of second payment.

Example: 20
paymentDay3integer(int32)

Day of third payment.

Example: 30
weekdaystring(ApiWeekDayEnum)
Enum"MONDAY""TUESDAY""WEDNESDAY""THURSDAY""FRIDAY""SATURDAY""SUNDAY"
Example: "MONDAY"
paymentMethodObservationinteger(int32)

Identifier for payment method observation.

Example: 9
paymentMethodObservationDescriptionstring

Payment method observation description.

Example: "Special payment terms"
accountstring[ 0 .. 50 ] characters

Customer's bank account number.

Example: "ES9820385778983000760236"
swiftstring[ 0 .. 20 ] characters

SWIFT code.

Example: "CAIXESBBXXX"
bicstring[ 0 .. 20 ] characters

BIC code.

Example: "CAIXESBBXXX"
sepaDatestring(date)

Date when SEPA signed. Format: yyyy-MM-dd

Example: "2022-06-17"
currencyinteger(int32)

Identifier for the currency. See ApiCurrencyListReadDto.java for structure.

Example: 1
rateCodeinteger(int32)

Identifier for the rate code. See ApiRateCodeListReadDto.java for structure.

Example: 1
accountingAccountinteger(int32)

Accounting account identifier. See ApiChartAccountListReadDto.java for structure.

Example: 101
salesAccountinteger(int32)

Sales account identifier. See ApiChartAccountListReadDto.java for structure.

Example: 102
webstring

Customer web site.

Example: "https://www.acme.es"
picturestring

Picture or logo for the customer.

Example: "https://www.acme.es/logo.png"
bankNamestring

Bank name for the customer.

Example: "Santander"
contactPersonstring

Contact person for the customer.

Example: "Juan Pérez"
observationsArray of objects(ApiCustomerObservationWriteDto)

Observations for the customer. See ApiCustomerObservationWriteDto.java for structure.

filesArray of objects(ApiCustomerFileWriteDto)

Associated file records for the customer. See ApiCustomerFileWriteDto.java for structure.

incomeTaxRatenumber

Income tax rate applied to this customer (percentage).

Example: 19
sameBillingAndShippingAddressboolean

True if billing and shipping address are the same.

Example: true
irpfTypestring(ApiIRPFTypeEnum)
Enum"LEASES""PROFESIONAL_ACTIVITIES""AGRO"
Example: "GENERAL"
tagsArray of strings

List of customer tags.

Example: ["VIP","EXPORT"]
administrativeCenterAccountingOfficestring

Administration center - accounting office.

Example: "CC AA Madrid"
administrativeCenterManagingBodystring

Administration center - managing body.

Example: "Dirección Territorial"
administrativeCenterProcessingUnitstring

Administration center - processing unit.

Example: "P-1236"
administrativeCenterProposingBodystring

Administration center - proposing body.

Example: "Oficina Central"
vatOperationTypeinteger(int32)

Identifier for the vat operation type. See ApiVatOperationTypeListReadDto.java for structure.

Example: 1
curl -i -X POST \
  https://api.prana.software/api/v1/customer \
  -H 'Content-Type: application/json' \
  -d '{
    "code": 10001,
    "activity": 5,
    "brand": 2,
    "vat": 1,
    "initialSeason": 4,
    "country": 34,
    "state": 3,
    "cif": "B12345678",
    "name": "Acme S.A.",
    "postalCode": "03001",
    "city": "Alicante",
    "address": "Av. de la Estación, 5",
    "firstPhoneNumber": "+34600111222",
    "secondPhoneNumber": "+34600333444",
    "email": "info@acme.es",
    "idKey": "NIF",
    "commercialName": "Acme España",
    "ownSupplier": "SUPPL001",
    "isActive": true,
    "creationDate": "2020-01-01",
    "inactiveDate": "2023-08-07",
    "invoiceGrouping": "DELIVERY_NOTES",
    "isSingleDeliveryNotePerOrder": false,
    "showPVPR": true,
    "evaluateDeliveryNote": false,
    "servicePriority": 1,
    "ordersCopies": 1,
    "deliveryNoteCopies": 1,
    "packingCopies": 1,
    "invoicesCopies": 1,
    "activeB2b": true,
    "b2bUser": "acmeusr",
    "ropoCode": "ROPO-2020-CR-001",
    "ropoExpireDate": "2025-12-31",
    "productSupplier": false,
    "commercialRoute": "EAST-01",
    "manager": "jdoe",
    "customerAddresses": [
      {
        "id": 5123,
        "customer": 10001,
        "code": 1,
        "name": "Headquarters",
        "address": "Main Street, 22",
        "country": 34,
        "state": 3,
        "representative1": 10,
        "representative1commission": 3,
        "representative1commissionType": "PERCENTAGE",
        "representative2": 11,
        "representative2commission": 2,
        "representative2commissionType": "PERCENTAGE",
        "representative3": 12,
        "representative3commission": 1.5,
        "representative3commissionType": "PERCENTAGE",
        "representative4": 13,
        "representative4commission": 1,
        "representative4commissionType": "PERCENTAGE",
        "representative5": 14,
        "representative5commission": 0.5,
        "representative5commissionType": "PERCENTAGE",
        "city": "Alicante",
        "postalCode": "03001",
        "firstPhoneNumber": "+34965123456",
        "secondPhoneNumber": "+34965111111",
        "buyerEDI": "EDI_BUY_123",
        "warehouseEDI": "EDI_WARE_001",
        "observations": "Main customer delivery address",
        "agency": 5,
        "shippingTerm": 2,
        "isActive": true,
        "defaultAddress": true,
        "email": "direccion@acme.es",
        "noProgressiveDiscounts": false,
        "billingSeries": 101,
        "billingSeriesCorrective": 102,
        "updateAllDelegations": false
      }
    ],
    "geographicalLocation": "NATIONAL",
    "language": 1,
    "paymentMethod": 2,
    "isPaymentMethodRequired": true,
    "firstTerm": 30,
    "terms": 1,
    "daysTerms": 30,
    "proximityType": "NEARBY",
    "discount1": 5,
    "discount2": 2,
    "discount3": 1.5,
    "discount4": 0,
    "discountPp": 1,
    "withholding": 19,
    "paymentDay1": 10,
    "paymentDay2": 20,
    "paymentDay3": 30,
    "weekday": "MONDAY",
    "paymentMethodObservation": 9,
    "paymentMethodObservationDescription": "Special payment terms",
    "account": "ES9820385778983000760236",
    "swift": "CAIXESBBXXX",
    "bic": "CAIXESBBXXX",
    "sepaDate": "2022-06-17",
    "currency": 1,
    "rateCode": 1,
    "accountingAccount": 101,
    "salesAccount": 102,
    "web": "https://www.acme.es",
    "picture": "https://www.acme.es/logo.png",
    "bankName": "Santander",
    "contactPerson": "Juan Pérez",
    "observations": [
      {
        "id": 0,
        "title": "string",
        "description": "string"
      }
    ],
    "files": [
      {
        "id": 0,
        "token": "string",
        "fileName": "string",
        "fileExtension": "string",
        "fileSize": 0
      }
    ],
    "incomeTaxRate": 19,
    "sameBillingAndShippingAddress": true,
    "irpfType": "LEASES",
    "tags": [
      "VIP",
      "EXPORT"
    ],
    "administrativeCenterAccountingOffice": "CC AA Madrid",
    "administrativeCenterManagingBody": "Dirección Territorial",
    "administrativeCenterProcessingUnit": "P-1236",
    "administrativeCenterProposingBody": "Oficina Central",
    "vatOperationType": 1
  }'

Responses

OK

Bodyapplication/json
idinteger(int32)required

Customer unique identifier.

Example: 1201
activityobject(ApiCustomerActivityListReadDto)
brandobject(ApiBrandListReadDto)
vatobject(ApiCustomerVatTypeListReadDto)
initialSeasonobject(ApiSeasonListReadDto)
countryobject(ApiCountryListReadDto)
stateobject(ApiStateListReadDto)
cifstring

Tax identification code (CIF/NIF).

Example: "B12345678"
namestring

Legal name of the customer.

Example: "Acme S.A."
postalCodestring

Postal code.

Example: "03001"
citystring

Customer city.

Example: "Alicante"
firstPhoneNumberstring

First phone number.

Example: "+34600111222"
secondPhoneNumberstring

Second phone number.

Example: "+34600333444"
addressstring

Postal address of the customer.

Example: "Av. de la Estación, 5"
emailstring

Customer email address.

Example: "info@acme.es"
codeinteger(int32)

Customer numeric code. Unique per company.

Example: 10001
idKeystring(ApiTaxIdentificationCodeEnum)
Enum"NIF""NIF_IVA""PASSPORT""OFFICIAL_IDENTIFICATION_DOCUMENT""TAX_RESIDENCE_CERTIFICATE""OTHER_DOCUMENT_PROBATIONARY""NOT_REGISTERED"
Example: "NIF"
commercialNamestring

Commercial name.

Example: "Acme España"
creationDatestring(date)

Date of customer creation. Format: yyyy-MM-dd

Example: "2020-01-01"
inactiveDatestring(date)

Date when customer became inactive. Format: yyyy-MM-dd

Example: "2023-08-07"
ownSupplierstring

Supplier code for own-company suppliers.

Example: "SUPPL001"
invoiceGroupingstring(ApiInvoiceGroupingEnum)
Enum"DELIVERY_NOTES""ADDRESSES"
Example: "DAILY"
isSingleDeliveryNotePerOrderboolean

True if a single delivery note per order is required.

Example: false
showPVPRboolean

True if PVP rates are shown for the customer.

Example: true
evaluateDeliveryNoteboolean

True if delivery notes must be evaluated for this customer.

Example: false
servicePriorityinteger(int32)

Priority for services assigned to the customer.

Example: 1
ordersCopiesinteger(int32)

Number of order copies to print.

Example: 1
deliveryNoteCopiesinteger(int32)

Number of delivery note copies to print.

Example: 1
packingCopiesinteger(int32)

Number of packing list copies to print.

Example: 1
invoicesCopiesinteger(int32)

Number of invoice copies to print.

Example: 1
activeB2bboolean

True if the customer has active B2B access.

Example: true
b2bUserstring

B2B access username.

Example: "acmeusr"
ropoCodestring

ROPO inscription code.

Example: "ROPO-2020-CR-001"
ropoExpireDatestring(date)

ROPO expiration date. Format: yyyy-MM-dd

Example: "2025-12-31"
productSupplierboolean

True if the customer is also a product supplier.

Example: false
managerobject(ApiUsersReadDto)
unitsSoldnumber

Total units sold.

Example: 12000.5
unitsSendnumber

Total units sent.

Example: 12500
pendingSendnumber

Number of units pending to send.

Example: 200
billednumber

Total billed amount.

Example: 15400.2
amountDuenumber

Total outstanding amount due.

Example: 1500
unpaidnumber

Amount of unpaid bills.

Example: 500
customerAddressesArray of objects(ApiCustomerAddressListReadDto)

List of customer addresses. See ApiCustomerAddressListReadDto.java for structure.

geographicalLocationstring(ApiGeographicalLocationEnum)
Enum"CEUTA_MELILLA_CANARIAS""COMMUNITY""NATIONAL""OTHERS"
Example: "EUROPE"
languageobject(ApiLanguageListReadDto)
isActiveboolean

True if the customer is active.

Example: true
paymentMethodobject(ApiPaymentMethodListReadDto)
firstTerminteger(int32)

First payment term (days).

Example: 30
termsinteger(int32)

Number of payment terms.

Example: 1
daysTermsinteger(int32)

Number of days per payment term.

Example: 30
proximityTypestring(ApiProximityTypeEnum)
Enum"NEARBY""PREVIOUS""LATER"
Example: "LOCAL"
discount1number

First discount rate (percentage).

Example: 5
discount2number

Second discount rate (percentage).

Example: 2
discount3number

Third discount rate (percentage).

Example: 1.5
discount4number

Fourth discount rate (percentage).

Example: 0
discountPpnumber

Cash discount rate (percentage).

Example: 1
withholdingnumber

Withholding tax rate (percentage).

Example: 0
noProgressiveDiscountsboolean

No progressive discounts applied.

Example: false
paymentDay1integer(int32)

Day of first payment.

Example: 10
paymentDay2integer(int32)

Day of second payment.

Example: 20
paymentDay3integer(int32)

Day of third payment.

Example: 30
weekdaystring(ApiWeekDayEnum)
Enum"MONDAY""TUESDAY""WEDNESDAY""THURSDAY""FRIDAY""SATURDAY""SUNDAY"
Example: "MONDAY"
accountstring

Customer account number.

Example: "ES9820385778983000760236"
swiftstring

SWIFT code.

Example: "CAIXESBBXXX"
bicstring

BIC code.

Example: "CAIXESBBXXX"
sepaDatestring(date)

Date when SEPA signed. Format: yyyy-MM-dd

Example: "2022-06-17"
currencyobject(ApiCurrencyListReadDto)
rateCodeobject(ApiRateCodeListReadDto)
accountingAccountobject(ApiChartAccountListReadDto)
salesAccountobject(ApiChartAccountListReadDto)
bankNamestring

Name of the customer's bank.

Example: "Santander"
contactPersonstring

Main contact person.

Example: "Juan Pérez"
webstring

Web URL.

Example: "https://www.acme.es"
modifiedOnstring(date-time)

When information was last updated. Format: yyyy-MM-dd'T'HH:mm:ss

Example: "2024-08-07T12:30:00"
picturestring

Picture or logo (URL or base64).

Example: "https://www.acme.es/logo.png"
pictureTokenstring

Authentication token for the picture file.

Example: "xyz-token-241235"
observationsArray of objects(ApiCustomerObservationListReadDto)

List of customer observations. See ApiCustomerObservationListReadDto.java for structure.

filesArray of objects(ApiCustomerFileListReadDto)

List of files associated to the customer. See ApiCustomerFileListReadDto.java for structure.

incomeTaxRatenumber

Percentage of income tax for the customer.

Example: 19
sameBillingAndShippingAddressboolean

True if billing and shipping address are the same.

Example: true
irpfTypestring(ApiIRPFTypeEnum)
Enum"LEASES""PROFESIONAL_ACTIVITIES""AGRO"
Example: "GENERAL"
tagsArray of strings

Tags assigned to the customer.

Example: ["VIP","EXPORT"]
administrativeCenterAccountingOfficestring

Administration center - accounting office.

Example: "CC AA Madrid"
administrativeCenterManagingBodystring

Administration center - managing body.

Example: "Dirección Territorial"
administrativeCenterProcessingUnitstring

Administration center - processing unit.

Example: "P-1236"
administrativeCenterProposingBodystring

Administration center - proposing body.

Example: "Oficina Central"
vatOperationTypeobject(ApiVatOperationTypeListReadDto)
Response
application/json
{ "id": 1201, "activity": { "id": 1, "code": "COM-01", "description": "Wholesale Commerce" }, "brand": { "id": 1, "code": "NIKE" }, "vat": { "id": 1, "code": "GENERAL", "description": "General VAT type" }, "initialSeason": { "id": 1, "code": "string", "description": "string", "isCurrent": true, "startDate": "2019-08-24", "endDate": "2019-08-24" }, "country": { "id": 1, "code": 724, "description": "Spain", "isoCode": "US", "customerVatType": "GENERAL", "geographicalLocation": "NATIONAL" }, "state": { "id": 1, "code": "string", "description": "string", "country": { … }, "isoCode": "string" }, "cif": "B12345678", "name": "Acme S.A.", "postalCode": "03001", "city": "Alicante", "firstPhoneNumber": "+34600111222", "secondPhoneNumber": "+34600333444", "address": "Av. de la Estación, 5", "email": "info@acme.es", "code": 10001, "idKey": "NIF", "commercialName": "Acme España", "creationDate": "2020-01-01", "inactiveDate": "2023-08-07", "ownSupplier": "SUPPL001", "invoiceGrouping": "DELIVERY_NOTES", "isSingleDeliveryNotePerOrder": false, "showPVPR": true, "evaluateDeliveryNote": false, "servicePriority": 1, "ordersCopies": 1, "deliveryNoteCopies": 1, "packingCopies": 1, "invoicesCopies": 1, "activeB2b": true, "b2bUser": "acmeusr", "ropoCode": "ROPO-2020-CR-001", "ropoExpireDate": "2025-12-31", "productSupplier": false, "manager": { "id": 123, "name": "John Doe", "email": "john.doe@example.com" }, "unitsSold": 12000.5, "unitsSend": 12500, "pendingSend": 200, "billed": 15400.2, "amountDue": 1500, "unpaid": 500, "customerAddresses": [ { … } ], "geographicalLocation": "NATIONAL", "language": { "id": 1, "code": "ES", "description": "Spanish", "isoCode": "EN" }, "isActive": true, "paymentMethod": { "id": 1, "code": 1, "description": "Transferencia bancaria", "document": "Contrato", "firstTerm": 30, "terms": 3, "daysTerms": 30, "remittance": true, "addToCustomerBase": true, "serveFullPrePaid": false, "observations": "Requiere verificación bancaria", "icon": "fa-credit-card", "facturaECode": "01" }, "firstTerm": 30, "terms": 1, "daysTerms": 30, "proximityType": "NEARBY", "discount1": 5, "discount2": 2, "discount3": 1.5, "discount4": 0, "discountPp": 1, "withholding": 0, "noProgressiveDiscounts": false, "paymentDay1": 10, "paymentDay2": 20, "paymentDay3": 30, "weekday": "MONDAY", "account": "ES9820385778983000760236", "swift": "CAIXESBBXXX", "bic": "CAIXESBBXXX", "sepaDate": "2022-06-17", "currency": { "id": 1, "code": "strin", "description": "string", "nomenclature": "strin", "isoCode": "USD", "changeValue": 0, "significantDecimalsDocuments": 0, "intermediateDecimalsDocuments": 0, "decimalsCalculatePrices": 0, "decimalsCalculateCosts": 0 }, "rateCode": { "id": 1, "code": "string", "taxesIncluded": true }, "accountingAccount": { "id": 1, "code": 1000, "description": "Cash account", "cif": "B12345678", "active": true, "color": "#FF5733", "parentCode": 100, "parentDescription": "Assets" }, "salesAccount": { "id": 1, "code": 1000, "description": "Cash account", "cif": "B12345678", "active": true, "color": "#FF5733", "parentCode": 100, "parentDescription": "Assets" }, "bankName": "Santander", "contactPerson": "Juan Pérez", "web": "https://www.acme.es", "modifiedOn": "2024-08-07T12:30:00", "picture": "https://www.acme.es/logo.png", "pictureToken": "xyz-token-241235", "observations": [ { … } ], "files": [ { … } ], "incomeTaxRate": 19, "sameBillingAndShippingAddress": true, "irpfType": "LEASES", "tags": [ "VIP", "EXPORT" ], "administrativeCenterAccountingOffice": "CC AA Madrid", "administrativeCenterManagingBody": "Dirección Territorial", "administrativeCenterProcessingUnit": "P-1236", "administrativeCenterProposingBody": "Oficina Central", "vatOperationType": { "id": 1, "code": "E01", "description": "Intra-community acquisition of goods", "model347": true, "model349": false } }

Request

Get all your customers.

Bodyapplication/jsonrequired
conditionobject(ApiCondition)
sortCriteriaArray of objects(ApiSortDto)

List of sorting criteria to apply

pageNumberinteger(int32)required

Page number to retrieve (0-based)

Example: 0
pageSizeinteger(int32)required

Number of items per page

Example: 20
curl -i -X POST \
  https://api.prana.software/api/v1/customer/search \
  -H 'Content-Type: application/json' \
  -d '{
    "condition": {
      "field": "name",
      "value": "Example Value",
      "type": "EQ",
      "endValue": 100,
      "innerConditions": [
        {}
      ],
      "conditionType": "AND",
      "empty": false,
      "compareFields": false
    },
    "sortCriteria": [
      {
        "sortField": "name",
        "sortDirection": "ASC"
      }
    ],
    "pageNumber": 0,
    "pageSize": 20
  }'

Responses

OK

Bodyapplication/json
dataArray of objects(ApiCustomerListReadDto)required

List of data items for the current page

data[].​idinteger(int32)required

Customer unique identifier.

Example: 10001
data[].​codeinteger(int32)required

Customer numeric code.

Example: 10001
data[].​namestring

Legal name of the customer.

Example: "Acme S.A."
data[].​commercialNamestringrequired

Commercial name of the customer.

Example: "Acme España"
data[].​cifstring

Tax identification code (CIF/NIF).

Example: "B12345678"
data[].​addressstring

Postal address of the customer.

Example: "Av. de la Estación, 5"
data[].​firstPhoneNumberstring

First phone number.

Example: "+34600111222"
data[].​secondPhoneNumberstring

Second phone number.

Example: "+34600333444"
data[].​postalCodestring

Postal code.

Example: "03001"
data[].​countryDescriptionstringrequired

Country name or description.

Example: "Spain"
data[].​stateDescriptionstring

State name or description.

Example: "Alicante"
data[].​emailstring

Email address.

Example: "info@acme.es"
data[].​citystringrequired

City name.

Example: "Alicante"
data[].​activitystring

Activity description.

Example: "Wholesale Trade"
data[].​brandstring

Brand description.

Example: "Acme"
data[].​brandIdinteger(int32)

Brand identifier.

Example: 100
data[].​creationDatestring(date)required

Date of customer creation. Format: yyyy-MM-dd

Example: "2020-01-01"
data[].​isActiveboolean

True if the customer is active.

Example: true
data[].​inactiveDatestring(date)

Date when customer became inactive. Format: yyyy-MM-dd

Example: "2023-08-07"
data[].​paymentMethodIdinteger(int32)

Payment method identifier.

Example: 1
data[].​paymentMethodstring

Payment method description.

Example: "Bank Transfer"
data[].​paymentMethodServeFullPrePaidboolean

If true, payment method requires all amount prepaid.

Example: false
data[].​rateCodestring

Rate code used for customer.

Example: "RATE-001"
data[].​accountstring

Bank account number.

Example: "ES9820385778983000760236"
data[].​vatDescriptionstring

Tax regime description (VAT).

Example: "General"
data[].​discount1number

First discount rate (percent).

Example: 5
data[].​currencyCodestring

Currency code.

Example: "EUR"
data[].​currencyDescriptionstring

Currency description.

Example: "Euro"
data[].​modifiedOnstring(date-time)

When information was last updated. Format: yyyy-MM-dd'T'HH:mm:ss

Example: "2024-08-07T12:30:00"
data[].​bankNamestring

Name of the customer's bank.

Example: "Santander"
data[].​contactPersonstring

Main contact person.

Example: "Juan Pérez"
data[].​webstring

Web URL.

Example: "https://www.acme.es"
data[].​picturestring

Picture or logo (URL or base64).

Example: "https://www.acme.es/logo.png"
data[].​pictureTokenstring

Authentication token for the picture file.

Example: "xyz-token-241235"
data[].​tagsArray of strings

List of assigned customer tags.

Example: ["VIP","EXPORT"]
pageinteger(int32)required

Current page number (0-based)

Example: 0
totalinteger(int32)required

Total number of items across all pages

Example: 150
pagesinteger(int64)required

Last page number (0-based)

Example: 14
sizeinteger(int32)required

Number of items per page

Example: 10
Response
application/json
{ "data": [ { … } ], "page": 0, "total": 150, "pages": 14, "size": 10 }

Warehouse Movement

Manage your warehouse movements

Operations
Operations
Operations

DeliveryNote

Manage your DeliveryNotes

Operations

Warehouse Accumulate

Manage your warehouse accumulates

Operations
Operations
Operations
Operations
Operations

Purchase Invoice

Manage your Purchase Invoices

Operations
Operations

Payment Method

Manage your Payment Methods

Operations
Operations

Recurring Billing Templates

Manage your recurring billing templates

Operations
Operations

Billing Series

Manage your Billing Series

Operations
Operations
Operations

PurchaseDeliveryNote

Manage your PurchaseDeliveryNotes

Operations